文章目录
-
- 一、实验目的:
- 二、工具:
- 三、实验环境:
- 四、漏洞说明:
- 五、实验过程:
-
- 1.?图片马制作:
-
- 1.1?文件头检测+文件内容检测文件类型(没有进行后缀名白名单检测):
- 1.1.1?webjianshangchuan靶场uploadgetimagesize上传:
- 1.2?文件头检测(文件内容检测)+白名单(jpg png gif)文件后缀名检测:
-
- 1.1.1?upload-labs闯关游戏(Pass-13):
- 1.1.2?upload-labs闯关游戏(Pass-14):
一、实验目的:
1、通过本次实验掌握内容验证上传的原理。二、工具:
2、通过upload-labs-master
闯关游戏Pass-13
,Pass-14
,掌握图片马
绕过内容检测的技术。
3、学会图片马制作方法。
【渗透测试|【文件上传绕过】——后端检测_内容检测图片马绕过】BurpSuite三、实验环境:
火狐/谷歌浏览器
cmd命令行
靶?机: windows10虚拟机:四、漏洞说明:192.168.100.150
????wenjianshangchuan
靶场
????upload-labs-master
闯关游戏
????phpstudy2018
搭建网站
?
攻击机: 物理机
??一般文件内容验证使用五、实验过程: 1.?图片马制作:getimagesize函数
检测,会判断文件是否是一个有效的文件图片,如果是,则允许上传,否则的话不允许上传。
??本实验就是将一句话木马插入到一个[合法]的图片文件当中,然后用webshell管理工具进行远程连接。
1.1?文件头检测+文件内容检测文件类型(没有进行后缀名白名单检测): 准备一张图片,这里为
a.png
,和一个一句话木马,通过以下命令合成一个图片马3.php
:a.php
内容:
文章图片
命令:
copy a.png /b + a.php /a 3.php
/b:指定以二进制格式复制、合并文件,用于图像或者声音类文件
/a:指定以ascii格式复制、合并文件用于txt等文本类文件
命令帮助:
文章图片
文章图片
注:这条命令的意思是:通过
copy命令
,把a.png
图片文件,以二进制文件形式添加到a.php
文件中,以ASCII文本文件
形式输出为3.php
文件。以文本文件形式打开生成的
3.php
文件,查看合成的图片马的效果:1.1.1?webjianshangchuan靶场uploadgetimagesize上传:
文章图片
文章图片
文章图片
复制图片链接后,发现可以正常进行解析:
文章图片
1.2?文件头检测(文件内容检测)+白名单(jpg png gif)文件后缀名检测: 图片马有两个要求:
1、图片马肯定是图片格式的文件。
2、在图片马里面肯定有图片格式的文件头,或者整张图片的数据。一般我们添加整张图片的数据。
准备一张图片,这里为
a.png
,和一个一句话木马,通过以下命令合成一个图片马1.png
:命令:
copy a.png /b + a.php /a 1.png
/B表示一个二进位文件。
/A表示一个 ASCII 文本文件。
文章图片
1.1.1?upload-labs闯关游戏(Pass-13): 页面源码:
function getReailFileType($filename){
$file = fopen($filename, "rb");
//以只读的模式打开$filename文件,模式为二进制方式。
$bin = fread($file, 2);
//读取文件的两个字幕(可安全用于二进制文件)。
fclose($file);
//关闭前面打开文件。
$strInfo = @unpack("C2chars", $bin);
//从二进制字符串对数据进行解包,
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$fileType = '';
switch($typeCode){
case 255216:
$fileType = 'jpg';
break;
case 13780:
$fileType = 'png';
break;
case 7173:
$fileType = 'gif';
break;
default:
$fileType = 'unknown';
}
return $fileType;
}$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_type = getReailFileType($temp_file);
if($file_type == 'unknown'){
$msg = "文件未知,上传失败!";
}else{
$img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type;
if(move_uploaded_file($temp_file,$img_path)){
$is_upload = true;
} else {
$msg = "上传出错!";
}
}
}
1.?上传我们合成的图片马
1.png
:文章图片
2.?复制图片链接,进行访问,发现无法解析为php脚本文件,访问到的还是一张图片:
文章图片
通过上面我们发现,如果服务器对我们上传的文件进行了内容检测+白名单检测时,我们再进行访问上传的图片马是无法解析为一句话木马的,只能访问到图片,这个时候我们只能结合
解析漏洞
文件包含
进行绕过。了解解析漏洞点我(还没有进行发布)
了解文件包含点我(还没有进行发布)
1.1.2?upload-labs闯关游戏(Pass-14): 页面源码:
function isImage($filename){
$types = '.jpeg|.png|.gif';
if(file_exists($filename)){
$info = getimagesize($filename);
$ext = image_type_to_extension($info[2]);
if(stripos($types,$ext)){
return $ext;
}else{
return false;
}
}else{
return false;
}
}$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$temp_file = $_FILES['upload_file']['tmp_name'];
$res = isImage($temp_file);
if(!$res){
$msg = "文件未知,上传失败!";
}else{
$img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").$res;
if(move_uploaded_file($temp_file,$img_path)){
$is_upload = true;
} else {
$msg = "上传出错!";
}
}
}
1.?上传我们合成的图片马
1.png
:文章图片
2.?复制图片链接,进行访问,发现无法解析为php脚本文件,访问到的还是一张图片:
文章图片
推荐阅读
- PHP5-8各版本特性详解
- 即时通讯使用|极光通讯用于java web即时通信---构建idea下maven+springboot第三方即时通讯
- 渗透测试(PenTest)基础指南
- Yii|Yii2中不同模块之间的调用runAction
- python|JS逆向之抖音登陆及验证码绕过
- 综合渗透测试|网络安全—使用Ubuntu本地提权漏洞进行渗透及加固
- 渗透测试|Linux提权
- ctf|《从0到1(CTFer成长之路》)
- React|Vscode中快速生成代码的方式