Avatar {{帝力于我何有哉}} 不疯魔,不成活。 Be obsessed, or be average.


HackTheBox >_ Traceback_181

Traceback_181

image-20200928150531390

这个盒子不应该放在easy,至少不应该是20分,应该30才合理

image-20200928150551929

image-20200928150613473

80

image-20200928150656035

进攻者留下了后门

Xh4H

在源码部分发现了提示

image-20200928150808163

best web shells

Xh4h入侵者的id,同时也是这个盒子的作者,这是一场精心策划的引流(玩笑)。

image-20200928150942755

image-20200928151030403

在他的库中找到

image-20200928151213728

很多不错的web shell

image-20200928151422121

也就是说入侵者在盒子中可能使用了其中之一,(尽量沉浸于剧情)

将所有web shell 的文件名来组成一个字典,这样我们可以通过使用这个字典扫描网站目录,从而找到入侵者留下的后门

image-20200928151533711

使用这个字典,扫描目录

image-20200928151651029

smevk.php

image-20200928151741538

需要凭证

返回github查看这个web shell的源码

image-20200928151926166

默认凭证是admin:admin

登陆成功

image-20200928152008886

通过文件上传功能,传一个我们自己的php-reverse-shell上去

http://pentestmonkey.net/tools/web-shells/php-reverse-shell

网页浏览激活,在kali监听端口获得shell

image-20200928152208054

用户是webadmin

Sudo -l

image-20200928153549917

用户目录下有文件note.txt

image-20200928152811139

系统管理员留下了一个使用Lua写的工具。

上传枚举脚本进行基础枚举

image-20200928154953353

查看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

image-20200928153859984

/dev/shm是linux非常有用的一个目录,它就是所谓的tmpfs,也可以称之为临时文件系统

image-20200928153933455

看这些文件,向ssh中写入了新的key。我们同样可以制作这样的文件,利用/home/sysadmin/luvit将我们的ssh key 推入ssh目录,从而获得ssh权限。

luvit显然是执行lua脚本

在kali本地使用我们自己kali的ssh key ,仿造看到的脚本,来制作一个将我们的key写入sysadmin的ssh 的lua脚本

image-20200928155615318

传输到靶机

image-20200928155725159

靶机执行

sudo -u sysadmin /home/webadmin/luvit evil.lua

ssh登陆

image-20200928155828430


考虑到盒子标记的难度,我在这部分陷入了误区,做复杂了。

复盘整理笔记的时候,简单的搜索了一下。

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

image-20200928160331008

image-20200928160356359

image-20200928160514232

上传pspy,执行查看

image-20200928160812045

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

image-20200928161145936

尝试显示shadow

image-20200928161235214

但是由于run-parts的权限不够,在ssh shell中执行是无法查看的,但是如果我们使用ssh重新登陆,就可以正常显示,这是因为

motd是由pam_motd在用户 每次登陆时 以root用户身份执行的。

image-20200928161403374

显示flag

image-20200928161457494

image-20200928161517104

如果要获得root shell ,只需要同样利用这个漏洞,把我们之前写好的ssh key再写入root 的ssh 目录即可

echo 'cat /home/webadmin/.ssh/authorized_keys >> /root/.ssh/authorized_keys' >> 00-header