HackTheBox >_ Traceback_181
Traceback_181
这个盒子不应该放在easy,至少不应该是20分,应该30才合理
80
进攻者留下了后门
Xh4H
在源码部分发现了提示
best web shells
Xh4h入侵者的id,同时也是这个盒子的作者,这是一场精心策划的引流(玩笑)。
在他的库中找到
很多不错的web shell
也就是说入侵者在盒子中可能使用了其中之一,(尽量沉浸于剧情)
将所有web shell 的文件名来组成一个字典,这样我们可以通过使用这个字典扫描网站目录,从而找到入侵者留下的后门
使用这个字典,扫描目录
smevk.php
需要凭证
返回github查看这个web shell的源码
默认凭证是admin:admin
登陆成功
通过文件上传功能,传一个我们自己的php-reverse-shell上去
http://pentestmonkey.net/tools/web-shells/php-reverse-shell
网页浏览激活,在kali监听端口获得shell
用户是webadmin
Sudo -l
用户目录下有文件note.txt
系统管理员留下了一个使用Lua写的工具。
上传枚举脚本进行基础枚举
查看bash历史,这里由于我在做的时候还是公共在线机器,混入了其他用户的信息。被误导
$ cat .bash_history
ls -la
cat privesc.lua
cd /dev/shm/.5p3c/
ls -la
nano esc.lua
fg
ls -la
sudo -l
nano privesc.lua
sudo -u sysadmin /home/sysadmin/luvit privesc.lua
rm privesc.lua
logout
./luvit
/dev/shm是linux非常有用的一个目录,它就是所谓的tmpfs,也可以称之为临时文件系统
看这些文件,向ssh中写入了新的key。我们同样可以制作这样的文件,利用/home/sysadmin/luvit将我们的ssh key 推入ssh目录,从而获得ssh权限。
luvit显然是执行lua脚本
在kali本地使用我们自己kali的ssh key ,仿造看到的脚本,来制作一个将我们的key写入sysadmin的ssh 的lua脚本
传输到靶机
靶机执行
sudo -u sysadmin /home/webadmin/luvit evil.lua
ssh登陆
考虑到盒子标记的难度,我在这部分陷入了误区,做复杂了。
复盘整理笔记的时候,简单的搜索了一下。
Lua是一种脚本语言,并且sysadmin安装了luvit,它在Lua中实现了一些API,并允许运行.lua脚本文件。
最关键的Luvit可以执行系统命令
直接执行luvit,它是可以输入命令的,直接执行系统命令就可调用bash
$ sudo -u sysadmin /home/sysadmin/luvit
Welcome to the Luvit repl!
> os.execute('/bin/bash')
这样就直接获得sysadmin的shell了。
得到user
上传pspy,执行查看
root将/var/backups/.update-motd.d 拷贝进 /etc/update-motd.d/
而我们直接可写 /etc/update-motd.d/ (这里盒子的作者可能原意是让backups可写,用定时任务将备份的motd 拷贝进 /etc,最后大概是觉得会增加时长,改成现在的状况)
/update-motd.d 是动态每日提醒,登录服务器时候显示,但是无论脚本是什么,他只是执行完返回显示执行结果
它下面的文件可以帮助我们执行命令,使用 run-parts //etc/update-motd.d/ 可以调试
尝试显示passwd
尝试显示shadow
但是由于run-parts的权限不够,在ssh shell中执行是无法查看的,但是如果我们使用ssh重新登陆,就可以正常显示,这是因为
motd是由pam_motd在用户 每次登陆时 以root用户身份执行的。
显示flag
如果要获得root shell ,只需要同样利用这个漏洞,把我们之前写好的ssh key再写入root 的ssh 目录即可
echo 'cat /home/webadmin/.ssh/authorized_keys >> /root/.ssh/authorized_keys' >> 00-header