arp-scan 用来发现系统和指纹识别的命令行工具。
从结果中可以看到node的ip是"192.168.92.129"
使用nmap对端口进行探测,如下图所示:
可知开放的端口有2个,分别是:22和3000,其中3000是个web服务;
详细banner信息,如下图所示:
访问3000端口,有如下界面:
该web界面使用node.js编写,通过审计js源码,在“assets/js/app/controllers/home.js”这个文件中可以获取到存储敏感信息的位置/api/users/latest/
,如下图所示:
访问该位置,获取到用户名和密码,如下图所示:
使用hash-identifier
判断加密方式,为SHA-256,如下图所示:
接下来,就是破解出这个密码,使用在线工具,获得密码如下:
使用任意一个口令登录,登陆后如下图所示,没有获取到任何有价值的信息:
这里面说Only admin users have access to the control panel currently, but check back soon to test the standard user functionality!
只有管理员用户才能访问这个界面,猜想应该还有另外的管理员帐号,直接访问/api/users/
获取到了另外一个用户(myP14ceAdm1nAcc0uNT),如下图所示:
解出该用户的密码(manchester)后,登录可以下载该网站的备份源码,如下图所示:
下载源码后,发现不能直接打开,首先对其进行base64解码,如下图所示:
发现是个加密文件,需要先进行破解,可以使用kali自带工具fcrackzip
进行破解,该工具支持暴力破解和字典猜解两种方式,如下图所示:
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt myplace.zip
参数 | 描述 |
---|---|
-D | 指定方式为字典猜解 |
-p | 指定猜解字典的路径 |
-u | 表示只显示破解出来的密码,其他错误的密码不显示出 |
通过字典猜解出密码为magicword
:
解压出源代码,如下图所示:
熟悉nodejs的同学了解app.js的作用,项目入口及程序启动文件
,里面存储着重要配置信息,从该文件中,获取到mongodb的配置信息,如下图所示:
使用mark的用户信息,成功登录到ssh,如下图所示:
当前用户(mark)没有root权限,需要进行提权操作。
确定当前系统的内核版本和系统版本,如下图所示:
命令 | 描述 |
---|---|
lsb-release | 查看发行的系统版本信息 |
arch | 机器的体系架构 |
通过查看版本信息,使用searchsploit
(漏洞查询工具) 查找,可以知道该内核版本存在漏洞可以直接提权,如下图所示:
使用scp
命令(远程文件拷贝)将payload上传至靶机,如下图所示:
对上传的文件进行编译,如下图所示:
执行该文件,可成功提权,如下图所示;
最终将会获取到两个flag:
一个是在/root/root.txt
;
另一个是在/home/tom/user.txt
;