官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
一、多后缀解析漏洞
形成原因:配置apache时,对于apache配置不熟练,配置命令不清楚,在配置PHP文件处理程序时,配置命令存在问题:位于漏洞环境目录的 conf/docker-php.conf里的配置命令(AddHandler application/x-httpd-php .php),该命令会将后缀中只要含有.php的文件都会被处理程序解析,这导致攻击者可通过多后缀绕过文件上传限制以.php结尾的机制,并使之被处理程序执行。
漏洞复现:
在漏洞环境目录处运行容器
[[email protected] apache_parsing_vulnerability]# docker-compose up -d
浏览器访问你的ip地址,可以看到一个文件上传网页
打开文本编辑器,构造一句话木马
<?php
eval(@$_POST['axx']);
?>
文件命名为xxx.php.jpg
将该文件上传,出现该页面
打开蚁剑,点击添加数据
按图中提示填写
测试连接,连接成功
点击添加,可看到我们可以查看该漏洞所在环境的目录中的文件
漏洞复现完成。
两种漏洞防御方法:
1,拒绝所有文件名含有.php的文件
<FilesMatch "\.php\.">
require all denied
</FilesMatch>
2,处理程序只处理以.php结尾的文件
首先将上一个防御方案的配置命令注释掉
再注释掉原本的处理出现配置命令AddHandler application/x-httpd-php .php
<FilesMatch ".+.php$">
SetHandler application/x-httpd-php
</FilesMatch>
以上就是apache多后缀解析漏洞的知识的
二、换行解析漏洞
形成原因:
1)查看网页的html代码可知,该文件上传时采用黑名单形式过滤掉php文件
2)配置文件中设置正则表达式 对象的 Multiline 属性
$ 还会匹配到字符串结尾的换行符,这导致在上传时,添加一个换行符也能被正常解析,并且能够绕过系统的黑名单检测。
漏洞复现
在漏洞目录运行容器
[[email protected] CVE-2017-15715]# docker-compose up -d
构造一个简单的php文件
<?php
phpinfo();
?>
打开bp,抓取上传数据包;
选择16进制,找到文件上传后的名字,默认为evil.php寻找l6进制编码 70 68 70分别对应 php,在第二个70的后方右键,点击 insert byte... ,然后插入换行符0a 点击确定进行插入。
放行数据包,访问上传的文件,成功看到phpinfo信息。要加%0A
漏洞防御方法:
1,升级apache版本
2,对上传的文件进行重命名
3,上传时采用白名单的验证方式