Pxiaoer Research
← Back to Blog API安全

API Badge

API 01

API 01

地址: https://pentesterlab.com/exercises/api_01/course

要求: In this challenge, your goal is to find the vulnerability that will allow you to access the key for this exercise. The user admin@libcurl.so has stored the key as a secret in their account. Try to retrieve it.

意思就是找到这个用户的保存的密码?

主要有两个功能,登陆和注册。

开始测试注册:

注册之后,是单个用户

测试发现了是可以保持密码的

我们的目标是 admin@libcurl.so保存的密码,那就看看去查询密码的逻辑是什么

发现查询的请求,GET 带了密码id

http://api-ptl-b6811efb-8292a0bb.libcurl.so/api/secrets/6

结果就是如上图所示,有密码的name和value值,拿尝试修改这个密码id,看看

直接更改id,得到404,但是在页面上点进去会成功,说明程序可能有判断refer之类的东西。 我们看从页面点进去带了说明参数。

直接输入URL的请求

可以发现带有认证的字段的

token为: Token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NSwiZXhwIjoxNjMxNTkwMzQ5fQ.j89UTxTHueGNdtNdC-AaKoCfrJkd4ptcthyDafIMHxM

可以看到是JWT sha256,为何后面跟着一个id 5? 这个是用户id? 再测试一下。

拿到另外一个token:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NSwiZXhwIjoxNjMxNTkwNTc1fQ.9zJqDWet77dm_fKLuDq-DB1w8KXVm333Fq2yGcj_aZo

解密:

{“typ”:“JWT”,“alg”:“HS256”}{“id”:5,“exp”:1631590575}s&ֺ޻vgʮઌp՛}Țf

那就是说过期时间在变,id 这个没有变化。

那我换一个账号,是否id为变,如果变了那就说明这个是用户id

我们在setting里面修改密码等操作,就可以确认这个是用户id