作者:凌度
仅供学习,切勿用于非法途径
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绕过通用):
在不影响原本的数据包内容的条件下,在请求包里面塞垃圾数据,从而进行文件上传绕过,