0%

XSS

XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上是一种注入攻击,
是指黑客在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在浏览器执行,如获取用户cookie信息。
需要强调的是,XSS不仅仅限制于JavaScript,还包括flash等其他脚本语言。
根据恶意代码是否存储在服务器中,XSS可分为存储型XSS和反射型XSS。

反射型

low

查看源码,代码直接引用name参数,且没有进行过滤和检查,存在明显的XSS漏洞。
输入<script>alert(/xss/)</script>

medium

多了str_replace函数,把<script>过滤了。
方法一:双写绕过。<sc<script>ript>alert(/xss/)</script>
方法二:大小写绕过。<SCRipt>alert(/xss/)</script>

high

preg_replace() 函数用于正则表达式的搜索和替换,这使得双写绕过、大小写混淆绕过(正则表达式中i表示不区分大小写)不再有效。
正则表达式很强大。
<img src=1 onerror=alert(/xss/)>
所以这里无法通过<script>标签注入XSS代码了,但是可以找img,body等标签的事件或者iframe等标签的src注入恶意的js代码。

存储型

low

了解三个函数,有的是之前见过了,再复习一下。
trim(string,charlist)
函数移除字符串两侧的空白字符或其他预定字符,如\t,\n,\x0B\r以及空格,可选参数charlist支持添加额外需要删除的字符。
mysql_real_escape_string(string,connection)函数会对字符串中的特殊符号(\x00,\n,\r,’,”,\x1a)进行转义。
stripslashes(string)
函数删除字符串中的反斜杠。
这里没有对XXS方面进行过滤和检查,且存储在数据库中,明显存在存储型XSS漏洞。
方法一:尝试在name端输入,有字数限制,可以抓包修改上传。
方法二:直接在message内输入<script>alert(/xss/)</script>
name里随便输入就行,成功出现弹窗。

medium

这里无法对message参数进行注入,message被htmlspecialchars函数进行编码,但是name只简单进行了<script>过滤,所以
抓包后,双写,或者大小写绕过。

high

message还是被htmlspecialchars函数进行编码,name使用了正则表达式替换,所以可以同上面反射型方法一样,对其他标签注入。
抓包下来,该name参数为<img src=1 onerror=alert(1)>即可。

dom

low

查看源码,php内没任何东西,可以进行任意操作。直接在payload上输入<script>alert(/xss/)</script>,成功弹窗。

medium

Stripos() 函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)。
检测default值中是否有 <script ,如果有的话,则将 default=English ,就不能双写,大小写绕过了。
这里通过img标签注入,输入<img src=1 onerror=alert(1)>,没有出现弹窗,检查页面源代码。

语句被插入了value,但没有插入到option,所以img标签没有起到作用,这里闭合option标签。
原理:<option value=' " + lang + " '> " + decodeURI(lang) + " </option>
所以构造,></option><img src=1 οnerrοr=alert(1)>

只有>插入,option标签的值,因为闭合了option标签,所以img标签并没有插入。
继续构造闭合select标签,这样img标签就是独立的一条语句。></option></select><img src=1 onerror=alert(1)>
成功插入页面。
![](xss.md/5.png
补充:
基本payload:
<script>alert(1)</script>
<body onload=alert(1)>
<input onclick=alert(1)>
<img src=1 onerror=alert(1)>
<a href=javascript:alert(1)>

XSSER的使用步骤

网站:https://xss.pt/xss.php?do=login
1、登陆,创建项目,默认,keep。
2、拷贝代码,植入。
3、在XSSER框架等待受害者的Cookie。
4、攻击者浏览项目,便可获得受害者会话信息。
5、把Cookie值全部填入Cookie-editor或者使用burp修改Cookie值。

-------------本文结束感谢您的阅读-------------

欢迎关注我的其它发布渠道