【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析

一,前期准备环境和工具

1,vmware 16.0安装

若已安装,请忽略

【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客文章浏览阅读186次,点赞9次,收藏2次。【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)https://blog.csdn.net/m0_67844671/article/details/133609717?spm=1001.2014.3001.5502

2,win2003虚拟机的安装

若已安装,请忽略

【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)_win2003server安装教程_网络安全_Aini的博客-CSDN博客文章浏览阅读183次。【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)_win2003server安装教程https://blog.csdn.net/m0_67844671/article/details/133675835?spm=1001.2014.3001.5502

3,pikachu靶场安装

pikachu靶场的话我们用不到,但是讲了如何安装phpstudy2018,360zip,notepad++等工具,这些工具会用到

【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_网络安全_Aini的博客-CSDN博客文章浏览阅读148次,点赞11次,收藏2次。【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)https://blog.csdn.net/m0_67844671/article/details/133682360?spm=1001.2014.3001.5502

4,Burp Suite 抓包工具安装

若已安装,请忽略

【网络安全 --- Burp Suite抓包工具】学网安必不可少的Burp Suite工具的安装及配置-CSDN博客文章浏览阅读134次。【网络安全 --- Burp Suite抓包工具】学网安必不可少的Burp Suite工具的安装及配置https://blog.csdn.net/m0_67844671/article/details/133843910?spm=1001.2014.3001.5502

二,文件上传下载靶场安装

2-1 靶场资源下载

靶场及用到的工具百度网盘下载地址如下:

百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/1E2UWMOFhM9xmju51m8Lu9Q?pwd=8888
提取码:8888
现在已经准备好的环境应该如下:

win2003 系统

**phpstudy2018 -----**提供web服务

**Burp Suite抓包工具 ----**可以安装在win10虚拟机或者物理机上

**360zip,notepad++ ----------**非必需,但是win2003上没有解压缩工具和记事本

2-2 靶场安装

1,从工具文件家里把upload文件夹放到web服务器根目录上

2,启动我们的web服务器

3,查看服务器IP地址

win + r 打开命令框输入cmd回车 ,然后输入ipconfig

4,在物理机上ip地址加跟目录访问 192.168.31.159/upload

到此靶场安装完成

三,文件上传下载 1-5 关

3-1 第一关:

第一关是前端校验绕过,之前学习的时候已经学过了,可以直接修改代码绕过,或者抓包修改绕过

那就源代码绕过。鼠标右击,点击检查

不过谷歌浏览器就是有点问题,这样行不通,可以用火狐浏览器试一下

提示uploads文件夹不存在,请手工创建,所以在upload文件夹下还需要创建一个upload文件夹

创建好了文件夹以后,回到火狐浏览器继续试一下

应该是上床成功了,我们去upload文件夹下看看

确实已经上传成功了,第一关就这样过了

第二种就是抓包修改,你们还记得吗,先把webshell后缀改为png或jpg,然后上传的时候抓包,数据包中把后缀也改过来,这个就留给你们自己试一下,之前讲的时候详细讲过了的

3-2 第二关:

可以查看源码,发现它检查的是mime类型,之前也讲过了这个如何绕过,就是抓包改content-type改一下

如果直接选择php结尾的webshell的话就提示文件类型不正确

我们上传的时候抓包,该文件类型试一试 ,源代码里面已经给了白名单

上传成功了

3-3 第三关:

黑名单绕过之php3、php5

大家可以看看源代码

php 复制代码
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array('.asp','.aspx','.php','.jsp'); // 黑名单
        $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);//去除字符串::$DATA,这个怎么绕过,后面会将
        $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 = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
       }
   } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
   }
}

这里是黑名单验证('.asp','.aspx','.php','.jsp'),我们可上传php3,php5...等这样可以被服务器解析的后缀名,当然,这个是根据服务器的配置来,如果配置中可以被解析,那么我们就可以上传这样的文件,不过现在apache等默认是不支持这种文件解析了。比如下面这种

现在默认是解析不了的,除非改apache的配置文件

我们选择了一个php3的文件,结果能上传成功了

但是我们看看它能不能执行

192.168.31.159/upload/upload/202310291406466984.php3

因为apache默认不会运行php3,php5结尾的文件

让apache解析,修改httpd配置文件,如下位置

AddType application/x-httpd-php .php .phtml php3 php5

随便找个位置,然后加上上面那句话保存

重启服务器

重试以后还是一样的原因,不过这种漏洞很少见,一般服务端不会开启那个配置,而且默认是关闭的,所以即便上传成功了,也没办法以php代码执行,除非想办法改后缀

3-4 第四关:

黑名单绕过 .htaccess和文件名叠加特性绕过

分析代码发现,这里对上传的后缀名的判断增加了,php3.php5....已经不允许上传,但是没有限制.htaccess文件的上传,所以我们依然可以使用。

这是也是黑名单中的一种方法,黑名单中没有将这个后缀名的文件加入黑名单,那么我们就可以利用这种文件来进行攻击,这种文件是apache的一个配置文件,里面我们写了三行代码。可以说是,这个文件中可以改apache的配置,导致apache出现解析漏洞。

php 复制代码
<FilesMatch "">
SetHandler application/x-httpd-php
</FilesMatch>

我们只要把这个文件上传上去,然后再上传一个jpg啊之类的可上传的后缀名文件上去,那么apache都会当作php文件来解析,我这里就不上传了,比如我们在upload文件夹中放这么两个文件:

上传以后访问后的效果

3-5 第五关:

大小写混合绕过

分析代码,发现以.htaccess为后缀的文件已经不允许上传,并且上传的文件被改名字了,所以我们上面的方式都不行了,但是 file_ext = strtolower(file_ext); //转换为小写 这一句没有了,我们就可以使用文件名后缀大小写混合绕过,把1.php改为1.phP...来上传

比如选了一个tou.pHP文件就成功上传了

相关推荐
士别三日wyx1 小时前
HW护网分析研判思路,流量告警分析技巧
安全·web安全·网络安全
茶颜悦色vv3 小时前
Wireshark(1)
网络·web安全·网络安全·wireshark
纯净的灰〃3 小时前
vulnhub-matrix-breakout-2-morpheus
安全·web安全·网络安全
愿得一人欣4 小时前
工具大全-dirsearch探测Web目录
网络安全·ctf比赛工具·渗透工具大全
D1TAsec4 小时前
编译型语言的痛!但无文件落地我可以!!!
网络安全
安全方案16 小时前
如何识别钓鱼邮件和诈骗网站?(附网络安全意识培训PPT资料)
网络安全·安全培训
H轨迹H19 小时前
SolidState靶机通关教程及提权
网络安全·渗透测试·靶机·oscp
D1TAsec20 小时前
Powercat 无文件落地执行技巧,你确定不进来看看?
网络安全
文大。21 小时前
2024年广西职工职业技能大赛-Spring
java·spring·网络安全