影响范围
httpd 2.4.0~2.4.29
复现环境
vulhub/httpd/CVE-2017-15715
docker-compose
漏洞原理
在apache2的配置文件:
/etc/apache2/conf-available/docker-php.conf
中,php的文件匹配以正则形式表达
".php$"的正则匹配模式意味着以.php结尾的文件名会被解析为php
但是对于字符串来说"结尾"有可能以换行作为结束
如图所示,.php与.php\n均可匹配上
因此在文件上传时将php后添加\n即可
\n的ascii为10,转换为16进制为0A,构造.php[0A]16即可完成攻击
漏洞复现
在vulhub的CVE-2017-15715下
shell
docker-compose build
docker-compose up -d
访问ip:8080即可进入页面
选择php一句话木马进行上传,并使用burp抓包
在文件名后敲一个空格,之后双击空格在右侧的十六进制处填写0A进行应用
访问8080/test.php%0A即可执行payload
修复意见
虽然源码中已经在后端做了检查,但仍应先过滤文件名的一些特殊字符再做检查