跟着BurpSuite创造者学习网络安全——逻辑漏洞篇

如果不把学到的知识加以练习,终究只是纸上谈兵,练习一遍,不仅能加深印象,还能实践,一举多得,本文将跟随BurpSuite学院内容进行学习。

目录

第一课 业务逻辑漏洞

实验1 excessive trust in client-side controls

实验2 high-level logic vulnerability

实验3 low-level logic flaw

实验4 inconsistent handing of execeptional input

实验5 inconsistent security controls

实验6 weak isolation on dual-use endpoint

实验7 insufficient workflow validation

实验8 Authentication bypass via flawed state machine

实验9 flawed enforcement of business rules

实验10 infinite money logic flaw

实验11 authentication bypass via encryption oracle


第一课 业务逻辑漏洞

实验1 excessive trust in client-side controls

先用用户名和密码登陆一下,然后这是一个商店,我觉得哪个自行车还不错,66🔪,便宜点吗?老板

有点贵了,改改价格

发现购物车多了一件商品

购买之后,发现账户钱变少了

到这儿,我觉得实验一已经做完了,但是实验是要买一件皮夹克,那就按同样的思路来一遍呗

做完后,我们发现这个实验做完了,emmm,下次得先看一下任务是什么

实验2 high-level logic vulnerability

这一次看到了是要买皮夹克,还是这个商店

发现quantity的值可以改,而且还可以改成负值。改成负值加入购物车的价格就是负值,选择合适的数量和皮夹克的钱一减,就能花低价买到好东西了。

可以看到total已经是负的了,那再和选择的正价商品一抵消······

还真的是,按理论来说那现在应该就能买了,但是发现-10不够,调到-13就刚好,这是一道计算题。

ok,问题解决了

实验3 low-level logic flaw

和上一关思路差不多,但是实现方式不太一样,首先题目提示要使用到intruder

将包发送至intruder后,将quantity参数设置为99,然后选择空有效载荷进行攻击,时常刷新购物车,会发现随着攻击的进行,数量在不断增加并且价钱从负值开始逐渐增大

我们要发现它的规律,再将数量设置为1,然后针对性的设置payload

创建新的intruder攻击,但这一次选择精确的合适的值作为攻击载荷,等待攻击完成,我们在将抓到的包放掉,就会得到下面的结果

然后我们通过添加其他商品,把这个值控制在0以上100以下,算术题又来了。

ok,结算一下,这道题就完成了

实验4 inconsistent handing of execeptional input

意思就是要我们进入admin用户并且删除Carlos,我们可以先尝试看看是否有 admin 目录

严格意义上说我们需要使用"Target" > "Site map",然后在网站url处右击选择"Engagement tools" > "Discover content"去发现admin目录,大概就是利用burpsuite的这个目录扫描功能,但是可以从题目中猜到,所以做这件事没有那么大的意义

然后提示在以DontWannaCry用户身份登陆时即可使用管理员页面,我们在注册时有一个邮箱,是题目给我们的,我们需要使用这个邮箱去注册

在注册完成后进行登录,仍然无法进入admin目录下,但是发现登录成功后只有两行内容,并且发现在email展示处有字符限制,仅能输入255个字符,而注册时邮箱处可以输入超过这么多字符

 之前注册时提示我们用@dontwannacry域名登录可以进入admin页面

已经发现邮箱地址超出255字符后会被截断,构造一个超长的邮箱地址来注册

注册完成后去邮箱服务器验证,显示注册成功

在用注册的用户名和密码进行登录,发现登陆页面显示email地址刚好是我们截断后所需要的

在进入admin目录下,删除掉carlos即可

实验5 inconsistent security controls

 和上一关类似,我们先去注册一个账号,然后登陆。

可以看到,显示了我们注册的邮箱,并且下方有一个更新邮箱,不知道什么意思,尝试将邮箱更新成@dontwannacry

点击更新邮箱,发现邮箱直接变成了我们需要的格式,访问/admin并删除指定用户即可解决

 实验6 weak isolation on dual-use endpoint

先用给我们的账户登录,登陆后提示我们修改密码,但是并没有给我们邮箱信息,随便填一个邮箱试试,也成功修改了密码

不知道该做什么,尝试在修改密码时抓包看看,将其发送至repeater

可以发现,即使我们删除了请求包中的current-password,点击发送后仍然受到了200的状态码,说明有可能这样是可以成功的

所以我们将用户名改为administrator,再次抓包,将current-password删除,给这个账户重新设置一个密码即可,最后用administrator和刚设置的密码登录,删除掉指定用户即可过关

 实验7 insufficient workflow validation

先进入实验室,登录账号看看,发现是一个商店,先正常买一件便宜的商品并用burpsuite代理抓包,查看历史

post /cart/checkout页面会重定向至/cart/order-confirmation?order-confirmed=true这个页面,并且发现只要重放order-confirmation这个请求包,在购物车中的所有物品都会被购买

 于是在购物车中加入夹克,然后在下单时抓包并且在reperter中重放/cart/order-confirmation?order-confirmed=true这个包,然后问题就解决了

实验8 Authentication bypass via flawed state machine

在登陆时抓包,我们会发现在post/login之后会重定向至/role-selector这个包,需要让我们选择用户

 再次登录,放掉第一个包后,丢掉第二个包,也就是重定向的那个请求,然后再次访问主页,就会发现此时我们已经已管理员身份登录了,删除指定用户即可

实验9 flawed enforcement of business rules

 进入商店给了我们一个代码,猜测可能是优惠券之类的东西,并提示我们新用户可以使用

 所以,先注册一个新用户看看呗,貌似是给了新用户又一张优惠券

我们只需要交替使用两张优惠券即可,最终总价变为0,提交订单,问题解决

实验10 infinite money logic flaw

 这个无限货币听起来就令人心动

商店中有一个礼品卡,并且我们的账户也有兑换礼品卡的地方,先看看这是什么,新用户注册可以获得优惠券兑换码

 使用优惠券后为我们减掉了3🔪,我们先买一张看看

买完后给我我们一张礼品卡的兑换码,兑换之后账户就多了10🔪,本来有100🔪,花了7🔪买礼品卡,然后兑换成功后,我们就有103🔪。整体意思就是花7🔪返10🔪,每次赚3🔪,将这个过程重复个数次,我们就有足够的钱去买夹克了。我们现在需要做的就是如何自动的去赚这3🔪,以免大量的重复的做一件事情而发疯。

首先我们按下图做

在scope选项卡中选择include all urls

回到details,新建一个宏命令

 然后选择需要的url,并对其配置

为下图url添加code,点击add,编写名称gift-card,在代码中选中礼品码使其高亮

 为下图url配置gift-card,选择response4

 配置完成后可以先test一下

 回到burpsuite主界面,将GET /my-account发送至intruder

clear所有标记,选择sniper,然后设置payloads,最后开始攻击,等待攻击完成即可,选择412是因为每次增加3元,412次后就能买起夹克了。

静静的等待攻击完成,我们就解决了这个问题。

 实验11 authentication bypass via encryption oracle

先使用给定的账号密码登录进去,看看是什么样子,发表一条评论并抓包查看

 随意填写一个邮箱,会重定向至评论页面,但在重定向之前会加一个notification-cookie

并且发现,加密的notification-cookie会在之后的相应中解密

 将stay-logged-in cookie复制粘贴至此页面的notification-cookie,发现也能成功解密,解密相同则证明加密也是相同的,并且发现cookie是用户名:时间戳的格式

然后构造administrator:1632835605132的格式生成密文,然后再解密

因为是对称解密,所以明文和密文长度相同,现在只需将invalid email address:删除即可,将cookie发送至decoder,先进行url解密,在进行base64解密,并以hex形式查看,然后删除前23个字节,再将后面的依次加密成base64和url,在复制到解密点看能否成功。

第一次会失败,因为提示cookie必须是16字节的倍数才行,第二次先在administrator:1632835605132前加9个无用字符,然后加密,再将加密的cookie发送至decoder,按照上文所述一样操作,只不过这次要删掉前23+9=32个字符,在复制到解密点查看是否成功,如下图所示

然后再代理历史中,找到登录页面,发送至repeter,将cookie更换成自制cookie,然后删除session,相应成功,访问/admin界面,删除指定用户即可。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值