既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
WEB安全基础入门—访问控制漏洞和权限提升
-
- 1. 什么是访问控制
- 2. 访问控制的分类
- 3. 访问控制的安全模型
- 4. 访问控制漏洞利用
- 5. 漏洞实例
-
- [1. 不受保护的管理功能(Unprotected admin functionality)](#1_Unprotected_admin_functionalityhttpsportswiggernetwebsecurityaccesscontrollabunprotectedadminfunctionality_146)
- [2. 不受保护的管理功能但使用了不可预测的URL(Unprotected admin functionality with unpredictable URL)](#2_URLUnprotected_admin_functionality_with_unpredictable_URLhttpsportswiggernetwebsecurityaccesscontrollabunprotectedadminfunctionalitywithunpredictableurl_155)
- [3. 由请求参数控制的用户角色(User role controlled by request parameter)](#3_User_role_controlled_by_request_parameterhttpsportswiggernetwebsecurityaccesscontrollabuserrolecontrolledbyrequestparameter_177)
- [4. 可以在用户配置文件中修改用户角色(User role can be modified in user profile)](#4_User_role_can_be_modified_in_user_profilehttpsportswiggernetwebsecurityaccesscontrollabuserrolecanbemodifiedinuserprofile_193)
- [5. 可以绕过基于URL的访问控制(URL-based access control can be circumvented)](#5_URLURLbased_access_control_can_be_circumventedhttpsportswiggernetwebsecurityaccesscontrollaburlbasedaccesscontrolcanbecircumvented_232)
- [6. 可以绕过基于方法的访问控制(Method-based access control can be circumvented)](#6_Methodbased_access_control_can_be_circumventedhttpsportswiggernetwebsecurityaccesscontrollabmethodbasedaccesscontrolcanbecircumvented_251)
- [7. 可控制请求参数中的用户的ID (User ID controlled by request parameter)](#7__ID__User_ID_controlled_by_request_parameterhttpsportswiggernetwebsecurityaccesscontrollabuseridcontrolledbyrequestparameter_261)
- [8. 具有不可预测的用户ID (User ID controlled by request parameter, with unpredictable user IDs)](#8_ID__User_ID_controlled_by_request_parameter_with_unpredictable_user_IDshttpsportswiggernetwebsecurityaccesscontrollabuseridcontrolledbyrequestparameterwithunpredictableuserids_272)
- [9. 重定向数据泄漏获取ID参数 (User ID controlled by request parameter with data leakage in redirect)](#9_ID__User_ID_controlled_by_request_parameter_with_data_leakage_in_redirecthttpsportswiggernetwebsecurityaccesscontrollabuseridcontrolledbyrequestparameterwithdataleakageinredirect_293)
- [10. 请求参数控制,获取密码(User ID controlled by request parameter with password disclosure)](#10__User_ID_controlled_by_request_parameter_with_password_disclosurehttpsportswiggernetwebsecurityaccesscontrollabuseridcontrolledbyrequestparameterwithpassworddisclosure_304)
- [11. 不安全的直接对象引用(Insecure direct object references)](#11_Insecure_direct_object_referenceshttpsportswiggernetwebsecurityaccesscontrollabinsecuredirectobjectreferences_314)
- [12 多步骤处理流程的访问缺陷(Multi-step process with no access control on one step)](#12_Multistep_process_with_no_access_control_on_one_stephttpsportswiggernetwebsecurityaccesscontrollabmultistepprocesswithnoaccesscontrolononestep_323)
- [13. 基于Referer的访问控制(Referer-based access control)](#13_RefererRefererbased_access_controlhttpsportswiggernetwebsecurityaccesscontrollabrefererbasedaccesscontrol_347)
- [1. 不受保护的管理功能(Unprotected admin functionality)](#1_Unprotected_admin_functionalityhttpsportswiggernetwebsecurityaccesscontrollabunprotectedadminfunctionality_146)
- 1. 什么是访问控制
1. 什么是访问控制
访问控制是对谁可以执行什么操作或是否允许其访问所请求资源的管控。在具体的WEB环境中,访问控制依赖于身份验证和会话(session)管理.
- 身份验证:识别用户,确认他就是他声称的人。
- **会话管理:**用session标识同一用户发出的后续HTTP请求。
- **访问控制:**确定是否允许用户执行他们尝试执行的操作。
访问控制的设计和管理是一个复杂且动态的问题,它将业务、组织和法律约束应用于技术实施。由于访问控制设计的决策必须由人权衡后做出,而不是单纯由技术做出,因此出错的可能性很高。
2. 访问控制的分类
1. 垂直访问控制(对功能
的访问控制策略)
限制不同类型用户访问不同敏感功能的一种访问控制策略
不同类型的用户拥有不同的应用功能权限。例如管理员能够修改或删除任何账户,而普通用户无权访问这些功能。
垂直访问控制可以实施业务策略(如职责分离和最小权限)的更细粒度的安全模型
2. 水平访问控制(对资源
的访问控制策略)
限制不同的用户可以访问相同资源类型的特定子集。
不同类型的用户拥有相同类型的资源子集的访问权限。例如银行应用允许用户查看交易并从他们自己的账户付款,但不允许使用其他人的账户。
3. 基于上下文的访问控制
根据应用程序的状态或用户的交互来限制对功能和资源的访问。
可防止用户以错误的顺序执行操作。例如,零售网站会阻止用户在付款后修改订单的内容。
3. 访问控制的安全模型
1. 什么是安全模型
访问控制安全模型是对一组独立于技术或实现平台的访问控制规则的定义。访问控制安全模型在操作系统、网络、数据库管理系统以及后台、应用程序和网络服务器软件中实施。多年来,已经设计了各种访问控制安全模型,已将访问控制策略与业务或组织规则和技术变化相匹配。主要包括以下四种:
- 程序化访问控制模型
- 自主访问控制模型(DAC)
- 强制访问控制模型(MAC)
- 基于角色的访问控制模型(RBAC)
2. 程序化(矩阵)访问控制模型
用户权限矩阵存储在数据库中,并参照该矩阵应用访问控制。这种访问控制可以包括角色、组、个人用户、流程集合或工作流,并且可以是高细粒度的。
3. 自主访问控制模型(DAC)
可以根据用户或指定的用户组来限制对资源或功能的访问。单个资源或功能的所有者能够向用户分配访问权限。该模型是高度细化的,定义了对单个资源或功能的用户访问权限。因此,模型的设计和管理可能会变得非常复杂。
4. 强制访问控制模型(MAC)
是一种集中控制的访问控制系统,主体对某个对象(文件或其他资源)的访问受到限制。与DAC不同,资源的用户和所有者无权委派或修改其资源的访问权限。这种模式通常被军队、保密单位的系统采用。
5. 基于角色的访问控制模型(RBAC)
可以定义指定的角色,并为其分配访问权限。然后分配给用户单个或多个角色。如果设计得当,可以提供足够的粒度,以便在复杂的应用程序中提供可管理的访问控制。例如,可以将采购办事员这个职位定义为对采购分类功能及其相关资源有访问权限的角色。当员工离开或担任该职位时,访问控制将简单的撤销或授权其账户为采购办事员的角色即可。
当有足够的角色来正确地调用访问控制,但又不会使模型过于复杂和难以管理时,RBAC是最有效的。
4. 访问控制漏洞利用
1. 垂直权限提升
如果用户可以访问到他们不被允许访问的功能时,即为垂直权限提升。例如,如果非管理用户实际上访问到管理页面。
- 仅受到有限防护的功能点
用户可以通过浏览器直接输入URL到管理功能页。开发者未对所有功能页面做好安全验证防护,导致未授权访问。
https://insecure-website.com/admin
例题1
有时路径并不好寻找,也无法预测,如下
https://insecure-website.com/administrator-panel-yb556
有时响应的JS代码中含有这个路径,其实这属于信息泄露的一种
<script>
var isAdmin = false;
if (isAdmin) {
...
var adminPanelTag = document.createElement('a');
adminPanelTag.setAttribute('https://insecure-website.com/administrator-panel-yb556');
adminPanelTag.innerText = 'Admin panel';
...
}
</script>
例题2
- 基于参数的访问控制方法
一些程序将用户的权限存储在了用户可控制的位置,如URL参数、cookie
https://insecure-website.com/login/home.jsp?admin=true
https://insecure-website.com/login/home.jsp?role=1
例题 3、4
- 平台配置错误导致访问控制中断
一些程序的访问控制是依赖于平台基于角色对特定URL和HTTP的限制实现的。
DENY: POST, /admin/deleteUser, managers
禁止managers用户组的人员 使用删除账户的功能
但是可尝试修改访问方法
和 X-Original-URL
X-Rewrite-URL
两个header重写URL,实现绕过
POST / HTTP/1.1
X-Original-URL: /admin/deleteUser
...
例题 5、6
2. 横向权限提升
如果用户能够访问属于另一个用户的资源,即为横向权限提升。如查看他人个人信息页或查看工资单。
攻击手段与垂直权限提升攻击手段类似,如直接访问URL
https://insecure-website.com/myaccount?id=123
例题7、8、9
3. 从横向到纵向的权限提升
如果横向权限提升到了其他高权限账户,则实现了从横向到纵向的权限提升。
例题 10
4. 不安全的直接对象引用(IDOR)
应用程序直接调用被用户控制输入的信息进行查询,造成对恶意对象的直接调用。
- 对数据对象的直接引用
https://insecure-website.com/customer_account?customer_number=132355
如上URL,某个网站数据库存储的索引值(index)直接作为路径参数customer_number
的值。若防护不当,攻击者可以任意修改该值,查看其他索引值对应存储的信息。
若遍历到存储高权限账户的索引值,则攻击会造成很大的威胁。
- 对静态文件的直接引用
https://insecure-website.com/static/12144.txt
如上URL,某个网站将聊天记录以txt文档形式定期存储在服务其上,随着不断累积自动生成新的txt文档。网站可通过URL直接访问这些静态文件。若防护不当,攻击者可任意修改该URL路径,查看其他静态文件。
例题11
5. 多步骤业务流程中的访问控制漏洞
在处理比较重要的业务时,往往采用多步骤处理流程。以管理员更新指定账户信息的操作为例,往往涉及至少如下三个步骤:
- 读取指定用户的信息
- 提交变更
- 查看变化内容并确认
有时网站安全防护只针对部分步骤进行了访问控制,而忽略剩余页面的防护。比如,开发者对上述一、二两步骤设置访问控制,却默认到达第三步的用户为可信用户,无需再做访问控制。攻击者可以利用这点直接调到第三步进行未授权访问。
例题 12
6. 基于Referer的访问控制
有些网页的认证逻辑是,用户在登陆管理员页面/admin
时,进行严格的访问控制。但在执行后续操作时,如删除某个用户/admin/deleteUser
,则采取验证报头referer
的方式,验证其是否从/admin页面过来。
referer标头的作用是记录请求过来时的上一个路径,但此标头可以在Burp等类似工具中任意修改。
例题 13
7. 基于地理位置的访问控制
有些商业或社交媒体应用对访问者的位置进行访问控制,此种情况可以使用代理、VPN或者修改地理位置的插件进行篡改,从而实现绕过。
5. 漏洞实例
1. 不受保护的管理功能(Unprotected admin functionality)
- 目标
删除账户carlos
- 解题思路
随手一试有/robots.txt
得到路径/administrator-panel
可直接访问
2. 不受保护的管理功能但使用了不可预测的URL(Unprotected admin functionality with unpredictable URL)
- 目标
删除账户carlos
- 解题思路
在首页代码中发现js代码,获取后台管理路径/admin-mzk80q
var isAdmin = false;
if (isAdmin) {
var topLinksTag = document.getElementsByClassName("top-links")[0];
var adminPanelTag = document.createElement('a');
adminPanelTag.setAttribute('href', '/admin-mzk80q'); (关键信息在此行)
adminPanelTag.innerText = 'Admin panel';
topLinksTag.append(adminPanelTag);
var pTag = document.createElement('p');
pTag.innerText = '|';
topLinksTag.appendChild(pTag);
}
3. 由请求参数控制的用户角色(User role controlled by request parameter)
- 目标
删除账户carlos
测试账户:wiener:peter
- 解题思路
浏览数据包发现cookie中存在Admin=false
,改为true即可
GET /my-account HTTP/1.1
Host: 0ab100e204f55672c0eb16ac002b0029.web-security-academy.net
Cookie: session=DsCKlJOncLPK0Qw4ANnbaeMd0SjWW9m9; Admin=false
4. 可以在用户配置文件中修改用户角色(User role can be modified in user profile)
- 目标
管理页面路径为/admin
用户roleid=2
可访问。删除账户carlos
测试账户:wiener:peter
- 解题思路
- 经测试在更换邮箱功能点时发现如下数据包和响应,包含
roleid
- 经测试在更换邮箱功能点时发现如下数据包和响应,包含
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
roleid=2`可访问。删除账户carlos
测试账户:wiener:peter
- 解题思路
- 经测试在更换邮箱功能点时发现如下数据包和响应,包含
roleid
- 经测试在更换邮箱功能点时发现如下数据包和响应,包含
[外链图片转存中…(img-uPkyD8op-1715458177173)]
[外链图片转存中…(img-AICtxUX2-1715458177174)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!