文件上传漏洞小总结

欢迎查看upload-labs writeuphttps://www.cnblogs.com/Qi-Lin/p/11296761.html

前端绕过

绕过js,通过bp中的proxy中的option中的选项移除掉javascript脚本,或者通过直接在浏览器中删除掉js

绕过mime-type

mime是多用途互联网邮件扩展类型,用于设定某扩展名文件的打开方式,如.png在数据包的中的content-type为image/png,所以可以通过bp截断绕过

绕过黑名单

黑名单没有白名单安全,可能有遗漏

  • php可以改为php3,php4,php5,phtml上传
  • .htaccess绕过,.htaccess是apache服务器中的一个配置文件,可以实现301重定向,自定义404错误页面,改变文件扩展名,阻止或允许用户访问特定目录或文件等。可以将.htaccess的内容写入sethandler application/x-httpd-php,这可以设置当前目录所有文件都用php解析。不过对应http.conf中allowoverride 应设置为all
  • 大小写绕过,只适用于windows,windows大小写不敏感
  • 空格绕过,windows中文件扩展名后的空格会做空处理
  • 点号绕过,windows下最后一个.会被自动剔除
  • 特殊符号绕过,windows下,如果上传的文件名后缀为php::$DATA会在服务器生成后缀为Php的文件,内容和上传内容相同,并被解析
  • 组合绕过,如1.php空格.
  • 如果上传大小有限制可以先上传小文件,然后利用小文件上传大文件
  • 如果代码是对黑名单进行空替换,可以利用双写绕过

绕过白名单

在系统对文件名读取时,如果遇到0x00会认为读取结束,如:1.php0x00.jpg在上传时认为是jpg,但在新建该文件文件时保存为1.php
但在php5.3之后的版本已经修复,并且受gpc,addslashes函数影响

  • get型截断

  • post截断

图片webshell

当服务端是对会对上传文件的内容进行检测时,可以利用图片进行上传

利用图片的webshell需要利用文件包含漏洞,这是因为在php中使用include,include_once,require,require_once函数包含的文件无论文件名称是什么都会被当做php代码执行

  • 可以上传图片,利用bp截断后,在图片内容后附上一句话木马等

  • 可以在代码中加入相关字符,如简单的为:

GIF98A
<?php
phpinfo()
?>
  • 也可以利用隐写将木马追加到图片结束符后

利用竞争条件上传

  • 文件上传后是先保存为一个临时文件,然后再重命名保存文件,如果网站允许上传任意文件,可能检查上传文件是否包含webshell,如果包含就删除,使用unlink删除文件。也可能发现不是指定类型,就使用unlink删除。所以,如果在删除之前访问上传的文件,就会执行文件中的代码
  • 例如:在文件中写入如下代码 ,此文件在执行时,新建一个shell.php的文件包含木马
<?php
fputs(fopen('shell.php',w),'<?php @eval($_post["pass"]) ?>');
?>
  • 在上传时不断发送http请求,请求该文件,可以利用一个python脚本如:
import requests
while true:
    requests.get("路径")

解析漏洞相关

iis6.0解析漏洞

  • 当建立*.asa, *.asp命名的文件夹时,目录下的所有文件都被当做asp文件解析
  • .asp;.jpg .php;.jpg等命名的文件时,被当做asp,php等文件解析
    如下利用bp截断后修改上传保存的目录,上传成功后,会在该目录uploadimg下生成1.php;文件夹,并在uploadimg文件夹下保存上传的文件,可能如1.php;1.jpg

apache解析漏洞

  • 一些原理文章文章1文章2
  • 解析文件时,对于每种后缀采用对应的解析,如果没有,则采用前一个,比如对于文件1.php.jpg,如果不能解析.jpg则会采用.php对文件进行解析
    所以可以采用这种特性绕过限制
  • .htaccess绕过,.htaccess是apache服务器中的一个配置文件,可以实现301重定向,自定义404错误页面,改变文件扩展名,阻止或允许用户访问特定目录或文件等。可以将.htaccess的内容写入sethandler application/x-httpd-php,这可以设置当前目录所有文件都用php解析。
    所以可以先上传一个.htacess文件,文件内容为sethandler application/x-httpd-php,之后上传允许上传的格式的木马即可

iis put上传漏洞

iis有一个模块webdav。webdav是基于http1.1协议的通信协议,使得http支持put move copy delete方法。当服务器开启webdav,并有写入权限时,可能存在该漏洞。
探测
1、通过更改bp的数据包探测是否存在iis put漏洞,更改发送的数据包头options/http1.1 如果返回200说明存在
2、也可以通过kali中的nikto探测,nikto -h ip
利用方法
1、构造数据包,上传txt文本文件
put /a.txt http1.1
content-length:30
<%eval request()%>
2、构造数据包通过move或copy重命名文件为可执行文件
如copy /a.txt http1.1
host:
dstination:http://.../*.asp

fck编辑器

看到的一篇很好的相关总结
查看版本
editor/dialog/fck_about.html
/_samples/default.html
/_whatsnew.html
根据版本查找上传点(其实编辑器本身也有上传点)
如v2.6.6为
/editor/filemanager/connectors/test.html
/editor/filemanager/connectors/uploadtest.html
采用绕过办法时
如希望新建一个1.asp的文件夹,它会把点转换为下划线,所以可以在上传的时候,指定一个这样的新的文件夹,只会进行一级检测

posted @ 2019-08-04 10:50  启林O_o  阅读(634)  评论(0编辑  收藏  举报