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

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

缺陷编号:wooyun-2016-0214712

漏洞标题:运营商安全之广东电信主站getshell(或影响全广东省用户)

相关厂商:中国电信

漏洞作者: 李旭敏

提交时间:2016-05-31 12:27

修复时间:2016-07-17 18:10

公开时间:2016-07-17 18:10

漏洞类型:系统/服务运维配置不当

危害等级:高

自评Rank:12

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-05-31: 细节已通知厂商并且等待厂商处理中
2016-06-02: 厂商已经确认,细节仅向厂商公开
2016-06-12: 细节向核心白帽子及相关领域专家公开
2016-06-22: 细节向普通白帽子公开
2016-07-02: 细节向实习白帽子公开
2016-07-17: 细节向公众公开

简要描述:

天下武功,无坚不摧,唯快不破!

详细说明:

F595DBF2-5A49-4FC1-B5C7-53728B26AC8F.png


http://**.**.**.**/eOrder/getOrderList.action

手工payload试试,确实存在

1e1.jpg


接下来就是写shell了,因为**.**.**.**流量还是挺大的,毕竟是一线城市。猜到会使用cdn或者负载均衡一类的。
先nslookup一下看看dns解析的ip。
<img src="/upload/201605/27153553bbe355f94ca4bdf1d27cc98163e1df6c .png" alt="1C5B1383-478B-4ED8-9FB0-0F6FCE276256.png" />
解析到了这个ip“**.**.**.**”
证明没有cdn,是内网部署了负载均衡。
然而.......

ed11.jpg


发了8万多个请求,才写了一台负载均衡机器的shell。
所以导致连接没半小时就断开连接了。。
接着我就在昨天post了二十一万次请求

36DB329D-1A37-429B-96F6-A56B11B33B88.png


用了大概1天多的时间间隔发包,现在这个webshell只能白天连接,晚上必断。
我估计2/3的机器都给我部署了webshell吧。。。

E34E5878-1C9F-407A-8B10-987B4ACFBC48.png


漏洞证明:

#Mon Dec 12 09:32:05 CST 2011
acl.boot.weblogic.server=Administrators,everyone
group.Administrators=system,weblogic
acl.lockServer.weblogic.admin=Administrators
acl.unlockServer.weblogic.admin=Administrators
acl.shutdown.weblogic.admin=Administrators
user.weblogic=0xf1bfadb5238d88ae46a1cf0101a16c9b71db430e
acl.unlockuser.weblogic.passwordpolicy=Administrators
user.system=0xf1bfadb5238d88ae46a1cf0101a16c9b71db430e
acl.modify.weblogic.admin.acl=Administrators


#log4j.appender.R.File在不同环境下配置不同
#系统日志描述文件
log4j.rootLogger=ERROR,Rolling
**.**.**.**.apache=ERROR,apache
**.**.**.**.apache=false
#第三方框架输出日志,包括struts,hibernate,spring
**.**.**.**.apache.struts=ERROR, struts
**.**.**.**.apache.struts=false
log4j.appender.struts=org.apache.log4j.RollingFileAppender
log4j.appender.struts.File=log/struts.log
log4j.appender.struts.MaxFileSize=1000KB
log4j.appender.struts.MaxBackupIndex=10
log4j.appender.struts.layout=org.apache.log4j.PatternLayout
log4j.appender.struts.layout.ConversionPattern=%d %5p %c:%L - %m%n
**.**.**.**.eshore=DEBUG,eshore
**.**.**.**.eshore=false
log4j.appender.eshore=org.apache.log4j.RollingFileAppender
log4j.appender.eshore.file=log/eshore.log
log4j.appender.eshore.MaxFileSize=500KB
log4j.appender.eshore.MaxBackupIndex=30
log4j.appender.eshore.layout=org.apache.log4j.PatternLayout
log4j.appender.eshore.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
**.**.**.**.poson=DEBUG,poson
**.**.**.**.poson=false
log4j.appender.poson=org.apache.log4j.RollingFileAppender
log4j.appender.poson.file=log/poson.log
log4j.appender.poson.MaxFileSize=500KB
log4j.appender.poson.MaxBackupIndex=30
log4j.appender.poson.layout=org.apache.log4j.PatternLayout
log4j.appender.poson.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
**.**.**.**.eshore.web.support.onlineservice=ERROR,onlineservice
**.**.**.**.eshore.web.support.onlineservice=false
log4j.appender.onlineservice=org.apache.log4j.RollingFileAppender
log4j.appender.onlineservice.file=log/taskLog/onlineservice.log
log4j.appender.onlineservice.MaxFileSize=500KB
log4j.appender.onlineservice.MaxBackupIndex=30
log4j.appender.onlineservice.layout=org.apache.log4j.PatternLayout
log4j.appender.onlineservice.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
**.**.**.**.eshore.comm.front=ERROR,front
**.**.**.**.eshore.comm.front=false
log4j.appender.front=org.apache.log4j.RollingFileAppender
log4j.appender.front.file=log/front.log
log4j.appender.front.MaxFileSize=500KB
log4j.appender.front.MaxBackupIndex=30
log4j.appender.front.layout=org.apache.log4j.PatternLayout
log4j.appender.front.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
**.**.**.**.eshore.web.mall=ERROR,mall
**.**.**.**.eshore.web.mall=false
log4j.appender.mall=org.apache.log4j.RollingFileAppender
log4j.appender.mall.file=log/mall.log
log4j.appender.mall.MaxFileSize=500KB
log4j.appender.mall.MaxBackupIndex=10
log4j.appender.mall.layout=org.apache.log4j.PatternLayout
log4j.appender.mall.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
**.**.**.**.eshore.comm.front.login=ERROR,login
**.**.**.**.eshore.comm.front.login=false
log4j.appender.login=org.apache.log4j.RollingFileAppender
log4j.appender.login.File=log/login.log
log4j.appender.login.MaxFileSize=1000KB
log4j.appender.login.layout=org.apache.log4j.PatternLayout
log4j.appender.login.layout.ConversionPattern=%d %5p %c:%L - %m%n
#新的网上支付用户端日志
**.**.**.**.eshore.web.pay=ERROR,PaymentNewLogs
**.**.**.**.eshore.web.pay=false
log4j.appender.PaymentNewLogs=org.apache.log4j.RollingFileAppender
log4j.appender.PaymentNewLogs.file=log/taskLog/PaymentNewLogs.log
log4j.appender.PaymentNewLogs.MaxFileSize=3000KB
log4j.appender.PaymentNewLogs.MaxBackupIndex=15
log4j.appender.PaymentNewLogs.layout=org.apache.log4j.PatternLayout
log4j.appender.PaymentNewLogs.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
#网上支付对账数据定时器获取对账记录
**.**.**.**.eshore.web.pay.payment.timer=ERROR,easylinkPayListTimerWeb
**.**.**.**.eshore.web.pay.payment.timer=false
log4j.appender.easylinkPayListTimerWeb=org.apache.log4j.RollingFileAppender
log4j.appender.easylinkPayListTimerWeb.file=log/taskLog/PaymentNewTimerLogs.log
log4j.appender.easylinkPayListTimerWeb.MaxFileSize=3000KB
log4j.appender.easylinkPayListTimerWeb.MaxBackupIndex=15
log4j.appender.easylinkPayListTimerWeb.layout=org.apache.log4j.PatternLayout
log4j.appender.easylinkPayListTimerWeb.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
##浏览统计脚本写记录的,必须可用且保持INFO等级
#**.**.**.**.eshore.comm.front.user.track.WriteAndReadTxtFile=INFO, pvfile
#**.**.**.**.eshore.comm.front.user.track.WriteAndReadTxtFile=false
#log4j.appender.pvfile=**.**.**.**m.front.user.track.PvRollingFileAppender
#log4j.appender.pvfile.File=log/accesslog/pv_log/open_log.log
#log4j.appender.pvfile.MaxFileSize=130KB
#log4j.appender.pvfile.MaxBackupIndex=100
#log4j.appender.pvfile.layout=org.apache.log4j.PatternLayout
#log4j.appender.pvfile.layout.ConversionPattern=%m%n
**.**.**.**.eshore.comm.front.user.track.PvRollingFileAppender=ERROR, pvRollingFile
log4j.appender.pvRollingFile=**.**.**.**m.front.user.track.PvRollingFileAppender
log4j.appender.pvRollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.pvRollingFile.File=log/taskLog/pvRollingFile.log
log4j.appender.pvRollingFile.MaxFileSize=100KB
log4j.appender.pvRollingFile.MaxBackupIndex=20
log4j.appender.pvRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.orderInfolog.layout.ConversionPattern=%d %5p %c:%L - %m%n
#**.**.**.**.eshore.comm.front.user.track.ReadTxtToDBTask=DEBUG, readTxtToDBTask
#**.**.**.**.eshore.comm.front.user.track.ReadTxtToDBTask=false
#log4j.appender.readTxtToDBTask=org.apache.log4j.RollingFileAppender
#log4j.appender.readTxtToDBTask.File=log/taskLog/readTxtToDBTask.log
#log4j.appender.readTxtToDBTask.MaxFileSize=100KB
#log4j.appender.readTxtToDBTask.MaxBackupIndex=20
#log4j.appender.readTxtToDBTask.layout=org.apache.log4j.PatternLayout
#log4j.appender.readTxtToDBTask.layout.ConversionPattern=%d %5p %c:%L - %m%n
**.**.**.**.eshore.comm.front.user.track.task.WriteTrackDataToDBTask=ERROR, WriteTrackDataToDBTask
**.**.**.**.eshore.comm.front.user.track.task.WriteTrackDataToDBTask=false
log4j.appender.WriteTrackDataToDBTask=org.apache.log4j.RollingFileAppender
log4j.appender.WriteTrackDataToDBTask.File=log/taskLog/WriteTrackDataToDBTask.log
log4j.appender.WriteTrackDataToDBTask.MaxFileSize=100KB
log4j.appender.WriteTrackDataToDBTask.MaxBackupIndex=20
log4j.appender.WriteTrackDataToDBTask.layout=org.apache.log4j.PatternLayout
log4j.appender.WriteTrackDataToDBTask.layout.ConversionPattern=%d %5p %c:%L - %m%n
#ODE异常跟踪
**.**.**.**.poson.common.ODELog=INFO,ode
**.**.**.**mon.ODELog=false
log4j.appender.ode=org.apache.log4j.RollingFileAppender
log4j.appender.ode.File=log/ode.log
log4j.appender.ode.MaxFileSize=500KB
log4j.appender.ode.MaxBackupIndex=30
log4j.appender.ode.layout=org.apache.log4j.PatternLayout
log4j.appender.ode.layout.ConversionPattern=%d %5p %c:%L - %m%n
#业务办理框架日志
**.**.**.**.eshore.web.transaction.OperationInitAction=ERROR,Operation
**.**.**.**.eshore.web.transaction.OperationInitAction=false
log4j.appender.Operation=org.apache.log4j.RollingFileAppender
log4j.appender.Operation.file=log/Operation.log
log4j.appender.Operation.MaxFileSize=500KB
log4j.appender.Operation.MaxBackupIndex=30
log4j.appender.Operation.layout=org.apache.log4j.PatternLayout
log4j.appender.Operation.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
#跟踪登录号操作间隔时间
**.**.**.**.eshore.comm.front.user.track.util.ClickFilter=INFO, ClickFilter
**.**.**.**.eshore.comm.front.user.track.util.ClickFilter=false
log4j.appender.ClickFilter=org.apache.log4j.RollingFileAppender
log4j.appender.ClickFilter.File=log/accesslog/pv_test/open_web_time.txt
log4j.appender.ClickFilter.MaxFileSize=100KB
log4j.appender.ClickFilter.MaxBackupIndex=20
log4j.appender.ClickFilter.layout=org.apache.log4j.PatternLayout
log4j.appender.ClickFilter.layout.ConversionPattern=%d %5p %c:%L - %m%n
#登录专属日志记录ticket
**.**.**.**.eshore.comm.front.login.ua.action=WARN,ualogin
**.**.**.**.eshore.comm.front.login.ua.action=false
log4j.appender.ualogin=org.apache.log4j.RollingFileAppender
log4j.appender.ualogin.file=log/ualogin.log
log4j.appender.ualogin.MaxFileSize=2000KB
log4j.appender.ualogin.MaxBackupIndex=30
log4j.appender.ualogin.layout=org.apache.log4j.PatternLayout
log4j.appender.ualogin.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
#Web商家系统
**.**.**.**.eshore.web.integral=DEBUG,mall_integral
**.**.**.**.eshore.web.integral=false
log4j.appender.mall_integral=org.apache.log4j.RollingFileAppender
log4j.appender.mall_integral.file=log/mall_integral.log
log4j.appender.mall_integral.MaxFileSize=500KB
log4j.appender.mall_integral.MaxBackupIndex=10
log4j.appender.mall_integral.layout=org.apache.log4j.PatternLayout
log4j.appender.mall_integral.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
#获取密码 Add by D.chao 2010-10-29
**.**.**.**.eshore.web.account.password.PasswordObtainCheckAction=DEBUG,resetPwd
**.**.**.**.eshore.web.account.password.PasswordObtainCheckAction=false
log4j.appender.resetPwd=org.apache.log4j.RollingFileAppender
log4j.appender.resetPwd.file=log/resetPwd.log
log4j.appender.resetPwd.MaxFileSize=500KB
log4j.appender.resetPwd.MaxBackupIndex=10
log4j.appender.resetPwd.layout=org.apache.log4j.PatternLayout
log4j.appender.resetPwd.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
#获取密码 Add by D.chao 2010-10-29
**.**.**.**.eshore.web.pay.payment.tenpay.TenpayReturnActionQQ=DEBUG,tenpayQQ
**.**.**.**.eshore.web.pay.payment.tenpay.TenpayReturnActionQQ=false
log4j.appender.tenpayQQ=org.apache.log4j.RollingFileAppender
log4j.appender.tenpayQQ.file=log/tenpayQQ.log
log4j.appender.tenpayQQ.MaxFileSize=500KB
log4j.appender.tenpayQQ.MaxBackupIndex=10
log4j.appender.tenpayQQ.layout=org.apache.log4j.PatternLayout
log4j.appender.tenpayQQ.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
#FTP代码日志 Add by wulz 2011-10-12
**.**.**.**.eshore.comm.front.ftp=DEBUG,newFtp
**.**.**.**.eshore.comm.front.ftp=false
log4j.appender.newFtp=org.apache.log4j.RollingFileAppender
log4j.appender.newFtp.file=log/newFtp.log
log4j.appender.newFtp.MaxFileSize=500KB
log4j.appender.newFtp.MaxBackupIndex=10
log4j.appender.newFtp.layout=org.apache.log4j.PatternLayout
log4j.appender.newFtp.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n
#活动相关代码日志 Add by wulz 2012-01-04
**.**.**.**.eshore.web.activity=DEBUG,activity
**.**.**.**.eshore.web.activity=false
log4j.appender.activity=org.apache.log4j.RollingFileAppender
log4j.appender.activity.file=log/activity.log
log4j.appender.activity.MaxFileSize=500KB
log4j.appender.activity.MaxBackupIndex=10
log4j.appender.activity.layout=org.apache.log4j.PatternLayout
log4j.appender.activity.layout.ConversionPattern=%d %5p %c{2}:%L - %m%n


其中有各种日志记录的目录以及注释。
接着查看.bash_histroy得知该服务器可能是核心的关键。

scp fabu@**.**.**.**:/mboss/fabu/ecss/upgrade/fb.sh .


接着翻了翻配置文件的调用接口

com.poson.app2.url=**.**.**.**:80/necssServer/services/app/ejbService
com.poson.app2.authHander=**.**.**.**mon.tools.remote.web.webservice.WebAuthHandler
com.poson.app2.Context.SECURITY_PRINCIPAL=ecss
com.poson.app2.Context.SECURITY_CREDENTIALS=ecss!@#ecss


查看一个常用的部署脚本得知其发布服务器的ftp账户密码。

FTP_IP="**.**.**.**"
FTP_USER="fabu"
FTP_PASSWORD="Aa123456"
FTP_HOME="/mboss/fabu/ecss"


6F96086E-9B3B-471A-8099-BE5D9B4788C5.png


接着发现内网某台机器提供memcached服务

cacheServers=**.**.**.**:11211
serverWeights=1,1
sysId=ECSS
ECSS.EKEY=crmAxdf
ECSS.ID=tRsw8sgHlk4=


因为负载均衡多台机器不能允许直接访问外网,出口流量也只有80端口能够ping外网,除非使用端口复用,将代理流量转发到80端口,但是这样也许会对线上业务造成影响。
所以至今并没有很好的方式绕过WAF进内网,但如果服务器都挂马的话,相信肉鸡上线率还是很客观的

修复方案:

98D62497-C6ED-4A13-AAA4-42AB4B66E628.png

版权声明:转载请注明来源 李旭敏@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2016-06-02 18:02

厂商回复:

CNVD确认所述情况,已经转由CNCERT向中国电信集团公司通报,由其后续协调网站管理部门处置.

最新状态:

暂无