(1)密码修改逻辑漏洞
1 实验环境
软件名称 | 版本 | 部署方式 | IP |
---|---|---|---|
webug | latest | docker run -d -p 8082:80 -p 33060:3306 –name webug area39/webug | 172.31.5.7 |
2 逻辑漏洞概述
由于程序逻辑输入管控不严,导致程序不能够正常处理或处理错误。一般出现在登录注册、密码找回、信息查看、交易支付金额等位置,由于逻辑漏洞产生的流量多数为合法流量,一般的防护手段或设备无法阻止,也导致了逻辑漏洞成为了企业防护中的难题 。
3 如何挖掘逻辑漏洞
3.1 注册点
- 注册功能可能出现任意用户注册、短信轰炸等问题
- 前端验证:判断是否有任意用户注册
- 手机验证码验证:验证码是否可以暴力破解,验证码与当前手机号没有检验匹配
- 用户名密码注册:是否会导致批量注册
3.2 登陆点
- 可能出现任意用户登陆、短信轰炸等问题
- 前端验证:判断是否有任意用户登陆,是否有验证码回显,是否可以修改返回包造成任意用户登录问题
- 手机验证码验证:是否可以爆破验证码,验证码与当前手机号有没有检验匹配
- 账号密码登录:没有验证码或者是否存在验证码可以绕过(可以暴力破解)
3.3 密码找回点
- 验证码是否可以多次使用
- 验证码是否直接返回在数据包中
- 验证码未绑定用户
- 修改接受的手机或者邮箱进行密码重置
- 前端验证绕过
- 验证步骤绕过(先获取手机验证码,再输入要修改的邮箱和密码)
- 未校验用户字段的值
- 修改密码处id可被替换
。。。
4 密码修改逻辑漏洞
打开webug逻辑漏洞模块(默认账号:admin/admin, 数据库账号root/toor)
后台页面
进入容器查看网站后台管理系统的账号密码,可以看到有两个账号
[root@centos7 ~]# docker exec webug bash -c 'mysql -uroot -ptoor -e "use webug;select * from user_test\G"'
*************************** 1. row ***************************
id: 1
username: admin
password: admin
*************************** 2. row ***************************
id: 2
username: aaaaa
password: asdfsadf
4.1 修改密码未校验旧密码
使用账号aaaaa/asdfsadf 登录,发现404报错,这是由于webug自身的bug引起的
删除URL中的pt_env后正常访问,是一个可以修改密码的页面
输入任意密码后提交
发现可以正常提交(未对旧密码做验证)
再次查看后台数据库账号密码,发现密码修改成功
[root@centos7 ~]# docker exec webug bash -c 'mysql -uroot -ptoor -e "use webug;select * from user_test\G"'
*************************** 1. row ***************************
id: 1
username: admin
password: admin
*************************** 2. row ***************************
id: 2
username: aaaaa
password: 123 #密码已被修改
4.2 普通用户修改管理员账号密码
使用burp抓包,使用账号aaaaa/123登录后台,再次提交修改密码的请求。
发现其中有个字段id=2(通常0或者1是管理员的标识)
将字段值改为1后,放行数据包。返回状态码200
查看后台数据库信息,发现管理员账号密码已被修改
[root@centos7 ~]# docker exec webug bash -c 'mysql -uroot -ptoor -e "use webug;select * from user_test\G"'
*************************** 1. row ***************************
id: 1
username: admin
password: test
*************************** 2. row ***************************
id: 2
username: aaaaa
password: test