OWASP WebGoat---安全测试学习笔记(二)---访问控制缺陷
2014-04-13 04:51
453 查看
访问控制缺陷(Access Control Flaws)
按:访问控制模型
第一部分:访问控制模型的使用
在基于角色的访问控制方案中,角色代表了一组访问权限和特权。一个用户可以被分配一个或多个角色。一个基于角色的访问控制方案通常有两个部分组成:
角色权限管理 和 角色分配。一个错误的基于角色的访问控制方案可能允许用户执行未分配角色的权限项(平行权限漏洞),或允许特权升级到未授权的角色。
平行权限越权漏洞:用户 A 可以利用来访问用户 B 的敏感资源的漏洞。
垂直权限越权漏洞:低权限的用户可以利用来访问高权限的用户的漏洞。
通常,平行权限漏洞产生的原因是在展现用户信息时,使用了较易被伪造的身份依据。比如使用Cookie验证用户身份比利用页面或URL验证用户身份的安全性更好,
虽然事实是这两者都不安全。
判断用户身份的依据:
1.Cookie中的账号字段;
2.保存于URL中的用户ID;
3.其他方法(后面再做补充)。
测试方法:
1.Cookie中的账号字段:更换另一个已登录的账号Cookie;
2.来自URL中的id:试试更改URL中的id值;
3.使用tamper插件等工具修改Cookie中的某些字段;
4.其他方法(后面再做补充)。
第二部分:绕过基于路径的访问控制方案
在一个基于路径的访问控制方案中,攻击者可以通过提供相对路径信息遍历路径。因此,攻击者可以使用相对路径访问那些通常任何人都不能直接访问或
直接请求就会被拒绝的文件。大多数操作系统允许在路径中使用某些特征字符,如:
/etc/passwd
~/.ssh
./configure
./../../../etc/passwd
c:\boot.ini
.\test.txt
..\..\..\boot.ini
file:///c:\bbot.ini
c:\test~1.txt
课程的完成:
用 WebScarab Lite 工具截取请求,修改请求的文件路径。例如:修改文件路径为 ./conf/tomcat-users.xml。修改完成并提交请求,这样就绕过了访问控制。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201404/ea68617b3b935c8b76b3dfed1bb637e8)
第三部分:基于角色的访问控制
在一个基于角色的访问控制的方案中,角色代表一组访问权限和特权。一个用户可以被分配一个或多个角色,一个基于角色的访问控制通常包括两个部分:
角色权限管理和角色分配。一个存有漏洞的基于角色的访问控制方案,可能允许用户以没有分配他的角色或以非法手段获得未经授权的角色(提权)进行访问。
课程的完成:利用WebScarab Lite 工具修改请求中action的Value字段。若请求是ViewProfile,则修改为DeleteProfile。完成删除tom 的任务。
部分课程需要在开发版上修改代码实现,还有访问其他用户资源。需要截取请求,然后修改employee_id来实现。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201404/1f2f0e261936a0298c596b04fc1dae35)
第四部分:远程管理访问
应用程序通常会有一个管理界面,这个界面一般用户无法访问到,只有具有特权的用户才能访问。 很多网站开发人员在脚本中预留了相关的参数接口,
一旦该参数被后台程序确认,则访问者的权限会被放大,浏览到先前不能访问的资源,如:程序调试日志、隐藏功能菜单等。
这部分课程后面再补充吧,找一些网站来以赛代练也不太容易找得到。循序渐进吧。
注:
本文参考:《WEB安全测试》、《WebGoat v2.2技术文档》、《OWASP Testing Guide v3.0》。
权限这部分做测试也接触过,但一般测试优先级较低。因为所测试的基本都是内网系统,所以这部分测试的话,也不涉及安全考虑。更不会用抓包工具,检查权限的漏洞。
联想到以前接过一个测试任务,需求中有个关于串包的测试。其实,当时刚接触测试不久。所以,完全不懂开发说的串包怎么测。最终还是开发自己测试。即开发人员修改请求
中的id,使两次请求的id值完全一致。观察程序对此种情况的处理是否与预期一致。突然感觉反思还是很重要的,就像某些动物的反刍。反思的得当,对自己一定是有益的。
按:访问控制模型
第一部分:访问控制模型的使用
在基于角色的访问控制方案中,角色代表了一组访问权限和特权。一个用户可以被分配一个或多个角色。一个基于角色的访问控制方案通常有两个部分组成:
角色权限管理 和 角色分配。一个错误的基于角色的访问控制方案可能允许用户执行未分配角色的权限项(平行权限漏洞),或允许特权升级到未授权的角色。
平行权限越权漏洞:用户 A 可以利用来访问用户 B 的敏感资源的漏洞。
垂直权限越权漏洞:低权限的用户可以利用来访问高权限的用户的漏洞。
通常,平行权限漏洞产生的原因是在展现用户信息时,使用了较易被伪造的身份依据。比如使用Cookie验证用户身份比利用页面或URL验证用户身份的安全性更好,
虽然事实是这两者都不安全。
判断用户身份的依据:
1.Cookie中的账号字段;
2.保存于URL中的用户ID;
3.其他方法(后面再做补充)。
测试方法:
1.Cookie中的账号字段:更换另一个已登录的账号Cookie;
2.来自URL中的id:试试更改URL中的id值;
3.使用tamper插件等工具修改Cookie中的某些字段;
4.其他方法(后面再做补充)。
第二部分:绕过基于路径的访问控制方案
在一个基于路径的访问控制方案中,攻击者可以通过提供相对路径信息遍历路径。因此,攻击者可以使用相对路径访问那些通常任何人都不能直接访问或
直接请求就会被拒绝的文件。大多数操作系统允许在路径中使用某些特征字符,如:
/etc/passwd
~/.ssh
./configure
./../../../etc/passwd
c:\boot.ini
.\test.txt
..\..\..\boot.ini
file:///c:\bbot.ini
c:\test~1.txt
课程的完成:
用 WebScarab Lite 工具截取请求,修改请求的文件路径。例如:修改文件路径为 ./conf/tomcat-users.xml。修改完成并提交请求,这样就绕过了访问控制。
第三部分:基于角色的访问控制
在一个基于角色的访问控制的方案中,角色代表一组访问权限和特权。一个用户可以被分配一个或多个角色,一个基于角色的访问控制通常包括两个部分:
角色权限管理和角色分配。一个存有漏洞的基于角色的访问控制方案,可能允许用户以没有分配他的角色或以非法手段获得未经授权的角色(提权)进行访问。
课程的完成:利用WebScarab Lite 工具修改请求中action的Value字段。若请求是ViewProfile,则修改为DeleteProfile。完成删除tom 的任务。
部分课程需要在开发版上修改代码实现,还有访问其他用户资源。需要截取请求,然后修改employee_id来实现。
第四部分:远程管理访问
应用程序通常会有一个管理界面,这个界面一般用户无法访问到,只有具有特权的用户才能访问。 很多网站开发人员在脚本中预留了相关的参数接口,
一旦该参数被后台程序确认,则访问者的权限会被放大,浏览到先前不能访问的资源,如:程序调试日志、隐藏功能菜单等。
这部分课程后面再补充吧,找一些网站来以赛代练也不太容易找得到。循序渐进吧。
注:
本文参考:《WEB安全测试》、《WebGoat v2.2技术文档》、《OWASP Testing Guide v3.0》。
权限这部分做测试也接触过,但一般测试优先级较低。因为所测试的基本都是内网系统,所以这部分测试的话,也不涉及安全考虑。更不会用抓包工具,检查权限的漏洞。
联想到以前接过一个测试任务,需求中有个关于串包的测试。其实,当时刚接触测试不久。所以,完全不懂开发说的串包怎么测。最终还是开发自己测试。即开发人员修改请求
中的id,使两次请求的id值完全一致。观察程序对此种情况的处理是否与预期一致。突然感觉反思还是很重要的,就像某些动物的反刍。反思的得当,对自己一定是有益的。
相关文章推荐
- OWASP WebGoat---安全测试学习笔记(十七)---会话管理缺陷
- OWASP WebGoat---安全测试学习笔记(八)---跨站脚本攻击
- OWASP WebGoat---安全测试学习笔记(三)---Ajax安全
- OWASP WebGoat---安全测试学习笔记(九)---不当的错误处理
- OWASP WebGoat---安全测试学习笔记(十)---注入缺陷
- OWASP WebGoat---安全测试学习笔记(十五)---恶意执行
- OWASP WebGoat---安全测试学习笔记(四)---认证缺陷
- OWASP WebGoat---安全测试学习笔记(十一)---拒绝服务
- OWASP WebGoat---安全测试学习笔记(十六)---参数篡改
- Web入侵安全测试与对策学习笔记之(二)——获取目标信息之其他人留下的漏洞—样例程序的缺陷
- OWASP WebGoat---安全测试学习笔记(五)---缓冲区溢出
- OWASP WebGoat---安全测试学习笔记(六)---代码质量
- UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制
- Swift学习笔记7--访问控制
- OWASP WebGoat---安全测试学习笔记(一)
- 软件测试基础_软件缺陷管理学习笔记
- Java学习笔记—访问权限控制
- 《Thinking in Java》学习笔记-----第6章 访问权限控制
- iOS学习笔记49-Swift(九)访问控制
- 【C++】【学习笔记】【018】访问控制