一、apache换行解析漏洞(apache版本在2.4.0~2.4.29)
1.原理
该程序是采用黑名单的形式,如果文件后缀名不在名单内即可上传,所以 a.php\x0A
不在黑名单列表中,可以上传。但是在fpm-php中x0A
是换行符,所以apache会直接忽略,将其当成php来执行。
2.漏洞复现
(1)创建一个1.php的文件内容如下
<?php phpinfo(); ?>
(2)在浏览器打开http:192.168.191.129:8080
(3)上传我们刚才的1.php文件
(4)打开抓包工具burpsuit抓取数据包
(5)修改我们的文件名,在1.php后面加一个%0a换行符
(6)上传
(7)在次抓包,修改请求参数为get /1.php%0a
3.防御
在上传文件的时候采用白名单的限制,或者升级apache的版本
二、apache多后缀解析漏洞
1.原理
运维人员在配置http的默认配置文件的时候,开启了AddHandler application/x-httpd-php .php,虽然限制住了php文件,但是我们可以添加后缀.jpg,只要我们的后缀含有一个php文件就可以解析,没必要是最后一个后缀。
2.漏洞复现
(1)访问http:// 192.168.191.129:80
(2)上传一个1.php文件内容如下
<?php phpinfo(); ?>
(3)上传
(4)上传上述的文件,我们发现无法进行上传,我们修改我们的后缀名为.jpg,再次上传文件
(5)上传文件成功,访问http://192.168.191.129/uploadfiles/1.php.jpg
3.防御
运维人员在运维配置的时候,尽量不要开启AddHandler application/x-httpd-php .php,这是由于我们的运维人员错误配置导致的。
三、apache SSI远程命令执行漏洞
1.原理
我们上传php文件的时候,我们的服务器拒绝上传,但是 apache在配置文件的http.conf的时候开启了SSI(服务器端包含)服务,允许我们的html页面上传shtml文件,而我们的cgi是前端的一个脚本,我们利用他的语法执行任意的命令。
2.漏洞的复现
(1)创建一个以shtml结尾的文件1.shtml,内容如下
<!--#exec cmd="id" -->
(2)访问我们的网页,http://192.168.191.129:8080/upload.php,上传一个php文件
(3)我们发现上传失败,我们重新上传1.shtml
(4)抓包,上传
(5)修改请求参数get /1.shtml
3.防御
运维人员在配置我们http.conf文件的时候尽量不要去开启我们的SSI服务
四、