项目笔记:Webgoat靶场通关教程之Broken Access Control

0x01.Broken Access Control(失效的访问控制)

       1.会话劫持

         接着上篇文章继续讲,打开网页显示试图预测“hijack_cookie”值

一看就是要进行cookie爆破,随便填点击登录然后查看cookie

记下来,之后删除cookie,重复个两三次观察规律

规律推导:前缀43999087440979xxxx为固定模式,后缀17631xxxxxxxx为时间戳或递增计数器。

暴力破解有效Cookie 打开抓包软件,随便填一些数字登录抓包

  • 工具选择:使用Burp Suite的Intruder模块WebScarab进行枚举攻击。
  • 因为难度较低且有规律可循,所以自己制定简单列表可以否则设置攻击载荷太长了
    2.不安全的直接对象引用

      直接对象引用是指应用程序使用客户端提供的输入来访问数据和对象,当引用未得到正确处理并允许绕过授权或披露可用于 执行用户不应执行或访问的作或访问数据。 假设作为用户,您查看您的个人资料,URL 如下所示:

https://some.company.tld/app/user/23398

https://some.company.tld/app/user/23398

https://some.company.tld/app/user/23398您可以在那里查看您的个人资料。如果您导航到以下位置,会发生什么情况:

https://some.company.tld/app/user/23399

https://some.company.tld/app/user/23399或在末尾使用另一个数字。如果可以作号码(用户 ID)并查看其他人的个人资料,则对象引用是不安全的。 当然,这可以检查或扩展到 GET 方法之外来查看数据,也可以作数据。

打开会让你输入账号密码进行身份验证输入他给的 “tom”,"cat"。

到后面意思就是让你抓包查看个人资料里没有的字段然后输入下面框框里我们先打开抓包,然后点击查看个人资料,之后放到Repeater发送看看

会发现圈起来的那俩字段没有,在下面提交就行,记得只提交标签,中间用英文逗号隔开(我一直提交不成功,吐了)

        后面会让你用另一种方式查看自己的个人资料,就是构造url查看,前面抓包已经知道账号路径和uid,直接构造url试试

后面又让查看其它人资料,但是我们不知道他们uid啊,那咋办——只能爆破呗

抓包发到intuber ,根据我们自己的uid设置位数最好

爆破成功

3.缺少功能级别访问控制

        访问控制(例如使用输出编码防止 XSS)可能很难维护。必须确保它在整个应用程序中得到充分执行,从而在每个方法/函数中得到充分执行。

  • 定义:功能级别访问控制是指应用程序对每个功能模块(如页面、API端点)实施细粒度的权限验证,确保只有授权用户能执行特定操作。若缺失,攻击者可绕过权限限制,访问未授权功能(如管理员面板、数据修改接口)。
  • 风险类型
    • 水平越权:同权限用户访问他人数据(如普通用户查看/修改其他用户信息)。
    • 垂直越权:低权限用户执行高权限操作(如普通用户访问管理员功能)。
    • 路径遍历:通过修改请求参数访问隐藏目录或敏感文件(如../../../../etc/passwd)。

打开发现让查找一些隐藏项目

通过他的提示按f12找找看吧,发现在输入框上面字段中好像有一个控件UI没显示出来

前俩控件书信都是dropdown,最后一个前面加了个hidden-menu-item ,抱着试一试的心态把他删了然后再看看页面变化,发现多了个admin里面有userss属性和config属性,填上去就行。(记得留意这三个控件链接)

再往后

他让收集用户信息,还记得前面那三个属性的路径吗

access-control/users

access-control/users-admin-fix

access-control/config

随便访问一个,发现报错了

        发现报错了,这里看看源码加了什么条件吧(黑盒只能看手法了~)

这里要求请求的Content-Type头必须为application/json,那我们添加content-type: application/json

发现返回了多个用户哈希值,随便复制一个粘上去就好了

再往后,他说这个这个漏洞已经修复,只有管理员能看到,让我们再试一次。

看源码

细心的朋友看到下面有个adduser方法,应该是添加新用户,尝试用此提权(记得改成post提交)

现在我们有管理员权限了,在访问试试,搞了半天还是不行,真的要吐了

看了知乎大佬的文章才知道:

现在的问题是,虽然我们成功越权创建了一个jack001的管理员用户,但是并没法登录啊。

继续看源码,发现users-admin-fix这个接口虽然会校验当前用户是否是管理员,它校验的方法是从后端的登录态中取到当前用户的用户名,然后判断它是不是管理员,如果是就返回数据。

参考:A1-Spoofing an Authentication Cookie - 知乎 (zhihu.com)

退出当前登录账户然后注册一个跟上面提交提权账户一样的账户

之后在这里面提权再访问

成功找到哈希值(会发现这次哈希值不一样)

4.伪造身份验证 Cookie

        伪造身份验证Cookie是指攻击者通过非法手段生成或篡改有效的Cookie值,从而冒充合法用户身份访问受保护资源。Cookie作为Web应用中用户身份的“临时通行证”,通常包含会话ID、角色权限等敏感信息。若其生成逻辑存在缺陷或未受保护,攻击者可利用漏洞伪造有效Cookie,绕过登录验证。

        进去他给了俩账户

登陆一下试试,发现有base64加密,解码出一段字符,另一个也是如此。

我们对其结果进行尝试其他解码,发现是base64-16进制-文本,这样发现前面字符都一样,后面为账户名字倒写

那么我记得前面有个叫tom的账户,我们进行伪造试试

成功伪造 NDM3YTRlNzU0MTZhNjI2MTc1NzM2ZDZmNzQ=

然后随便登录抓包伪造cookie(spoof_auth=NDM3YTRlNzU0MTZhNjI2MTc1NzM2ZDZmNzQ=),成功~

未完待续...

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值