文件上传漏洞通关,从0-1

作者:凌度

仅供学习,切勿用于非法途径

1. 工具推荐:

1. webshell 连接工具:

1. GitHub - BeichenDream/Godzilla: 哥斯拉

哥斯拉

2. GitHub - rebeyond/Behinder: “冰蝎”动态二进制加密网站管理客户端

冰蝎

2. 推荐插件 hackbar:

2. 文件上传简介:

1. 上传漏洞:

基于网站本身的上传功能处,对用户上传过滤不严谨所导致的上传功能处对用户上传过滤不严谨,导致用户可以上传恶意文件

2. 上传的木马文件:

也称之为 web-shell,它的权限比网站更高一点,其权限介于网站后台和服务器之间

当服务器对 web 的某一个目录设置了一定的权限的时候,(例如只有管理员才能实现跳出当前目录进行可读可写操作)如果你是普通用户,就只能在当前目录了,但是如果你通过上传

webshell ,你就可以能够继承服务器的权限,从而实现普通用户越权

通过 url?a=phpinfo(); 即可实现该脚本的调用(实质就是执行 php 代码)

3. 文件上传检测方式:

一般一个文件上传过程中的检测方式有:

1. 客户端 javasript 检测(检测文件扩展名):

2. 服务端 MIME 类型检测(检测 content-type 内容)

3. 服务端目录路径检测(检测跟 path 参数相关的内容)

4. 服务端文件扩展名检测(检测跟文件 extension 相关的内容)

5. 服务端文件内容检测(检测内容是否合法是否含有恶意代码)等

3. 文件上传绕过:

1. 前端文件上传的绕过:

在我们的 uploads 靶场中,我们打开开发者模式之后,可以看到 onsubmit ,也就是当该表单进行提交的时候会触发该函数,查看函数的名字,return checkFilereturn checkFile()

不难看出,该函数的作用就是去检查客户端上传的用户名是否合法的一个东西,此时如果后端是没有进行校验的话,那么我们可以直接把里面的函数替换为空即可

1. 前端绕过最简单方式:

我们直接打开浏览器开发者模式,然后禁用 javascrip,这个小技巧博主经常用到的一个地方就是当复制网上的内容不能复制的时候,我们就能够使用这个小技巧去绕过

2. burp 绕过:

然后通过 burp 进行抓包,我们将原本 jpg 格式的文件修改成一个 php 文件类型,然后我们点击

forward 即可实现上传

接下来我们就可以用各种连接工具去连接这个 php 文件了,例如:哥斯拉

2. 文件类型的绕过:

1. 常见文件类型

类型/子类型  扩展名
application/envoy   evy
application/fractals    fif
application/futuresplash    spl
application/hta hta
application/internet-property-stream    acx
application/mac-binhex40    hqx
application/msword  doc
application/msword  dot
application/octet-stream    *
application/octet-stream    bin
application/octet-stream    class
application/octet-stream    dms
application/octet-stream    exe
application/octet-stream    lha
application/octet-stream    lzh
application/oda oda
application/olescript   axs
application/pdf pdf
application/pics-rules  prf
application/pkcs10  p10
application/pkix-crl    crl
application/postscript  ai
application/postscript  eps
application/postscript  ps
application/rtf rtf
application/set-payment-initiation  setpay
application/set-registration-initiation setreg
application/vnd.ms-excel    xla
application/vnd.ms-excel    xlc
application/vnd.ms-excel    xlm
application/vnd.ms-excel    xls
application/vnd.ms-excel    xlt
application/vnd.ms-excel    xlw
application/vnd.ms-outlook  msg
application/vnd.ms-pkicertstore sst
application/vnd.ms-pkiseccat    cat
application/vnd.ms-pkistl   stl
application/vnd.ms-powerpoint   pot
application/vnd.ms-powerpoint   pps
application/vnd.ms-powerpoint   ppt
application/vnd.ms-project  mpp
application/vnd.ms-works    wcm
application/vnd.ms-works    wdb
application/vnd.ms-works    wks
application/vnd.ms-works    wps
application/winhlp  hlp
application/x-bcpio bcpio
application/x-cdf   cdf
application/x-compress  z
application/x-compressed    tgz
application/x-cpio  cpio
application/x-csh   csh
application/x-director  dcr
application/x-director  dir
application/x-director  dxr
application/x-dvi   dvi
application/x-gtar  gtar
application/x-gzip  gz
application/x-hdf   hdf
application/x-internet-signup   ins
application/x-internet-signup   isp
application/x-iphone    iii
application/x-javascript    js
application/x-latex latex
application/x-msaccess  mdb
application/x-mscardfile    crd
application/x-msclip    clp
application/x-msdownload    dll
application/x-msmediaview   m13
application/x-msmediaview   m14
application/x-msmediaview   mvb
application/x-msmetafile    wmf
application/x-msmoney   mny
application/x-mspublisher   pub
application/x-msschedule    scd
application/x-msterminal    trm
application/x-mswrite   wri
application/x-netcdf    cdf
application/x-netcdf    nc
application/x-perfmon   pma
application/x-perfmon   pmc
application/x-perfmon   pml
application/x-perfmon   pmr
application/x-perfmon   pmw
application/x-pkcs12    p12
application/x-pkcs12    pfx
application/x-pkcs7-certificates    p7b
application/x-pkcs7-certificates    spc
application/x-pkcs7-certreqresp p7r
application/x-pkcs7-mime    p7c
application/x-pkcs7-mime    p7m
application/x-pkcs7-signature   p7s
application/x-sh    sh
application/x-shar  shar
application/x-shockwave-flash   swf
application/x-stuffit   sit
application/x-sv4cpio   sv4cpio
application/x-sv4crc    sv4crc
application/x-tar   tar
application/x-tcl   tcl
application/x-tex   tex
application/x-texinfo   texi
application/x-texinfo   texinfo
application/x-troff roff
application/x-troff t
application/x-troff tr
application/x-troff-man man
application/x-troff-me  me
application/x-troff-ms  ms
application/x-ustar ustar
application/x-wais-source   src
application/x-x509-ca-cert  cer
application/x-x509-ca-cert  crt
application/x-x509-ca-cert  der
application/ynd.ms-pkipko   pko
application/zip zip
audio/basic au
audio/basic snd
audio/mid   mid
audio/mid   rmi
audio/mpeg  mp3
audio/x-aiff    aif
audio/x-aiff    aifc
audio/x-aiff    aiff
audio/x-mpegurl m3u
audio/x-pn-realaudio    ra
audio/x-pn-realaudio    ram
audio/x-wav wav
image/bmp   bmp
image/cis-cod   cod
image/gif   gif
image/ief   ief
image/jpeg  jpe
image/jpeg  jpeg
image/jpeg  jpg
image/pipeg jfif
image/svg+xml   svg
image/tiff  tif
image/tiff  tiff
image/x-cmu-raster  ras
image/x-cmx cmx
image/x-icon    ico
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap    pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
message/rfc822  mht
message/rfc822  mhtml
message/rfc822  nws
text/css    css
text/h323   323
text/html   htm
text/html   html
text/html   stm
text/iuls   uls
text/plain  bas
text/plain  c
text/plain  h
text/plain  txt
text/richtext   rtx
text/scriptlet  sct
text/tab-separated-values   tsv
text/webviewhtml    htt
text/x-component    htc
text/x-setext   etx
text/x-vcard    vcf
video/mpeg  mp2
video/mpeg  mpa
video/mpeg  mpe
video/mpeg  mpeg
video/mpeg  mpg
video/mpeg  mpv2
video/quicktime mov
video/quicktime qt
video/x-la-asf  lsf
video/x-la-asf  lsx
video/x-ms-asf  asf
video/x-ms-asf  asr
video/x-ms-asf  asx
video/x-msvideo avi
video/x-sgi-movie   movie
x-world/x-vrml  flr
x-world/x-vrml  vrml
x-world/x-vrml  wrl
x-world/x-vrml  wrz
x-world/x-vrml  xaf
x-world/x-vrml  xof

2. MIME 文件类型绕过:

然后进入 burp ,我们可以对 content-Type 进行修改

3. 文件头的绕过:

文件的内容开头是有一个特征文件头的,修改文件头的头部格式可以进行绕过

例如:下面是一个名为 1.png 文件内容的格式

1. 图片马制作:

那么我们该如何制作一个具有图片类型特征的图片马呢,当然我们不局限于图片马的制作,我们使用图片马可以绕过文件头的校验

首先我们介绍 windows 中 copy 的两个参数:/a 表示输出 ascii 文本文件,/b 表示二进制文件输出

copy /b 1.png +1.php 2.png
或者
copy 1.png/b+1.php/a 2.png

接下来我们查看该图片,并用记事本查看其文件内容

大功告成,此时当你想使用 php 一句话木马功能的时候,你只需要把它的后缀名 png 修改为 php 即可

4. 文件后缀的绕过:

1. 黑名单:(对常见脚本语言的后缀进行黑名单限制)

1. 后缀大小写绕过:

在对后缀的判断中,如果只是对字符串进行单一的判断是否为限制文件,那么可采用后缀名大小写进行绕过

例如上传:1.PHp

2. 空格绕过:

如果黑名单没有对后缀名进行去空处理,可以通过后缀名加空格进行绕过

例如上传:1.php 空格

3. 点绕过:

如果黑名单没有对后缀名进行处理,利用 windows 系统的文件名特性,会自动去掉后缀名最后的,通过在文件名后加 . 进行绕过

例如上传:1.php. 实际上上传后的文件会变成 1.php

4. $DATA 绕过:

如果黑名单没有对后缀名进行去 $DATA 处理,利用 Windows 下 NTFS 文件系统的一个特性,可以在后缀名后加 $DATA,绕过对黑名单的检测

例如上传:1.php::$DATA 实际上上传后的文件会变成 1.php

下满是通过 burp 将 原本 1.png 修改为 1.php::$DATA,从而实现绕过

5. 配合 Apache 解析漏洞:

Apache 解析漏洞有一个特点,解析文件时是从右往左判断,如果为不可识别解析在往左判断,如

aa.php.owf.rar 文件,apache 不可识别解析,owf 和 rar 这两种后缀,会解析成 .php 文件

6. 通过 .htaccess 文件:

7. 双写绕过:

有的时候,如果我们上传的文件后缀名是黑名单列表里面的话,它可能会被将这个文件的后缀进行去掉,例如我上传 1.php 它可能会变成 1. 或者 1

那么此时我们可以利用这个特点,上传 1.pphphp 文件,将中间的 php 过滤掉之后,就成为了

1.php 文件了,从而实现文件的上传

2. 白名单:

白名单策略:文件扩展名不在白名单中为不合法

服务器判断文件类型是从后往前判断,而对文件解析是从前往后解析,因此我们可以利用

00 截断的方式进行绕过,包括 %00 截断与 %x00 截断

1. %00 截断:

%00 和 %20 进行 url 编码为如下:

%00 为空;%20 为空格

url 发送服务器后被服务器解码,这时还没有传到验证函数,也就是说验证函数里面收到的不是

%00 字符,而是 %00 解码后的内容,即解码成了 0x00

在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束(表示空),所以当url中出现%00时就会认为读取已结束

2. 0x00 截断:

系统在对文件名进行读取的时候,如果遇到 0x00,就会认为读取已经结束。但要注意是文件的 16 进制内容的 00,而不是文件名中的 00

注意的一点就是:get 请求的数据是会被解码,而 post 请求的字符是不会被解码的,通常文件上传就是一个 post 请求

案例:这里我们以 upload_labs 靶场作为例子(post 请求)

使用 burp 进行抓包,我们将 2.png 修改为 1.php空格.jpg

特别注意的一点,上面我们已经强调过了,是文件的 16 进制中的内容:0x00 才具有截断的效果,而不是文件名字具有截断的效果,因为我们 burp 会把器内容进行一个 16 进制编码然后在发出去,发出去之后目标进行解码的时候,当看到 0x00 的时候,就会认为已经结束了

错误案例如下所示:

3. 中间件的解析漏洞:

4. 垃圾数据文件上传绕过(WAF绕过通用):

在不影响原本的数据包内容的条件下,在请求包里面塞垃圾数据,从而进行文件上传绕过,

猜你喜欢

转载自blog.csdn.net/blackguest07/article/details/129076430