栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

php disable

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

php disable

文章目录
  • 1. 利用 LD_PRELOAD 环境变量
    • 1.1 蚁剑LD_PRELOAD插件的工作流程
    • 1.2 bypass原理
  • 参考文章

1. 利用 LD_PRELOAD 环境变量 1.1 蚁剑LD_PRELOAD插件的工作流程
  1. 与旧webshell通信上传.so文件
    上传的.so文件功能是启动了一个php的web服务,这个web服务没有使用php.ini,启动命令为:php -n -S 127.0.0.1:61477 -t /var/www/html

  2. 与旧webshell通信设置环境变量
    putenv(“LD_PRELOAD=/tmp/.41830ant_x64.so”)

  3. 利用php中的函数开启外部进程,间接加载了.so文件。
    .so文件会在其他端口上再开启一个php进程,只不过不会使用php.ini文件。
    如下函数可以满足要求:
    mail()、imap_mail()、mb_send_mail()和error_log()函数等。

  4. 我们通过.antproxy.php让老的webshell访问我们新创建的php服务,进而达到绕过函数限制的目的

1.2 bypass原理

上传的.so文件执行了启动了一个php web服务的操作,这个web服务没有使用含有disable_function的php.ini,从而bypass diable_function。

攻击细节如下:

  1. 攻击者连接心的.antproxy.php执行命令
  2. 这时候攻击者访问.antproxy.php来执行命令,实际是.antproxy.php代替我们向那个新的php web服务上的webshell进行请求,这时候的http请求中host的值就是服务器ip,不过端口改成了新的php进程所运行的端口,在上面这个.so文件中就是61477。因为挂载目录跟原来的php服务所挂在的网站目录是一样的,所以访问在61477端口上的新的php web服务上我们之前上传的webshell。因为同一个webshell被两个php进程挂载。
  3. webshell会将返回值返回给.antproxy.php,然后.antproxy.php将执行结果反馈给攻击者。

流量方向如下:
攻击者<----->.antproxy.php<----->61477端口php web服务上的webshell<----->使用没有配置php.ini的php web服务执行命令


我们通过.antproxy.php让老的webshell访问我们新创建的其他端口上的php服务,进而达到绕过函数限制的目的

此时主机上开启了两个php进程,一个是配置了php.ini也就是有disable function,另一个是没有的。我们最初创建的老的webshell被挂在那个开启了php.ini的进程上了,所以这个时候我们如果返回老的webshell还是不能执行命令。

而新的webshell可以执行命令,因为他是同过让老的webshell文件访问.so文件创建的新的php web进程来实现的,而新的php web服务是没有配置php.ini的,不会有disable function。

参考文章

绕过Disable Functions来搞事情
bypass_disablefunc_via_LD_PRELOAD

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号