Nginx错误配置解析漏洞
条件(不受php、nginx的版本限制)
(1)、php解析配置文件php.ini中参数cgi.fix_pathinfo设置为1
(2)、php-fpmConf中security.limit_extension参数为空或为错误的解析后缀
(3)、nginx网页具有文件上传点
配置参数介绍:
Cgi.fix_pathinfo为php-fpm对错误路径进行修复
Security.limit_extension为php-fpm支持的后缀代码解析
实验原理
例如:“1.jpg/a.php“,a.php为不存在的文件,1.jpg为上传的恶意图片马。Fastcgi匹配后缀为.php的规则后将该URL请求发送给php-fpm,php-fpm对这个URL进行路径解析,由于a.php文件不存在,触发配置cgi.fix_pathinfo的路径修复及检测php-fpm.conf中security.limit_extension支持的解析后缀,如果前级的文件存在且后缀在security.limit_extension中则php-fpm在尝试下一级文件当作php文件解析,触发图片马,导致任意代码执行漏洞
注意事项:图片马的大小要尽可能小,用以出现语法错误等问题
实验搭建
(1)下载Vulhub容器环境 服务器IP:192.168.190.132
(2)上传图片马
(3)”/var/www/html/”通常为nginx的网页根路径,获取图片位置之后 访问构造的特定url:
192.168.190.132/upload/bb00f7fb8c94c2029b81bcf87915d7a0.jpg/1.php触发php代码
(4)通过蚁剑连接获取webshell