无需sendmail:巧用LD_PRELOAD突破disable_functions

摘要:千辛万苦拿到的 webshell 居然无法执行系统命令,怀疑服务端 disable_functions
禁用了命令执行函数,通过环境变量 LD_PRELOAD 劫持系统函数,却又发现目标根本没安装 sendmail,无法执行命令的
webshell 是无意义的,看我如何突破!
|
半月前逛“已黑网站列表”时复审一小电商网站,“列表”中并未告知漏洞详情,简单浏览了下功能,只有注册、登录、下单、支付等几个而已。登录接口中,找到个
RCE(远程代码执行,非远程命令执行)漏洞:

在这里插入图片描述
顺势写入菜刀马后连接:
在这里插入图片描述
习惯上,getshell 后我会先了解下该系统配置,虚拟终端中执行 cat /proc/meminfo 但执行报错:
在这里插入图片描述
怀疑有 WAF 拦劫了待执行的命令,尝试了空字符串、路径扩展、自定义变量平时常用的几种绕命令执行限制的手法,结果都失败:
在这里插入图片描述
无命令执行功能的 webshell 是无意义的,得突破!

通常来说,导致 webshell 不能执行命令的原因大概有三类:一是 php.ini 中用 disable_functions 指示器禁用了 system()、exec() 等等这类命令执行的相关函数;二是 web 进程运行在 rbash 这类受限 shell 环境中;三是 WAF 拦劫。若是一则无法执行任何命令,若是二、三则可以执行少量命令。从当前现象来看,很可能由 disable_functions 所致。为验证,我利用前面的 RCE 漏洞执行 phpinfo(),确认的确如此:
在这里插入图片描述
有四种绕过 disable_functions 的手法:第一种,攻击后端组件,寻找存在命令注入的、web 应用常用的后端组件,如,ImageMagick 的魔图漏洞、bash 的破壳漏洞;第二种,寻找未禁用的漏网函数,常见的执行命令的函数有 system()、exec()、shell_exec()、passthru(),偏僻的 popen()、proc_open()、pcntl_exec(),逐一尝试,或许有漏网之鱼;第三种,mod_cgi 模式,尝试修改 .htaccess,调整请求访问路由,绕过 php.ini 中的任何限制;第四种,利用环境变量 LD_PRELOAD 劫持系统函数,让外部程序加载恶意 *.so,达到执行系统命令的效果。

尝试第一种时,我用 phpinfo() 查看 ImageMagick 版本为 v6.9.4-10:
在这里插入图片描述
用 searchsploit(exploit

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值