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

╰+攻爆jí腚メ 2023-09-23 23:11 127阅读 0赞

一、总导图

f2737d9dc96046ed91a3c98a3b89a81c.png

二、IIS

<—-IIS/6.0—->

  1. 查看路径

8f056f1d438947f0a7c71c487b66caeb.png

  1. 登陆站点。

d2e4de99bc5c4a7483f448f22236d6b0.png

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

5d71bd177bce46e19eb5d1687d76bfd8.png

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

360a1060551f493aa5f9e75ab87f8bb8.png

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

11f170441bf84ac3b3125b72c2c8915c.png

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

8e79914d80f94f7d90a5af5954ca8cc0.png

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

abfda7f7a16b4ef0ba929b6819a44763.png

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

853026d5a1f648c195c33310cc48ebe3.png

  1. 解释:
  2. 文件夹
  3. 正常:image/qq.jpg
  4. 执行:image.asp/qq.jpg
  5. qq.jpg就会被当做asp解析执行
  6. 文件
  7. 正常:image.jpg
  8. 执行:image.asp;jpgimage.asp;image.jpg
  9. image.jpg 就会被当做asp解析执行
  10. asp可以换做php 如果换了php 那么就当php执行
  1. 如果在数据包里“/”后添加一个“1”,那么文件名内就也会多出一个“1”。

d215a7b4e3a24ec8a71f2986fa5c1cc8.png

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

b044853211bd4599b89e54fede547c80.png

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

bdfdf93e017a45c6afc74171715741b8.png

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

1af8074e77354354ba595439a65c03f0.png

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

3a32c016244348f5b4699c39883ec0ae.png

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

3d50d162746d47d19c777351be1663c4.png

  1. 返回正常内容如下。

508005ebbd9247b0946faf5058b7d791.png

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

d7c1451c590d441c8d454669cc202797.png

<—-IIS/7.5—->

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

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

6bdcb21ebb584727b719fc93ddd875d6.png

  1. 查看ip。

914ea5b0511046b98369e7a63f4abc68.png

  1. 查看端口。

a2951e6e395442f2a2f9f77d302aa75f.png

  1. 进入靶场网页。

c259ea6a247e42d59bc52683af78aa07.png

  1. 查看版本

f8f97d44930d4f1f850907cb82b94e75.png

  1. 制作一个图片马。

4fbf3041af554522941501d1ff2b2a69.png

946809c55e4e473aadd4d1eeb609e22a.png

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

a183441d5b0b4fdfb25e3937dac6239a.png

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

0ae97565fd4f49f9bdd7584c9c8f0990.png

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

三、Nginx

<—-解析漏洞—->

  1. 启动靶场环境

410a075256994ff9b2707719bdd3ef09.png

  1. 查看ip地址。

74993e3c3cb84b51be968bfdf94cbede.png

  1. 查看端口信息。

7c82ae93ef954b8db1b81b0c7fc4bc92.png

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

aa69e52ff24e4c5ca00c5fa9236b8ae2.png

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

3596b055c44e4190865647b6d9e4763f.png

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

a2b7d11e5f2c485f96296b4b0171ba62.png

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

afd507dc39e949149cfcdb46b06cc801.png

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

4594df209ca4444f83a565f575900916.png

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

9fe13e4c726a46e9afdfaaac89f8130b.png

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

39425f71f05f49e092612d9e89caced2.png

<—-换行解析—->

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搭建漏洞测试靶场“)。

26c549692d4b4a3eab169044ff6827e5.png

281b617823f3446abc6294f8d373cfd9.png

  1. 查看ip。

914ea5b0511046b98369e7a63f4abc68.png

  1. 查看端口。

21e66190af18424898001217a3fcdf90.png

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

c4fa6d16e4f5481186326993c34643ec.png

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

1b4b72d6d9bd4ab798c126f83958d751.png

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

55fb645185574475b84d5456f929a5c2.png

四、Apache

<—-低版本—->

  1. 启动服务。

030f32b98d9b45a6b155ac2e08516715.png

  1. 查看端口号。

35cb85e1bdea4fdc8f24298c3f12f7e1.png

8b8b7a144a604209a9660d34299da05b.png

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

1a19600caa734040bd73b9eb33d1c7b2.png

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

f5973bc4f3f44e6bb2be07435fefc017.png

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

9e8c3907cf5c407f90f5eaf255b9e706.png

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

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

a9bb037f566b45dca40e30d4a1d3ffd7.png

  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版本中存在一个解析漏洞。

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

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

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

658e30e5d78f46c0bfbda9c1b790883d.png

6702e077ae1543d6a64c5dccab696f2b.png

  1. 查看ip。

914ea5b0511046b98369e7a63f4abc68.png

  1. 查看端口。

21e66190af18424898001217a3fcdf90.png

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

3c7379e623074adea8f5c4f3617dca8b.png

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

7d98bfc43a444a55a2a930dce0fbeb80.png

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

928f112f78764af499338fdf4511c220.png

发表评论

表情:
评论列表 (有 0 条评论,127人围观)

还没有评论,来说两句吧...

相关阅读

    相关 文件漏洞详解

    0x01 上传漏洞定义 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传”本身没有

    相关 文件漏洞概述

    文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力,这种攻击方式是最为直接和有效的,有时候几乎没有什么技术门槛。 文件上传后导致的常

    相关 预防文件漏洞

    预防文件上传漏洞 1.为了防范用户上传恶意的可执行文件和脚本,以及将文件上传服务器当做免费的文件存储服务器使用,需要对上传的文件类型进行白名单(非黑名单,这点非常重要)校