靶机下载之后使用仅主机模式加载到本地VMware Workstation工作站,需要发现目标靶机的IP地址,可以使用nmap,netdiscover,或者arp之类的工具 arp-scan 例如:sudo arp-scan -I eth1 -l 当然也是可以使用Windows环境下mac地址扫描工具都是可以的,那么本次演示就是arp-scan工具发现
地址:https://www.vulnhub.com/entry/node-1,252/
发现目标靶机IP地址是192.168.5.133,开始使用nmap对其进行扫描
通过-p-参数直接全端口扫描,发现扫描不出来,具体如下
那么就根据提示加一个参数-Pn
nmap -p- -Pn 192.168.5.133
也可以使用如下参数进行探测目标
sudo nmap -sS -sV --open 192.168.5.133
弹出目标靶机详细的版本信息
sudo nmap -sS -A -p 22,3000 192.168.5.133
根据上述扫描到的信息,3000端口是目前唯一能利用尝试的方向,下面访问看看
有登录窗口试了下弱口令和万能密码无果,此时再回到上面扫描的信息查看,发现是node.js编写的,然后按照正常渗透套路来,在访问网页的界面上右键查看下源码,此时通过查看js源码发现未授权访问,可以获取敏感信息,访问的位置是/api/users/latest/ ,具体发现的过程如下:
尝试访问http://192.168.5.133:3000/api/users/latest
[{"_id":"59a7368398aa325cc03ee51d","username":"tom","password":"f0e2e750791171b0391b682ec35835bd6a5c3f7c8d1d0191451ec77b4d75f240","is_admin":false},{"_id":"59a7368e98aa325cc03ee51e","username":"mark","password":"de5a1adf4fedcce1533915edc60177547f1057b61b7119fd130e1f7428705f73","is_admin":false},{"_id":"59aa9781cced6f1d1490fce9","username":"rastating","password":"5065db2df0d4ee53562c650c29bacf55b97e231e3fe88570abc9edd8b78ac2f0","is_admin":false}]
虽然发现了账户名和密码,但是密码是加密的,那么此时就只能试试运气看能不能破解,但是不知道加密的方式,那么可以使用hash-identifier工具来识别是什么加密方式,如下:
知道了加密方式,那么就通过在线破解网站破解试试,选择网站对于的加密方式进行破解,地址:https://md5decrypt.net/Sha256/#answer 破解结果如下:
f0e2e750791171b0391b682ec35835bd6a5c3f7c8d1d0191451ec77b4d75f240 : spongebob
也可以通过其他在线破解网站进行破解,例如:
上述显示的3个账号和对应的hash进行破解并尝试登陆,发现有一个hash是破解不了,另两个hash是可以破解,并登陆发现如下信息:
Only admin users have access to the control panel currently, but check back soon to test the standard user functionality!
根据反馈的这个信息,然后再看 http://192.168.5.133:3000/api/users/latest 的结果,发现给出的账户确实都不是管理员,显示的账户都是"is_admin":"false" 那么尝试访问上一级目录看看 http://192.168.5.133:3000/api/users
访问结果如下:
发现多了个账户,并且显示是管理员账户,那么我开始破解这个hash看看
[{"_id":"59a7365b98aa325cc03ee51c","username":"myP14ceAdm1nAcc0uNT","password":"dffc504aa55359b9265cbebe1e4032fe600b64475ae3fd29c07d23223334d0af","is_admin":true},{"_id":"59a7368398aa325cc03ee51d","username":"tom","password":"f0e2e750791171b0391b682ec35835bd6a5c3f7c8d1d0191451ec77b4d75f240","is_admin":false},{"_id":"59a7368e98aa325cc03ee51e","username":"mark","password":"de5a1adf4fedcce1533915edc60177547f1057b61b7119fd130e1f7428705f73","is_admin":false},{"_id":"59aa9781cced6f1d1490fce9","username":"rastating","password":"5065db2df0d4ee53562c650c29bacf55b97e231e3fe88570abc9edd8b78ac2f0","is_admin":false}]
dffc504aa55359b9265cbebe1e4032fe600b64475ae3fd29c07d23223334d0af 破解出来的密码是:manchester
那么此时就知道了用户名:myP14ceAdm1nAcc0uNT 密码是:manchester
成功登陆,显示有个备份文件,可以下载
文件下载下来了之后,刚开始我是在Windows环境下尝试打开,但是未成功,于是我将文件传至kali下, 使用命令file查看是什么类型的文件,然后再做判断
根据上图的一序列操作,可以猜测此文件是一个经过base64编码的文件,且只有一行,那么我们尝试使用base64编码进行解码看看
坑,发现是个加密的压缩文件,随笔输入错误的密码,最后生成的是空文件,那看来只能破解zip的密码试试
这里就使用破解工具fcrackzip进行破解,默认情况下最新版的kali是没有安装此工具,需要自己安装下
sudo apt-get update
sudo apt-get install fcrackzip
开始尝试使用字典破解此压缩文件
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt myplace.zip
破解出来的密码是:magicword
参数说明下:
-D 指定破解方式是字典模式
-p 指定使用字典模式下对应的字典路径
-u 表示只显示破解出来的密码,错误的密码不显示
知道压缩包的密码后进行解压得出如下文件:
这里得到了源码,我说下常规操作思路:
- 使用grep -ir password 命令指定源码的目录进行过滤查看是否有明文密码,同样的方式查看用户名等
- 没有结果的话就将源码拷贝到Windows下,使用比较好的编辑器工具打开,首先查看配置文件,看看有没有敏感信息
- 如果上述都不行,那么一个一个文件看吧,审计源码或许有很多漏洞可以挖掘
- 本次靶机是直接硬编码的方式写入明文用户名和密码,内容在app.js文件里面,不过内容显示的是为了连接mongodb,所以实际场景中看到账户密码就没个登录的入口试试,总会有结果
- 那么本地在文件中app.js发现能够登录ssh的账户名mark和密码5AYRft73VtFpc84k
- 使用ssh登录目标靶机
根据上述信息查看内核版本是否有本地提权漏洞
使用命令:searchsploit linux 4.4.0 ubuntu
根据上面的结果选择符合范围内的payload全部使用scp命令拷贝至目标靶机,并逐一尝试利用,结果如下:
可以成功提权获取root权限并读取flag值
这里也尝试了另一个exp 45010.c发现也是可以提权的,具体如下:
,所以总结出来本靶机有两个可以提权的exp,分别是44298.c和45010.c这两个payload