WebSecurityAcademyのGraphQLのラボを。
問題(機械翻訳):
このラボのユーザー管理機能は、GraphQL エンドポイントを利用して。
このラボには、API にユーザー資格情報フィールドを公開させることができるアクセス制御の脆弱性が含まれて。
ラボを解決するには、管理者としてサインインし、ユーザー名 carlos を削除して。
さっそくやってみる。
ログインのクレデンシャルは指定されていないので、いつものようにページを探索。
BurpSuiteのhistoryをみてみると、GraphQLのエンドポイントと思しきものが。
いつものようにRepeaterに送り、Send。
このURLをコピーして、InQL Scannerに貼り付けてLoadして。
Schemaが色々と出てくるので、そのなかから「getUser.query」が使えそうで。
query {
getUser(id:1334) {
password
id
username
}
}
上記のクエリーをエンドポイントのリクエストのInQLに貼り付けると。
200 OKが返ってくるけど、errorsが表示され。
エラーメッセージを見ると、getBlogSummaries が邪魔してそうなので、リクエストのボディからこれを削除してみて。
再度InQLに戻り、idを0から試してみるとnullが返り。
インクリメントして次を試してみる、id:1。
usernameとpassword が表示され。
このクレデンシャルでログインを試してみて。
ログインができ、Admin panelも表示され。
carlosをdeleteすると、
解決でけて。
ほなほな。