0x1 前台admin登录
inc/function.inc.php:
加密函数就是一个异或加密,参与异或的密钥是变化的,同时做了HMAC验证防止了篡改,总的来说安全性还是可以的。但函数实现HMAC的是 substr(md5($string),8,10),即知道了明文就知道了校验码。 那可不可以构造密文来利用呢?答案是可以的。由于不知道异或的密钥,只能暴力破解。异或密钥为32位md5,因而每一位就有16种可能(0-9,a-f), 那么N位明文可能的加密结果就有16的N次方种。翻代码找到一处可以利用的地方
没有验证password,所以直接就能以admin身份登陆前台。这里我们的明文只有短短的3位(1'#),对应4096种密文。
最多请求4096次,还能接受。burp 跑一下也就分分钟。
0x2 前台getshell(整站系统)
以admin登录后,编辑文章,模板选择 template/default/list.htm ,模板解析是直接require的。而 template/default/list.htm 中有一句
$listdb_moresort 和 $bigsortTPL 都可以通过$_GET、$_POST注册。于是可以文件包含了。
成功读取data/mysql_config.php
由于url_allow_include=Off,RFI变LFI。只能传个图片然后本地包含。官方demo已shell: