前言
hvv期间爆了一个通达OA的漏洞,尝试分析一些这个漏洞的原因以及利用的姿势。
攻击队的大佬tql,0day一个接一个的爆。
膜师傅们~~~~
测试环境
通达OA11.7
通达oa代码解密工具 下载链接
官网上下载的通达OA11.7的安装包,然后傻瓜式一键安装。
漏洞分析:
漏洞点在:general/hr/manage/query/delete_cascade.php文件下:
通过代码发现这里对传递的参数没有任何的过滤,是存在sql注入的。
这里是删除的功能,是一个盲注,所以尝试if(1,sleep(3),2):
发现存在过滤:sleep
在代码中查找过滤的地方,最终在/inc/conn.php找到了过滤的代码:
if ((2 < strpos($clean, "/*")) || (strpos($clean, "--") !== false) || (strpos($clean, "#") !== false)) {
$fail = true;
$error = _("注释代码");
}
else if (preg_match("/(^|[^a-z])union(\s+[a-z]*)*\s+select($|[^[a-z])/s", $clean) != 0) {
$fail = true;
$error = _("联合查询");
}
else if (preg_match("/(^|[^a-z])(sleep|benchmark|load_file|mid|ord|ascii|extractvalue|updatexml|exp|current_user)\s*\(/s", $clean, $matches) != 0) {
$fail = true;
$error = $matches[2];
}
else if (preg_match("/(^|[^a-z])into\s+outfile($|[^[a-z])/s", $clean) != 0) {
$fail = true;
$error = _("生成文件");
}
else if (preg_match("/.*update.+user.+set.+file_priv.*/s", $clean) != 0) {
$fail = true;
$error = "set file_priv";
}
else if (preg_match("/.*case.&