存储型XSS
存储型XSS又被称之为持久性XSS,攻击的脚本可以持久
存储型XSS实例
这里我们借助DVWA靶场来看看存储型XSS是怎么形成的。
首先我们先来看看最简单的low级别
首先我想在Name这一栏构造我们的XSS攻击代码,但是发现输入长度有做限制,一般这种都是在前端限制input标签里面的max-length属性来达到控制用户输入长度限制,所以我们可以对max-length进行修改。
初始值为10
我修改为10000,发现就可以进行输入了。但是输入发现下方消息不能为空
其实师傅们完全可以用户名随意填,然后在下方Message构造我们的XSS攻击代码,当然修改max-length也是一个思路,在Message不存在XSS攻击,但是Name处存在XSS却又存在输入限制,这个时候修改max-length就是一个思路了。
这样就触发了我们的XSS
而且该XSS为存储型XSS,在其他用户登陆这个网站的时候,该用户也会触发该XSS攻击,倘若我这里不是触发一个随风的弹框,而是盗取cookie,那么是不是每个登陆这个网站的用户的cookie都会被盗取,可想而知存储型XSS的危害有多大。
那么知道该XSS的危害了,那么我们在从源代码的角度来分析分析此存储型XSS是怎么形成的。
我们来看看它的源代码
这里接收了两个参数,一个message、一个name,且接收的参数都用了一个trim()函数进行过滤。trim()函数的作用是移除字符串两侧的空白字符或其他预定义字符。
这里接收了两个参数,一个message、一个name,且接收的参数都用了一个trim()函数进行过滤。trim()函数的作用是移除字符串两侧的空白字符或其他预定义字符。
然后下方代码还做了一些常见的代码过滤。之前的渗透文章里面有写过,这里就不一一细说了,这里就把这些函数的作用给师傅们
stripslashes(string):删除字符串中的反斜杠。
mysql_real_escape_string(string,connection):对字符串中的特殊符号(x00,n,r,,‘,“,x1a)进行转义。
然后最重要的一步,用户输入的代码会被存储到数据库中,这里也是形成存储型XSS的关键。还记得我们文章开始时写的存储型XSS的形成原因就是攻击的脚本可以持久
更多技术文章请关注公众号:猪猪谈安全
师傅们点赞、转发、在看就是最大的支持
原文始发于微信公众号(猪猪谈安全):渗透测试之XSS(三)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论