LuManager 高危SQL注入0day分析

本文讲的是 LuManager 高危SQL注入0day分析,2015年9月7日阿里云盾态势感知系统捕获到LuManager系统的0day一枚,经证实,该漏洞一旦被黑客利用可直接以最高权限登陆后台,上传webshell, 控制系统数据库、操作虚拟主机,后果不堪设想。

阿里云安全攻防对抗团队在第一时间通知厂商,厂商迅速响应,于8日上午发布安全更新并致谢阿里云安全。

在此次事件过程中,正是基于云盾态势感知系统灵敏的漏洞捕获能力、阿里云与厂商的快速沟通响应以及厂商负责任的态度,得以保证了阿里云用户不受该漏洞影响,避免了不必要的损失。云盾作为互联网安全的基础设施,对于基础软件的安全我们会进行深入研究和分析,保障云平台的安全稳定运行。

LuManager介绍:

LuManager是一种基于FreeBSD、Zijidelu、Debian、Centos、Ubuntu等Linux/Unix系统的网站服务器管理软件,目前有大量国内用户使用。

漏洞捕获:

2015年9月6日,通过阿里云云盾态势感知系统,在异常流量中我们发现有黑客利用LuManager系统获取webshell,捕获到攻击者的一枚攻击payload:

漏洞复现:

在漏洞库中,我们并未发现该系统存在安全漏洞,推测该漏洞为一枚0day。我们第一时间对该payload进行了复现:向LuManager(版本2.0.99),index.php?m=Public&a=login 发送post数据包,提交后直接绕过登陆验证进入后台,并执行了payload 中的SQL语句:

漏洞分析:

官方下载了最新版本的Lumanager(2.0.99),登陆验证的代码位于/Lib/Action/PublicAction.php,LuManager核心代码使用了Zend加密和代码混淆,控制器目录代码解密后,函数名、类名无法还原,代码的可读性较差,从触发位置寻找漏洞成因比较困难。我们更换思路来定位漏洞位置,Lumanager使用了Thinkphp框架开发,框架的代码并未加密,开启ThinkPHP框架trace模式进行调试,抓取到正常登陆和发送payload时候的SQL语句如下:

通过执行的SQL结果分析,payload触发时,SQL语句中,User.user字段的值并没有单引号包围,同时这个变量可控,导致SQL注入漏洞。

确定是位于where条件触发的SQL注入,继续跟踪定位代码,/Sys/Lib/Think/Db/Db.class.php 400行,parseWhere()函数内代码:

if ( “exp” == strtolower( $val[$i][0] ) )

{

 $whereStr .= “(“.$key.” “.$data.”) “.$rule.” “;

}

从上述代码可以看到:当传入where条件是数组,且数组第一个元素值为“exp”,会直接拼接$val[$i][1]到SQL语句的where条件中,由于没有单引号,因此不受全局addsalash转义影响。parseWhere()函数在上层被调用时,如果没有检查传入变量的类型,直接将可控参数传入,攻击者利用这个特性就可以构造恶意SQL。

LuManager在登陆验证代码中,将$_POST[‘user’]参数传递后带入了parseWhere()函数,构造该参数为数组类型,可触发执行恶意SQL。由于该漏洞是登陆位置触发的SQL注入,我们可以简化payload,构造恒真条件,使用”万能密码”登陆后台:

POST: /index.php?m=Public&a=login

user[0]=exp&user[1]==1)) or 1 –

提交后可直接以管理员身份进入后台。

LuManager登陆位置有验证码机制,发送payload时候需要先识别验证码,可以使用OCR库自动识别验证码,进行自动化检测:

从漏洞成因上说,该漏洞实质是thinkphp框架自身的一处特性(Or 漏洞)引发的,@phith0n已经提交过thinkphp框架存在的安全问题(https://www.wooyun.org/bugs/wooyun-2010-086737),但是仍有很多基于thinkphp框架开发的系统并没有意识到这个严重问题,存在漏洞的也不仅仅LuManager,建议thinkphp开发者检查自身产品是否存在同样问题。

漏洞影响:

该漏洞影响LuManager 2.1.1以下的所有版本,攻击者可直接以最高权限登陆后台,上传webshell, 控制系统数据库、操作虚拟主机。测试过程中,我们发现后台可以新增计划任务,计划任务会以root权限定时执行,攻击者进入后台后可获取系统root权限。

漏洞修复:

该漏洞我们已经第一时间通知厂商,9月8日上午厂商发布升级,并对阿里云安全团队表示感谢。目前最新版本为2.1.2,建议用户尽快升级到最新版本2.1.2。

原文发布时间为:十二月 8, 2015
本文作者:aqniu
本文来自合作伙伴安全牛,了解相关信息可以关注安全牛。
原文链接:http://www.aqniu.com/learn/12388.html

时间: 2024-09-20 23:47:31

LuManager 高危SQL注入0day分析的相关文章

LuManager高危SQL注入0day分析

2015年9月7日阿里云盾态势感知系统捕获到LuManager系统的0day一枚,经证实,该漏洞一旦被黑客利用可直接以最高权限登陆后台,上传webshell, 控制系统数据库.操作虚拟主机,后果不堪设想. 作者:云盾攻防对抗团队 - 千霄 LuManager是一种基于FreeBSD.Zijidelu.Debian.Centos.Ubuntu等Linux/Unix系统的网站服务器管理软件,目前有大量国内用户使用.云盾攻防对抗团队捕获0day后第一时间通知厂商,厂商迅速响应,于8日上午发布安全更新并

ECShop曝高危SQL注入漏洞 360首推临时解决方案

日前,第三方漏洞报告平台乌云曝出国内知名网店系统ECShopGBK版本存在高危SQL注入漏洞,(http://wooyun.org/bugs/wooyun-2010-09463),黑客利用此漏洞可获得管理员账号密码,窃取网站数据.360网站安全检测平台对注册网站检测发现,国内3000余个网站存在此漏洞,是近期流行度最高的漏洞之一.目前,360已独家提供了应对该漏洞的临时解决方案. 360网站安全检测平台网址:http://webscan.360.cn ECShop是一款基于PHP与MYSQL开发

Joomla 3.4.3版本 SQL注入漏洞分析

0x00 漏洞分析 漏洞触发的代码位于:/administrator/components/com_contenthistory/models/history.php,getListQuery()函数内: 通过SQL及报错信息,可以知道我们的注入payload被插入到了红色框部分内.跟进getState()函数,位于libraries/legacy/model/legacy.php文件内,代码如下: 从函数参数和官方注释,可以知道,getState()函数功能是获取一个model的属性及属性对应

Wordpress4.2.3提权与SQL注入漏洞分析

这是这几天一直关注的漏洞了,wordpress上个礼拜发布的4.2.4版本,其中提到修补了可能存在的SQL漏洞和多个XSS. Check point也很快发出了分析,我也来分析与复现一下最新的这个漏洞.   0x01 GP混用造成的越权漏洞 首先,说明一下背景.wordpress中用户权限分为订阅者.投稿者.作者.编辑和管理员. 权限最低的是订阅者,订阅者只有订阅文章的权限,wordpress开启注册后默认注册的用户就是订阅者.国内很多知名网站,如Freebuf,用户注册后身份即为“订阅者”.

php防止sql注入简单分析_php技巧

本文实例分析了php防止sql注入简单方法.分享给大家供大家参考.具体如下: 这里只说一个简单的方法 防止Sql注入的方法有很多,这里要说的其实就是漏洞演练平台Dvwa里的一种方式 直接看high级别的就可以了 $id = $_GET['id']; $id = stripslashes($id); $id = mysql_real_escape_string($id); if (is_numeric($id)){ $getid = "SELECT first_name,last_name FRO

PHP登录中的防止sql注入方法分析

  防止sql注入这些细节问题一般是出现在大意程序员或者是新手程序员了,他们未对用户提交过来的数据进行一些非常过滤从而导致给大家测试一下就攻破了你的数据库了,下面我来简单的一个用户登录未进行安全配置可能出现的sql注入方法,下面一起来看看吧. 比如以下一段登录的代码:  代码如下   if($l = @mysql_connect('localhost', 'root', '123')) or die('数据库连接失败'); mysql_select_db('test'); mysql_set_c

PHP中自带函数过滤sql注入代码分析

    为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全上的初步处理,也即Magic Quotes.(php.ini magic_quotes_gpc).如果magic_quotes_gpc选项启用,那么输入的字符串中的单引号,双引号和其它一些字符前将会被自动加 上反斜杠.     但Magic Quotes并不是一个很通用的解决方案,没能屏蔽所有有潜在危险的字符,并且在许多服务器上Magic Quotes并没有被启用.所以,我们还需要使用其它多种

sql注入原理分析与web暴力破解密码代码

如果发生这种方式的sql注入,一定是程序内部使用的sql拼接,并且没有对用户的输入的表单参数过滤或者没有对url参数过滤.      对于sql的拼接,基本上有两种方式:      1,如  sql = "select * from table where id=" + 输入参数;   形式         此种最好防范,只须要对输入参数进行数字验证,如果忽略此处验证,后果也是最严重,就算你对参数进行 单引号过滤,等号过滤,sql关键字过滤 也于事无补.         如果没有数字验

Java安全之SQL注入漏洞分析

漏洞简介 SQL 注入漏洞在以下情况下出现: 1. 数据从一个不可信赖的数据源进入程序. 2. 数据用于动态地构造一个 SQL 查询.    代码如下 复制代码 String userName = ctx.getAuthenticatedUserName(); String itemName = request.getParameter("itemName"); String query = "SELECT * FROM items WHERE owner+  = '&quo