XSS 渗透思路笔记
了解XSS首先要了解HTML里面的元素:共有5种元素:空元素、原始文本元素、 RCDATA元素、外来元素以及常规元素。
空元素
area、base、br、col、 command、 embed、hr、img、 input、keygen、ink、meta、 param、 source、tack、wtbr
原始文本元素
script、stye
RCDATA元素
textarea、tte
外来元素
来自 MathML命名空间和SvG命名空间的元素。
常规元素
其他HTML允许的元素都称为常规元素。
常用JS事件
on Click()
on Error()
on Focus()
on Copy()
on Mousewheel()
on MouseOver()
弹窗函数:aert、 prompt、 confirm
html中使用 script标签调用弹窗函数构造弹窗语句示例:<script>alert("xss")</script>
XSS漏洞的本质是一种注入,是一种静态脚本代码的注入。
那么大体挖掘思路就显而易见了:寻找可控点参数)->尝试注入
跨站脚本出现场景分析
1:输出内容在标签内
普通标签如<pre>内
<pre>[----用户输入----]</pre>
<html> <head></head> <body> <pre> <svg onload="alert(1)"></svg> </pre> </body> </html>
RCDATA标签如< textarea>内
需要先闭合Textarea标签,然后再新建标签触发XSS
<html> <head></head> <body> <textarea></textarea> <svg onload="alert(1)"></svg> </body> </html>
输出内容在标签属性中
输出在普通标签的value属性中
相关案例 <input type='text' value='[---用户输入---]'> 测试方法 1.闭合单双引号(" , ')(属性),然后定义一个新的事件,在件里执行对应的 Payload进行触发。例如上面样例,利用 方法如下 <input type="text” value=" onclick="alert(1)"> (" onclick="alert(1)为输入) 通过闭合vaue属性的双引号后。新定义了 onclick事件,只需要点击该标签即可触发 2.闭合单双引号("、')(属性)后直接闭合标签, 然后自行新建标签进行触发,例如上面样例,利用方法如下: < input type="text” value=""><svg/onload=alert(1)>"> ("><svg/onload=alert(1)>为输入) 通过闭合vaue属性的双引号后,然后再写入>闭合了前面的nput标签,然后新建了svg标签操作进行触发。
输出在src/href属性中(考虑使用协议)利用协议(常用的JavaScript协议,data协议)
<iframe src="javaScript:alert(1)"></iframe> (javaScript:alert(1)为输入)
输出内容在script标签中:尝试闭合原js语句进行触发
输出内容在Content-type为text/javascript的响应包中尝试闭合原js语句进行触发;
输出内容在CSS代码中:IE浏览器支持CSS中的 expression,利用类似此表达式可以执行XSS。(IE678下通用):
<span style="color:1;x:expression(alert(/xss/));"></span>