主页 > 网络知识 > 绕过Disable Functions来搞事情(3)

绕过Disable Functions来搞事情(3)

outpath 参数:保存命令执行输出结果的文件路径(如 /tmp/xx),便于在页面上显示,另外该参数,你应注意 web 是否有读写权限、web 是否可跨目录访问、文件将被覆盖和删除等几点。

sopath 参数:指定劫持系统函数的共享对象的绝对路径(如 /var/www/bypass_disablefunc_x64.so),另外关于该参数,你应注意 web 是否可跨目录访问到它。

首先,想办法将 bypass_disablefunc.php 和 bypass_disablefunc_x64.so 传到目标有权限的目录中:

 

image-20210209162040530

 

然后将bypass_disablefunc.php包含进来并使用GET方法提供所需的三个参数:

/?Ginkgo=aW5jbHVkZSgiL3Zhci90bXAvYnlwYXNzX2Rpc2FibGVmdW5jLnBocCIpOw==&cmd=id&outpath=/tmp/outfile123&sopath=/var/tmp/bypass_disablefunc_x64.so # include("/var/tmp/bypass_disablefunc.php");

如下所示,成功执行命令:

 

image-20210209162809307

 

成功执行/readflag并得到了flag:

 

image-20210209162549537

 

在蚁剑中有该绕过disable_functions的插件:

 

image-20210209195810387

 

我们选择LD_PRELOAD模式并点击开始按钮,成功后蚁剑会在/var/www/html目录里上传一个.antproxy.php文件。我们创建副本, 并将连接的 URL shell 脚本名字改为.antproxy.php获得一个新的shell,在这个新shell里面就可以成功执行命令了。

利用 ShellShock(CVE-2014-6271)

使用条件:

Linux 操作系统

putenv()、mail()或error_log()函数可用

目标系统的/bin/bash存在CVE-2014-6271漏洞

/bin/sh -> /bin/bashsh 默认的 shell 是 bash

原理简述

该方法利用的bash中的一个老漏洞,即Bash Shellshock 破壳漏洞(CVE-2014-6271)。

该漏洞的原因是Bash使用的环境变量是通过函数名称来调用的,导致该漏洞出现是以(){开头定义的环境变量在命令 ENV 中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。而其核心的原因在于在输入的过滤中没有严格限制边界,也没有做出合法化的参数判断。

一般函数体内的代码不会被执行,但破壳漏洞会错误的将"{}"花括号外的命令进行执行。PHP里的某些函数(例如:mail()、imap_mail())能调用popen或其他能够派生bash子进程的函数,可以通过这些函数来触发破壳漏洞(CVE-2014-6271)执行命令。

利用方法

我们利用 AntSword-Labs项目来搭建环境:

git clone https://github.com/AntSwordProject/AntSword-Labs.git cd AntSword-Labs/bypass_disable_functions/2 docker-compose up -d

搭建完成后访问 :18080,尝试使用system函数执行命令失败:

 

image-20210210122306497

 

查看phpinfo发现设置了disable_functions:

 

image-20210210122411149

 

我们使用蚁剑拿下shell:

 

image-20210210122215376

 

AntSword 虚拟终端中已经集成了对 ShellShock 的利用,直接在虚拟终端执行命令即可绕过disable_functions:

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!