WEB安全缝隙中,与文件操作相关的缝隙类型就不少,在大部分的浸透测验过程中,上传文件(大、小马)是必不可少的一个流程,但是各式各样的防火墙阻拦了文件上传,遂收拾文件操作相关缝隙的各种姿态,如有不妥之处,还望各位指正,小东感激不尽。
最近在代码审计某项意图时分发现了一个文件上传缝隙,但是在出产环境测验的过程中,各式各样的“狗”和“盾”都给阻拦了,徒有缝隙,没法儿使用,所以收拾收拾,杀狗破盾,冲冲冲!
0×01 寻觅文件操作相关缝隙
文件操作相关的缝隙首要有:恣意文件上传、恣意文件下载、恣意文件删去、恣意文件读取四大类(简略了解:增修正查)
1.1 文件上传:
文件上传功能在大多数的 web 使用中都存在,比方用户头像上传,文章内容的图片、视频、音频、附件上传,一些 CMS 体系上传模版文件,数据库备份文件,插件文件等当地。
而文件上传,在大部分的浸透测验进一步使用缝隙的时分是比较要害的一步。
一般来说,关于那些未校验文件类型的上传操作的,能够直接上传咱们的小马、大马文件。
有校验文件后缀、类型的,假如是黑名单的办法,比方某 WAF 设置了不允许上传文件后缀为php,asp,apsx的文件,依据PHP的一些可解析后缀比方:php3 、php4、php5、phtml等等
黑名单:
array(
".php",".php5",".php4",".php3",".php2","php1",
".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",
".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",
".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",
".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",
".ashx",".a *** x",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",
".aShx",".aSmx",".cEr",".sWf",".swf"
);
1.2 文件删去:
恣意文件删去缝隙,一般来讲删去文件是一个比较危险的操作,都是管理员才具有的权限,所以关于文件的删去必须有权限的操控,当然假如没有做好CSRF防护,同样是能够以管理员权限进行操作。
恣意文件删去缝隙一般存在于:用户删去文章的附件(图片、压缩包等),管理员删去文章(一起相关删去文章附件),管理员删去插件,删去模版,删去数据库备份文件等操作的当地。
1.3 文件修正:
文件修正其实比较罕见,其完成的一般思路是删去原文件,替换成新上传的文件。
修正文件的操作,在后台的操作还比较常见,比方写后台修正web使用的装备文件config.php(装备网站标题、关键词、数据库等等),常见于装置CMS体系时分的引导操作流程,所以会经常去寻觅类似于install.php等的文件,查看是否存在重装缝隙。
1.4 读取/下载文件:
在一个web使用中,关于网站有危险的文件下载操作的是用户能够读取或下载恣意文件。
常见存在此缝隙的当地比方:网站程序备份文件、数据库备份文件,文件备份(index.php.bak),.git,VM 文件修正的时分反常退出的而生成的 .swp备份文件等
0×02 怎么打破上传文件
实践的环境中,很少有直接能够恣意上传文件的缝隙(常见于前端约束),小东依据个人经历收拾出首要的三大类打破文件上传阻拦的办法:
操作
阐明
前端禁用 ***
前端约束,禁用 *** ,去除input标签的accept特点
修正文件后缀
抓包东西,修正文件后缀为黑名单之外的后缀
修正文件后缀
修正文件后缀为index.jpg.php
修正文件后缀
%00切断,比方index.php%00.jpg
修正文件后缀
文件名结尾增加::$DATA,windows会把::$DATA之后的数据当成文件流,不会检测后缀名.且坚持::$DATA之前的文件名
修正文件后缀
在linux主机上的文件名巨细写灵敏,文件后缀巨细混写
修正文件后缀
在文件结尾增加空格,黑名单的办法没法儿检测
修正文件类型
抓包东西,修正Content-Type:image/png
修正文件后缀
修正文件名shell.php:.jpg,上传后会得到一个空的文件shell.php,然后修正文件名为shell.>>>或许shell.、shell.、shell.>>再上传,重写shell.php
换行解析
Apache2.4.0~2.4.29换行解析缝隙%0d,%0a(CR,LF(回车,换行))
不知道后缀名
Apache装备AddHandler application/x-httpd-php .php不妥导致不知道后缀脚本履行
后缀名正则替换
这种需求结构,使得替换之后的能够重组成为新的可履行后缀,双后缀名绕过
修正上传途径
name="upload_file/1.php%00"; filename="shell.jpg"
条件竞赛
条件竞赛删去/重命名文件时间差绕过
图片马
copy code.jpg/b + shell.php/b hourse.jpg
图片重绘包括马
做一个就好了
上传压缩包
合作PHP伪协议、文件协议等读取履行本地文件
数据库写文件
UDF,select查询输入
实战示例:
来自Upload-labs缝隙演示靶场的文件上传的第九关示例,一看到下面这种状况,是不是感觉彻底没思路?
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".a *** x",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");[1][2][3][4]黑客接单网