“文件上传”配合中间件“解析漏洞”

该文详细介绍了IIS6.0和7.5、Nginx以及低版本Apache的解析漏洞,包括如何触发和利用这些漏洞进行文件上传后的代码执行。通过举例和步骤展示了如何通过文件名解析漏洞,使得非标准后缀的文件被当作脚本执行,从而可能导致安全风险。
摘要由CSDN通过智能技术生成

一、总导图

二、IIS

<---IIS/6.0--->

  1. 查看路径

  1. 登陆站点。

  1. 输入下面的站点后回车。

  1. 访问后会自动跳转到以下站点,并且要求输入账号以及密码。

  1. 登陆后台后可以看到下面页面。

  1. 登陆后台后再次访问下面站点,此时网站就不会跳转了。

  1. 选择文件进行上传后抓包可以看到其版本是“IIS/6.0”

  1. 根据文章最开始的思维导图可知其存在以下漏洞。

解释:

文件夹
正常:image/qq.jpg
执行:image.asp/qq.jpg   
qq.jpg就会被当做asp解析执行

文件
正常:image.jpg
执行:image.asp;jpg或image.asp;image.jpg 
image.jpg 就会被当做asp解析执行

asp可以换做php 如果换了php 那么就当php执行
  1. 如果在数据包里“/”后添加一个“1”,那么文件名内就也会多出一个“1”。

  1. 如果在数据包里“/”后添加一个“1a”,那么文件名内就也会多出一个“1a”。

  1. 如果在数据包里“/”后添加一个“x.asp;.”,那么文件名内就也会多出一个“x.asp;.”。

  1. 此时就满足触发了下面的规则,代码就会被当作asp执行。

  1. 放包后访问文件地址后返回了以下错误信息,因为我们刚刚上传的图片是随便选择的,里面并没有加入恶意代码。

  1. 如果正常执行,不当作asp执行的话,网页就会返回正常内容。

  1. 返回正常内容如下。

  1. 在服务端可以看到刚刚上传上去的文件显示的均为图片格式,但是画绿色框出的文件就触发了解析楼哦对那个。

<---IIS/7.5--->

  1. 这个漏洞和Nginx非常相似。

  1. 启动靶场环境(这里使用“Vulhub搭建漏洞测试靶场“)。

  1. 查看ip。

  1. 查看端口。

  1. 进入靶场网页。

  1. 查看版本

  1. 制作一个图片马。

  1. 将图片上传后,得到了图片的路径信息。

  1. 访问图片路径,路径后面加上“/.php”。

  1. 可以看到图片马内的php语句被成功执行了。

三、Nginx

<---解析漏洞--->

  1. 启动靶场环境

  1. 查看ip地址。

  1. 查看端口信息。

  1. 访问网址(因为默认就是80端口,所以就没写端口号)。

  1. 查看其中间件及版本是“nginx/1.17.8”。

  1. 随便上传一个文件,可以得到路径信息。

  1. 访问图片路径,可以正常访问,可以确定上传成功了。

  1. 在网址后面随便添加以“.php”结尾的内容,即可触发解析漏洞,返回了以下错误信息,因为我们刚刚上传的图片是随便选择的,里面并没有加入恶意代码。

  1. 创建一个图片一句话后门代码。

  1. 同样的方法上传访问后可以发现图片内的恶意代码被成功执行了。

<---换行解析--->

Nginx文件名逻辑漏洞(CVE-2013-4547)

  1. 漏洞说明

2013年底,nginx再次爆出漏洞(CVE-2013-4547),此漏洞可导致目录跨越及代码执行,主要原因是nginx因为00截断错误地解析了请求的 URI ,将获取到用户请求的文件名解析为对应的脚本程序,导致出现权限绕过、代码执行等连带影响,从而实现getshell的过程。

  1. 影响版本

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

  1. 启动靶场环境(这里使用“Vulhub搭建漏洞测试靶场“)。

  1. 查看ip。

  1. 查看端口。

  1. 访问网页后查看版本,发现是nginx/1.4.2,在漏洞影响范围内。

  1. 上传一个“1.gif ”,注意后面的空格,抓包。

  1. 将Hex部分如下内容进行修改,访问http://your-ip:8080/uploadfiles/1.gif[0x20][0x00].php,即可发现PHP已被解析。

四、Apache

<---低版本--->

  1. 启动服务。

  1. 查看端口号。

  1. 访问站点,发现有两个文件。

  1. 打开第一个(phpinfo.php)。

  1. 打开第二个(phpinfo.php.xxx)。

  1. 可以看到两个不同的后缀名执行的都是php代码。

  1. 打开“.xxx”后缀的文件可以发现其内部代码为php代码。

  1. 因此可以知道“.php.xxx”后缀名的文件是当作php文件解析的,这就是Apache的解析漏洞,即如果后缀名不识别就向上解析

解释:
x.php.xxx.yyy

识别最后的yyy,
识别不认识,
向前解析,
直到识别,
xxx也不认识,
最后识别到的是php。
利用场景:
如果对方中间件apache属于低版本,
我们可以利用文件上传,
上传一个不识别的文件后缀,
利用解析漏洞规则成功解析文件来使文件中的后门代码被执行。

<---换行解析--->

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

  1. Apache在2.4.0-2.4.29版本中存在一个解析漏洞。

  1. 程序在解析PHP时,如果文件名最后有一个换行符“x0A”,apache依然会将其当成php解析,但是在上传文件时可以成功的绕过黑名单。

  1. 如果上传文件的php程序是设置的白名单,那么这个漏洞将无法利用。

  1. 启动靶场环境(这里使用“Vulhub搭建漏洞测试靶场“)。

  1. 查看ip。

  1. 查看端口。

  1. 访问网页后上传一个名为“1.php”的文件,发现被拦截了。

  1. 在“1.php”后面插入一个“\x0A“(注意:不能是\x0D\x0A,只能是一个\x0A),发现不再被拦截了。

  1. 访问刚才上传的“/1.php%0a”,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ranzi.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值