文件上传 | xxx文件上传 – xxx
菜单

文件上传

三月 26, 2024 - FreeBuf

产生原因

网站存在文件上传功能,但是开发者没有对上传的文件做严格的验证,导致用户可以传入木马文件,破坏或控制服务器。

如何挖掘

只要有文件上传的接口,就可能存在文件上传的风险。

常见的文件上传接口:上传头像、上传附件、上传简历、上传照片、文本编辑器的附件上传、实名认证的实名信息上传。。。。。。

怎么尝试

  • 上传webshell– 但是各个语言之间不通用–>可以控制目标网站
  • 上传脏文件–html(<h1>1234<h1>)、大文件(20GB的文件)–>不能控制目标文件

如何利用

1、常见的一句话webshell:(传入的参数一定要是函数)

  php一句话木马:

  <?php @eval($_POST[value]);?>

  asp一句话木马:

  <%eval request(“value”)%>

   aspx一句话木马:

    <%@ Page Language=”Jscript”%><%eval(Request.Item[“value”])%>

2、webshell管理器:

   HackBar

  中国蚁剑(明文)

  冰蝎(动态加密)

  哥斯拉(动态加密)

3、如何判断当前权限:

  Windows:whoami /all

   Linux:id

4、绕过js检测(修改js或使用burp suite)

5、绕过MIME限制

6、黑名单

(1)大小写绕过

(2).  绕过

(3)空格绕过::$data绕过

(4)配合apache解析

(5)配合.htaccess文件

          文件如下:

                       <FilesMatch “as.png”>

                        setHandler application/x-httpd-php

                        </FilesMatch>

7、白名单 需要配合其他漏洞

(1)00截断:php=5.2 magic_quotes_gpc=Off 抓的包中必须有路径

          注:1)%00必须写在路径之后,如:../upload/666.php%00

                   2)如果是post请求,在请求体中的路径后输入%00,然后URL-decode

(2)中间件解析漏洞

(3)php文件包含漏洞

如何防御

  • 黑名单
  • 白名单
  • 隐藏上传路径
  • 服务器隔离
  • 上传目录禁止执行
  • 压缩(二次渲染)
  • 读取文件信息(像素、长度、宽度、高度、灰度值)
  • 限制文件大小和数量

如何找到自己上传的webshell

(1)图片的路径 (2)返回包中查找 (3)依据其他文件上传的路径猜测

思考:现在还存在文件上传漏洞吗?

答:广泛存在

不一样的点:python(django、flask、fastapi)、golang(gin)、java(spring boot)类似的语言编写的服务端不会存在webshell文件上传漏洞,只能上传脏文件。

UPLOAD-LABS

(1)修改js前端验证绕过

文件上传文件上传文件上传

(2)修改为.png后缀用burpsuite开启拦截器抓包并将后缀改为.php,然后放行

文件上传

(3)修改后缀名为.php3

文件上传

(4)先上传.htaccess文件,在上传.png的图片马

(5)由于会删除文件后缀的”.”和””,所以可以写为”. .”,后面的” .“用于服务端过滤,第一个”.”用于绕过黑名单

文件上传

(6)由于没有过滤空格,所以可以写成”. 1.”利用数字1便于找到文件,否则加空格后服务端重命名之后就找不到了

文件上传

(7)由于没有过滤”.”,所以可以在文件后缀后加一个”.”

文件上传

(8)由于没有过滤”::DATA”所以可以在文件后缀名之后加上”::DATA”

文件上传

(9)和第5关一样

(10)利用双写绕过,如:”pphphp”

文件上传

(11)利用%00截断的方法进行绕过

(12)为post请求的上传,可以在请求体中利用0X00截断的方法进行绕过

(13)利用图片马进行绕过

文件上传

(16)    1.想办法找到上传的正常的图片,查看未渲染的地方,将代码插入到其中。

     2.上传之后会检查图片,利用持续上传检查的时间差进行攻击。

(17)和16关一样,也是利用时间查,不一样的是要写一个可以创建php文件的php木马,通过持续上传的时间差木马短暂停留在服务器上并执行创建php文件的命令,创建的php文件不会被删除,便留下了后门。

文件上传

(18)上传一个可以创建php的shell的php木马,通过bp抓包,将文件名的后缀名后加上”.7z”,然后访问文件,就会创建php的shell。

(19)这一关是利用pathinfo()函数提取最后一个点后面的后缀名,然后返回给代码进行对比,如果最后一个点后面没有后缀名,就会返回空值,便可以绕过黑名单。所以上传一个jpg格式的php木马(因为这一关会自动更改文件名,所以可以上传jpg格式的马,然后再抓包更改上传后的文件名),然后抓包,系统默认的上传后的文件名改为php并在后面加上”/.”(加”.”是为了保留php/,将空白后缀名返回给代码,最后系统会保留”.php”文件,并将”/”去掉,最后存为”.php”文件)

文件上传

(20)利用图片马和文件包含进行绕过

# 渗透测试
文件上传

文件上传 已在FreeBuf发表 0 篇文章
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022

Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51