原文:https://dewcode.medium.com/how-did-i-earn-by-breaking-the-back-end-logic-of-the-server-fd94882cbdf6
问题1:通过`null'值绕过输入验证
目标程序是Hotels High的自行开发的客户门户。客户可以预订他们的拜访。该程序针对可安全创建和修改数据的暂存环境。通常,会向客户提供客户注册码,以便他们进行预订。
我在测试应用注册工作流程中注意到,如果没有phoneNumber/email和其他必需参数,则无法创建预订。我在端点观察到一种可疑的行为,该行为使用户可以创建具有空值的预订。
{
"registerCode": "CS1337",
"gender": "male",
"booking_date": "2021-10-03",
"email": null,
"firstName": "first_name",
"lastName": "Last_name",
"gdprConfirmed": null,
"phoneNumber": null,
"booking_time": "14:50"
}
如果用户在代理历史记录中查找路径API/v1/rest/customer/booking/create/,将请求发送至中继器,并将email,gdprConfirmed,phoneNumber参数替换为空值,则他可以绕过后端验证和创建预订。

验证后,我将此问题提交给了intigriti小组,他们确认这是一个有效的安全问题,两天后他们接受了我的报告并授予了我一笔赏金。
问题2:通过空数组公开信息[]
在以低特权用户身份测试应用程序时。我找到了一个端点,可以使我们访问预订数据。我注意到了这个终点event/api/v1/booking?page=0&perpage=25&pagesize=25&sort=%2BbookingDate&sortby=bookingDate&ascending=true&bookingdatefrom=<DATE>&visitdatefrom=<DATE>。
当用户向上述端点发出GET请求时,他将得到一个空响应。

但是,如果用户发出GET请求并在bookingdatefrom参数后附加一个空数组[],则他可以访问预订数据。

我立即将此问题提交给了intigriti小组,他们确认这是有效的安全问题,接受了我的报告,并授予了我一笔赏金。
译者按:
通过空值,空数组替换必要参数造成后端逻辑错误,使后端进入不正常的逻辑或是抛出敏感信息又或是绕过参数验证。在测试中这种类型的还蛮多的,算是一个小tips。
本文迁移自知识星球“火线Zone”