设计不佳的冠状病毒UX测试如何几乎使我们孤立,但安全漏洞挽救了我们



这就是我,写了一个脚本来遍历位于克罗地亚边界前对gov.tr的POST请求的参数。



一切如何开始



我和妻子环游世界,远程工作。最近,我们从土耳其搬到了克罗地亚(欧洲最适合打电话的地点)。为了避免在克罗地亚隔离,您需要在入境前48小时内取得一份针对covid的阴性分析证书。



我们发现这是相对有利可图的(2500卢布),并且很快(所有结果在5个小时之内)就在我们刚刚起飞的伊斯坦布尔机场进行了测试。



我们在出发前7小时到达机场,找到了一个测试点。他们无所事事:您拿起护照,付款,获得2张条形码贴纸,然后去流动实验室,他们从您那里拿走其中一张贴纸以识别您的分析。然后您出去,他们告诉您:转到此站点:enabiz.gov.tr/PcrTestSonuc,输入条形码和护照的后4位,过一会儿您将得到结果。







但是,如果您在分析后立即输入数据,则页面将显示错误。









即使那样,“出色的”用户体验的想法仍在我脑海中浮现,在这种情况下,无论操作员谁犯了护照数据,都不会发现他的结果。



在出发前



出发的时间到了,尽管没有测试结果,我仍在查看数据,尽管已经有了文件。









甚至可以看出,测试是在1.5小时前到达实验室的。但是我妻子的数据输入仍然引发错误,即未找到任何记录。最重要的是,您将不能仅仅去问哪里出了问题,因为 我们在护照检查之前的区域通过了测试。



登机时,他们要求我们提供测试结果,但是幸运的是,我们能够说服机场代表他们很快就会出现(向他们显示条形码),并且作为最后的选择,我们将进行隔离。



我登上飞机后,信息立即在我的代码中显示我的测试结果是否定的。







抵达时



这就是乐趣的开始!当我们到达并连接到本地WiFi时,事实证明我妻子的记录仍不在数据库中。在边境本身,他们非常仔细地处理了这些文件:边防警卫进行了冠状病毒检测,然后将它们带到单独的房间检查其真实性。我们决定说出真实的故事,并找出我们有什么选择。



在排队的时候,我决定检查正确的(我的)和不正确的数据,以及验证页面的反应。原来



,她正在使用以下参数www.enabiz.gov.tr/PcrTestSonuc/GetPcrRaporVerifyWithKimlik发送发帖请求



barkodNo = XX

kimlikNo = YY

kimlikTipi = 2

其中barkodNo是条形码编号,kimlikNo-护照号码,kimlikTipi-等于2的固定参数(如果仅填写前两个字段)。没有标记可见。这个请求给出了1个正确的参数(我的数据),0个错误的参数



,我从邮递员那里尝试了40多种组合(突然出现一个字符错误),但是没有任何结果。



那一刻,我们走近边防部队,他听了我们的故事并提供了隔离。但是我们显然不想在公寓里呆14天,因此我们要求在过境区稍等一下,以便尝试在几个小时内解决问题。边防警卫进入我们的位置,去了解我们是否可以坐在白色区域,并在团长的同意下说:“好,只需几个小时”。



我开始寻找进行电晕测试的人员的电话号码,同时决定测试一种疯狂的假设:如果该系统具有如此糟糕的用户体验,尽管gov.tr,但安全系统应该不是很好。



结果,在通话时,我写了一个小脚本,对kimlikNo字段中从0000到9999的所有数字进行了迭代。 barkod我们在标贴上没有,所以没错。



试想一下,即使在连续发出500个请求之后,我也没有被禁止,并且脚本从机场WiFi继续以每秒20个请求的速度运行,我感到惊讶。



通话不是很成功:我从一个部门ĸ转到了另一个部门。但是很快脚本就产生了令人垂涎的价值6505,这根本不像护照上的实数四位数。



上载文件后,事实证明,这显然不是我妻子的护照(俄罗斯外国人甚至没有这个号码),但是所有其他数据(包括名字,姓氏和出生日期)都是正确的。







最有趣的是条形码也不是随机的,而是几乎一一对应。因此,从理论上讲,我可以找到拥有我妻子的护照号码的联系人,并且通常可以顺利地抽取其他人的私人数据。



但是那是早上9点零一夜,我没有睡觉,我参加在线会议很晚,很高兴他们能不加隔离地让我们通过,所以我才刚开始穿越欧洲。



All Articles