burpsuite靶场逻辑漏洞

靶场地址 All labs | Web Security Academy (portswigger.net)

说明:靶场的每一题都不会漏,关卡名字都是浏览器直译。可以不看名字直接数第几关,都是按顺序写的


1.对客户端控件的过度信任

描述:此实验室未充分验证用户输入。您可以利用其采购工作流程中的逻辑缺陷以意外价格购买商品。要解决实验室问题,请购买“轻巧的l33t皮夹克”。

您可以使用以下凭据登录自己的帐户:wiener:peter

思考:根据描述应该是修改价格的支付漏洞

一般修改价格的支付漏洞有几个点

1.商品添加到购物车时

2.生成订单时

3.由订单生成付款时

解决;

登录(账号)wiener (密码)peter 之后

进入要求修改价格的夹克衫

点击添加到购物车时抓包

发现带有价格的数据包

修改价格为1之后放包

进入购物车即可成功下单


2.高级逻辑漏洞

描述:此实验室未充分验证用户输入。您可以利用其采购工作流程中的逻辑缺陷以意外价格购买商品。要解决实验室问题,请购买“轻巧的l33t皮夹克”。

您可以使用以下凭据登录自己的帐户:wiener:peter

依然是支付漏洞

但是在添加到购物车里的时候已经没有价格参数

那就从数量参数上入手

尝试添加 0.1 等数量的产品 但是页面出现报错

那么就添加负数 发现成功添加

点击结账发现提示说 付款总价不能低于0

因此添加其他商品将金额大于0 即可

成功购买之后发现漏洞还未解决

反过来添加正常价格的夹克衫,添加其他商品的负数即可


3.安全控制不一致

描述:

此实验室有缺陷的逻辑允许任意用户访问应仅对公司员工可用的管理功能。要解决实验室问题,请访问管理面板并删除 Carlos。

首先要找到管理面板

本打算扫描一下后台,蒙了一个/admin 发现对了

发现需要用户DontWannaCry才可以访问管理面板

进入到注册页面

根据提示我们使用anything@your-email-id.web-security-academy.net格式的邮箱进行注册

点击 email client

根据他提供的邮箱进行注册

尝试进行注册

成功注册并且登录

然后将你的邮箱改为 xxx@dontwannacry.com

即可访问admin页面

删除carlos完成靶场

根据说明,这一关的网站是该公司的内部账号及 xxx@dontwannacry.com格式的邮箱进行验证,邮箱为改格式就有权访问admin页面。

漏洞点:网站对邮箱更改验证不合格


4.有缺陷的业务规则执行

概括就是交替使用优惠卷,打骨折

钱包还剩100刀了

找到第一个优惠卷

下拉

底部有一个填邮箱的框,随便填一个得到第二个优惠卷

1
2
NEWCUST5
SIGNUP30

接下来把最贵的商品加到购物车

跳到结算页面

交替使用优惠卷可以重复打折

购买成功即为完成实验


5.低级逻辑缺陷

根据提示,把皮夹克下单之后余额不足订单被拒绝

打开

http history 找到 POST /cart

发包到 intruder

准备进行测试 quantity的值改为99 quantity=99

进行爆破

爆破一段时间之后查看购物车发现

金额太过于庞大,反而成了负数,价格已超过后端编程语言中整数允许的最大值 因此,该值已循环回可能的最小值

这时候挑另一件商品进行相同的操作,然后把价格加的正数且低于100.然后下单即可完成

由于后台限制每次只能添加99,爆破过程有点久,而且价格也不好把控,可以直接照抄份数

下单即实验完成


6.异常输入处理不一致

此实验室未充分验证用户输入。您可以利用其帐户注册过程中的逻辑缺陷来访问管理功能。要解决实验室问题,请访问管理面板并删除卡洛斯。

这一关完成方法和第三关一样都是要访问admin页面删除Carlos

根据提示,使用一个过长的邮箱进行注册,网站会因为过长而把邮箱截断,这就可以构造一个very-long-stringm@dontwannacry.com的邮箱,然后访问admin

进入邮箱工具

给出的邮箱格式为

@exploit-0ad700710395f84ec08f28cc01ae00b7.exploit-server.net

抓取一个注册包,构造一个很长的邮箱进行注册

注册成功之后进行登录

可以发现我们的邮箱因为太长而被网站截断,而截断长度为255

因此我们需要构造一个邮箱刚刚 xxxxx@DontWannaCry.com长度刚好为255

然后我们使用他进行注册

登录之后查看我的邮箱

成功构造截断

成功访问admin页面

删除carlos完成实验


7.两用端点上的弱隔离

登录账号之后进行密码修改

提交进行抓包

把current-password=peter删除

漏洞点

如果把current-password=整个键值删除,那么后端就不会对这个参数检验,所以我们可以利用此漏洞对administrator账号进行密码修改

登录之后删除Carlos完成实验

8.工作流验证不足

登录之后,随便下单一个低于100的商品,找到

GET /cart/order-confirmation?order-confirmed=true 的包

对他重新发包

返回

“You have not checked out”

观察这个包并没有对应的商品参数。而当发出这个包时,会购买成功。那应该是当发出这个包时,会把购物车里的东西全部购买

现在往购物车添加皮夹克

回到burp发包

发现成功购买并且完成实验


9.通过有缺陷的状态机绕过身份验证

登录之后发现要选择身份

但是没有admin,访问admin页面提示权限不足

接着注销之后回到登录页面进行抓包

登录请求会发送两个包 把第二个包删除

然后回到网站主页发现,以及可以访问admin页面

第二个包发出用于确认用户身份、权限等,删除这个包会得到默认权限即admin

11.无限金钱逻辑缺陷

登录账号之后 进入首页下滑找到注册通讯录

然后可以获得一张卷

SIGNUP30

然后随便找一个买得起的一个东西下单 并用上优惠卷

购买成功之后会返回一个code

返回钱包兑换

使用之后会返现回你的钱包

第一个码是优惠卷可以让商品打折

第二是返现码,可以把商品价格的金额返现,注意这里是返现未打折的商品价格,意思就是我不仅花钱还倒赚,因为如果无限重复这些步骤那岂不是可以无限刷钱

只要按照顺序请求这些包就可以刷

1
2
3
4
5
POST /cart     //将商品添加至购物车
POST /cart/coupon //使用优惠卷减少商品价格
POST /cart/checkout //付款购物车
GET /cart/order-confirmation?order-confirmed=true //根据付款情况确定是否返回code
POST /gift-card //code兑换

因此我们尝试使用burp创建一个项目帮我们完成这些步骤,

使用burp project options 点击session 然后add

点击添加,选择run macro

然后再点击添加

接下来就来到选择页面,这里有个坑,需要把前面提到的五个包全部选上,我第一次用的时候还不知道怎么多选,按住ctrl 再点击即可多选

选择好之后选择

1
GET /cart/order-confirmation?order-confirmed=true 

给这个配置起名为gift-card 鼠标选择code返回码 插件会自动生产正则表达式帮我们在返回包中筛选出code

然后配置第五个包 POST /gift-card //code兑换,只需要把gitf-card选项改为接收第四个返回包即可

配置结束之后点击测试

结果如图,第四个包返回值为200 而且其成功把code返回则配置成功

然后在HTTP历史里选择一个无关的包发送到intruder然后进行爆破

接下来常规操作就不贴图片了

进行无payload 爆破420次可以把钱包里的余额增大到可以购买皮夹克,爆破时把线程调低,速度不能太快

然后就可以购买完成实验


12.通过加密预言机绕过身份验证

登录时打勾保持登录

随便访问一篇文章,进行评论当你输入的邮箱格式正确,可以成功提交评论

当输入格式错误的邮箱如qqq.com时会被重定向,而且报错

会把错误的邮箱打印到页面

然后把下面两个包发送到repeater

1
2
/post/comment 提交评论 错误则被重定向
/post?postId=6 错误引起的重定向

观察这两个包的cookie

/post/comment

/post?postId=6

都有三个参数但是notification的值不同,而且notification的翻译是通知把

stay-logged-in 的值赋予notification 发包发现 /post?postId=6的响应包里出现了

这是用户名:时间戳格式

那么说明stay-logged-in的参数被解密,那么我们就可以构造admin用户的stay-logged-in获取admin权限

而/post/comment 的返回包里带有notification 并且与 /post?postId=6的请求包里的值是一样的说名这个就是 Invalid email address: 123qq.com 加密之后的秘文

所以我们构造邮箱

现在将/post/comment 的包改名为加密

/post?postId=6的包改为解密

方便下文书写

然后进行加密发包,把返回包里notification的值带到解密包 替换解密包的notification然后发包进行解密

发现确实如此

所以如果可以把 Invalid email address:去掉就可以剩下用户名和时间戳 然后加入stay-logged-in获取admin权限

现在使用burp的decoder模块对密文进行解密构造

这里我获取的密文为

1
ALWhCvy0GoemMqUBahotT7Jk3VdATUrE5sRurzsbrRZBZnVKAQ1nvHnYnJU%2b112g2X%2fT2zL0FI9cZpQyIHIXGg%3d%3d

然后进行构造顺序为

1
url解密->base64解密->删除前23个字节(删除前缀)->base64加密->url加密

处理之后密文为

1
%4c%6a%31%55%4e%4c%4b%51%4f%6c%6a%42%6b%68%7a%58%6a%4c%45%76%77%76%65%73%35%54%4e%4b%69%41%4d%74%54%49%4a%53%55%35%54%78%67%78%30%4a%4a%7a%4c%71%38%36%57%4f%41%36%53%54%66%2b%6b%2f%4b%67%3d%3d

然后带到解密包进行解密

提示说密文必须是16的倍数

那把邮箱部位构造成

1
xxxxxxxxxadministrator1668519413419 在前面添加九个字符

然后再进行一遍构造

1
url解密->base64解密->删除前32个字节(删除前缀)->base64加密->url加密

得到密文

1
%37%72%43%45%2b%56%69%31%4a%4a%6e%67%66%51%6e%62%38%56%53%32%6a%45%6d%62%49%61%65%4e%58%58%5a%65%33%6a%6a%6e%68%62%63%35%4f%41%55%3d

然后开启拦截访问home页面,填入构造好的密文,放包即可访问admin页面,

然后删除carlos完成实验


到此burp靶场的所以逻辑漏洞完结


burpsuite靶场逻辑漏洞
http://example.com/2022/11/10/burpsuite靶场逻辑漏洞/
作者
QY
发布于
2022年11月10日
许可协议