Apache(总联想到武直那个)是最常见,使用人数最多的一款web服务器软件。跨平台,多扩展,开源,用过的人都说好
Apache的漏洞主要集中在解析漏洞这一块
1.未知扩展名解析漏洞
Apache的一个有名的解析特性:一个文件可以有多个以点分隔的后缀,当最右侧后缀无法识别的时候,继续向左识别,知道识别到认识的合法后缀才进行解析
很好理解不截图了 我上传了一个名字叫lcx.php.qqq 的文件,当此特性存在的时候,一看.qqq不认识,继续解析,.php我认识,解析成php文件了。访问也是同理,比如访问phpinfo.php.qqq可成功显示phpinfo
那么哪些后缀Apache不认识?
不在mime.types当中的都不认识 (Multipurpose Internet Mail Extensions)
到安装Apache的目录下找这个文件
里面有一堆
但是这里有一个问题
当PHP与Apache的结合方式为fastcgi时,测试结果如图,不存在此解析漏洞
而PHP与Apache的结合方式为module时是存在此解析漏洞的
除了结合方式,此漏洞存在与否还与默认Apache解析方式有关,没有认识的后缀就会按照默认方式解析
这点要注意
所以可利用的点emmm......
防御的话,修改Apache配置文件 httpd.conf 禁止PHP文件的访问权限,或者改上传的文件名
2.AddHandler解析漏洞
在httpd.conf中
AddType application/x-httpd-php .jpg (.jpg可以换成.txt什么的 将扩展名为.jpg的文件按PHP执行)
或者
AddHandler php5-script .php (只要文件名中包含.php就会按照PHP执行)
防御:修改Apache配置文件 httpd.conf 禁止PHP文件的访问权限
要么
伪静态试试,把有什么php的文件重写吧
如图是开启了rewrite功能
新建.htaccess文件,语法网上找吧
3.CVE2017-15715
2.4.0~2.4.29版本的Apache受灾
熟悉正则的老哥都知道,$匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n'换行或 '\r'回车(要匹配 $ 字符本身,请使用 \$)
于是,在解析PHP时,例如1.php\x0a将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略
例: 上传一个文件1.php ,用burp抓包, 找到上传的文件名后面加个什么东西,比如加个.变成 1.php. ,再send to repeater ,把新加的. 位置的hex十六进制编码处改成0a,再传上去
之后访问 /1.php%0A ( %0A为换行的URL编码)即可按照PHP执行此文件
只要用正则来匹配后缀进行php解析的Apache就可能存在这个问题
也算是新时代的Apache解析漏洞,对应老版的本文第1点
防御 :避免使用这些版本的Apache,或者前面那些思路还可以利用
随便转载,请标明作者出处