一、漏洞原理
1、越权漏洞原理
实现控制访问有些程序的管理员的管理页面只有管理员才显示,普通用户看不到,利用URL实现访问控制,但URL泄露或被恶意攻击者猜到后,这会导致越权攻击。
2、未授权漏洞原理
网站出现未授权访问漏洞一种可能是由于网站管理员没有对需要保护的文件进行正确的访问权限配置,导致用户可以进行任意访问。
二、越权导致任意用户密码修改
百度搜索此管理平台说明书,获取到管理员默认密码
登陆后发现此网站功能点很少,大多数都是资源数据的展示,在系统管理处存在管理员对普通用户和对自己密码的修改。
在管理员编辑好密码后点击提交时,抓包分析请求数据。
这里将请求头和请求数据保存下来
请求头:
POST /index.php?q=user/edit HTTP/1.1
请求数据:
doLoginSubmit=1&uid=1&username=admin&password=123456&password2=123456&name=&department=&post=&phone=&email=&doSubmit=1
登录test普通用户尝试越权
在普通用户个人资料处修改密码,填写好后抓包.(没有普通用户就自己创建)。
将请求头以及请求数据改为管理员编辑密码时的请求包以及请求内容,放包。
使用刚刚修改后的管理员密码进行登录(admin/123456),登陆成功后查看日志编号24可知,普通用户修改管理员用户密码。
三、越权导致任意用户添加
继续分析此页面,可发现存在添加用户这一选项,继续探索此功能点。
添加管理员用户填好用户名密码后抓包提交。
注意这里请求头参数为/index.php?q=user/add,很容易理解就是添加用户.
分析post请求数据内容其中groupid为1应该就是管理员权限.
username=aaaa&password=123456&password2=123456&groupid=1&doLoginSubmit=1
随后添加普通用户看groupid值为多少。
当groupid=2的时候即为普通用户,明了后登录普通用户测试是否存在此漏洞。
登录普通用户,同样是修改资料处,点击提交并抓包。
q参数修改为?q=user/add,数据包请求内容改为doLoginSubmit=1&username=aaaa&password=123456&password2=123456&groupid=1
改好放包
登录管理员aaaa用户,查看日志可知普通用户创建管理员用户aaaa
修复建议:
执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限。
四、未授权访问
点击系统日志->系统操作日志记录,可以看到网站url请求参数一直保持不变,通过抓包可以了解请求参数。
通过对只有管理员用户才可操作的参数进行抓包收集,然后通过普通用户进行对参数测试访问.测试出以下五种参数请求没有拦截访问。
q=auth/index 角色管理
q=sysconf/time 时间管理
q=sysconf/passwd 修改系统配置
q=sysconf/backup 系统备份和恢复
q=log/logexport/exporttype/1 导出日志
登录普通用户,首页F5刷新修改请求头q数据为q=sysconf/passwd,随后放包。
修复建议:
加入用户身份认证机制或token验证,对系统的功能点增加权限控制。
五、漏洞总结
1.关注不同功能点的请求数据,不放过每一个参数。
2.保存并分析管理员功能点处的请求包,通过此请求包测试普通用户能否越权访问,或越权使用管理员功能。
昆仑云安全实验室系列文章仅限技术研究与讨论,昆仑云安全实验室拥有对此文章的修改、删除和解释权限,严禁用于非法用途,否则产生的一切后果自行承担!!!
原文始发于微信公众号(昆仑云安全):某系统黑盒测试下的逻辑漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论