upload-libs

UPload-libs(pass 1-3)

QQ截图20220223121036.png

在这里我们搭建网站学习上传文件(病毒)

首先学习一句话木马:

1
<?php @eval(_POST['wds5418'])?>

文件上传漏洞

文件上传漏洞是指程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过自身权限向服务器上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者webshell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理,解释文件。如果服务器处理的逻辑做的不够安全,则会导致严重后果。

webshell

webshell就是以asp、php、jsp或者cgi等网页文件存在的一种命令执行环境,也可以将其称为后门。攻击者在入侵了一个网站后通常会将这些asp或php后门文件与网站服务器web目录下正常的网页文件混在一起,然后使用浏览器来访问这些后门,得到一个命令执行环境,以达到控制网页服务器的目的(可以上传下载或者修改文件,操作数据库,执行任意命令等)。webshell后门隐蔽行高,可以轻松穿越防火墙,访问webshell时不会留下系统日志,只会在网站的web日志中留下一些数据提交记录。

pass-1(前端js验证)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function checkFile() {
var file = document.getElementsByName('upload_file')[0].value;
if (file == null || file == "") {
alert("请选择要上传的文件!");
return false;
}
//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif";
//提取上传文件的类型
var ext_name = file.substring(file.lastIndexOf("."));
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name + "|") == -1) {
var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
alert(errMsg);
return false;
}
}

法1:这一关仅仅只在前端(在查看源代码中可以看到)进行的js校验,因此可以直接对上传的内容进行抓包

QQ截图20220223120523.png

对filename进行改名,将“muna.png”改成“muma.php”来使的上传的一句话木马可以执行

然后就可以连接蚁🗡了

法二:浏览器禁用javascript就可以绕过前端的js校验

js前端校验存在的必要

前端校验绕过的方法十分简单(极容易遭受攻击),但是它并不是没有存在的必要。之所以使用前端校验的方法,主要是因为效率高,用户体验好,如果所有的数据都发给服务器,再由服务器校验完之后再发给客户端,这中间需要消耗时间,用户的体验就变的不好,所以这种校验方式主要出现于CS架构的游戏类开发。但这种校验方式的开发的初衷是针对中规中矩的普通用户,当面对黑客这类群体的时候就会变得形同虚设。

pass-2(MIME验证)

用pass-1的法一也可以,将php的后缀先改成png然后在抓包处修改文件名后缀

法二:在Content-Type:处将application/octet-stream改成image/jpeg

QQ截图20220223153025.png

MIME验证科普:

mime的作用:使客户端软件,区分不同的文件类型,例如web浏览器就是通过mime类型来判断文件是GIF图片还是可以打印的POSTSCRIPT文件。参考

pass-3 (黑名单验证,特殊后缀)

QQ截图20220223162004.png

法1:可以将一句话木马的文件后缀改成.php5

法2:或者上传.htaccess文件来进绕过

基于文件后缀名的验证介绍

分类:

  1. 基于白名单验证:只针对白名单中有的后缀名,文件才能上传成功。
  2. 基于黑名单验证:只针对黑名单中没有的后缀名,文件才能上传成功。

可以利用Burpsuite工具截断HTTP请求,利用Intruder模块进行枚举后缀名,寻找黑名单中没有过滤的文件后缀。