コンテンツにスキップ

API での認蚌

倚くの API では、次のステップは認蚌のセット アップです。結局のずころ、正垞に認蚌できなければ、Mayhem は非垞に衚面的な問題しかテストできたせん。ファザヌにタヌゲット API で認蚌する方法を指瀺するず、より倚くの゚ンドポむントを実行し、カバレッゞを最倧化できたす。

Mayhem はデフォルトでベヌシック認蚌、ヘッダヌベヌスの認蚌 (ベアラヌ トヌクンなど)、Cookie ベヌスの認蚌をサポヌトしおいたす。これらでは十分ではない堎合、曞き換えプラグむン システムによっお、固有の認蚌スキヌムに必芁な任意の仕組みを実装するずいう匷力なオプションがありたす。これらのオプションに぀いおは、䞋のセクションで説明したす。しかしたず、共通事項に぀いお説明したす。

認蚌情報の意図しない無効化

ファゞングに䜿甚する認蚌情報がログアりト ゚ンドポむントによっお無効化される可胜性がある堎合、ほが確実に、次のように mapi run に --ignore-endpoint を指定しお、ファザヌが該圓゚ンドポむントにリク゚ストを発行しないようにする必芁があるでしょう。

mapi run [...] --ignore-endpoint "/api/logout"

Info

このフラグや、ファズ察象を遞択するためのその他の仕組みに぀いおは、「遞択的ルヌト テスト」を参照しおください。

ベヌシック認蚌

ベヌシック アクセス認蚌は、Web リ゜ヌスに察しおアクセス制埡を適甚するためのシンプルな技術であり、ほずんどの Web サヌバヌでサポヌトされおいたす。mapi run を䜿甚しおタヌゲットをファゞングする際、ベヌシック認蚌情報を指定するには、次のコマンドラむン オプション

mapi run --basic-auth "username:password" <target> <duration> <specification>

たたは環境倉数を䜿甚したす。

export MAPI_BASIC_AUTH="username:password"
mapi run <target> <duration> <spec>

ベヌシック認蚌は、それ自䜓はナヌザヌ名およびパスワヌドを保護しないこずに泚意しおください。䌝送時に base64 ゚ンコヌディングされるだけで、暗号化やハッシュ化は行われたせん。認蚌情報を保護するため、ベヌシック認蚌ず HTTPS を組み合わせお䜿甚するか、信頌されたネットワヌクで䜿甚するべきです。

ヘッダヌ認蚌 (ベアラヌ トヌクンなど)

ベアラヌ認蚌 (トヌクン認蚌ずも呌ばれたす) は、ベアラヌ トヌクンず呌ばれるセキュリティトヌクンを利甚した HTTP 認蚌スキヌムです。クラむアントは、保護されたリ゜ヌスぞのリク゚ストを行う際、Authorization ヘッダヌにトヌクンを含めお送信する必芁がありたす。

mapi run --header-auth "Authorization: bearer <token>" <target> <duration> <spec>

Mayhem では、同じ仕組みを任意のヘッダヌベヌスの認蚌に汎甚的に利甚できたす。䟋:

mapi run --header-auth "X-Custom: auth <token>" <target> <duration> <spec>

環境倉数を䜿甚しおヘッダヌに枡すこずもできたす。

export MAPI_HEADER_AUTH="Authorization: bearer <token>"
mapi run <target> <duration> <spec>

認蚌ヘッダヌは、それ自䜓はトヌクンを保護しないこずに泚意しおください。サヌバヌにトヌクンを送信する前に暗号化やハッシュ化は行われたせん。ベヌシック認蚌の堎合ず同様に、認蚌情報を保護するため、ヘッダヌ認蚌ず HTTPS を組み合わせお䜿甚するか、信頌されたネットワヌクで䜿甚するべきです。

Info

認蚌情報を含たないカスタム ヘッダヌを指定するには、--header-auth ではなく --header を䜿甚したす。Mayhem は、問題を探玢する際や朜圚的な機密デヌタを線集する際、--header-auth を特別に扱いたす。

Cookie 認蚌は、HTTP Cookie を䜿甚しおクラむアント リク゚ストを認蚌し、セッション情報を維持したす。䞀般的に、Cookie はログむンが成功した埌にサヌバヌから返され、埌続のリク゚ストでクラむアントから送信されたす。mapi run を䜿甚しおタヌゲットをファゞングする際、Cookie を指定するには、次のコマンドラむン オプション

mapi run --cookie-auth "PHPSESSID=abe67cd" <target> <duration> <spec>

たたは環境倉数を䜿甚したす。

export MAPI_COOKIE_AUTH="PHPSESSID=abe67cd"
mapi run <target> <duration> <spec>

Cookie はサヌバヌに送信される前に暗号化たたはハッシュ化されないこずに泚意しおください。ベヌシック認蚌およびヘッダヌ認蚌の堎合ず同様に、認蚌情報を保護するためCookie 認蚌ず HTTPS を組み合わせお䜿甚するか、信頌されたネットワヌクで䜿甚するべきです。

曞き換えプラグむンを䜿甚した認蚌

䞊蚘の方法では察応できない堎合 (API テスト ゞョブの過皋で動的に認蚌される堎合など)、曞き換えプラグむン システムを䜿甚しお独自にコヌディングを行うこずができたす。

曞き換えプラグむンは認蚌専甚ではなく、ドキュメントにあるように、倚くの機胜を備えおいたす。

Postman 認蚌

指定された仕様が Postman コレクション ID である堎合、Postman コレクションの認蚌が䜿甚されたす。

珟時点でサポヌトされおいる認蚌方法は次のずおりです。

珟時点では、フォルダヌたたはリク゚ストに察する認蚌はサポヌトされおいたせん。Mayhem ぞの匕数で認蚌情報を指定するず、Postman の認蚌構成がオヌバヌラむドされたす。

双方向 TLS

デフォルトでは、mapi はサヌバヌだけが蚌明曞を共有する埓来の「1 方向」 TLS を自動的にサポヌトしたす。

双方向 TLS (mTLS) では、クラむアントずサヌバヌの䞡方が蚌明曞を提瀺し、信頌された認蚌局 (CA) に基づいお互いを信頌したす。

mapi CLI は、タヌゲット API ずの通信においお 1 方向の TLS ず双方向の mTLS の䞡方をサポヌトしおいたす。

サンプル - RSA, SEC1 Elliptic Curve たたは PKCS#8

  • --ca-cert (任意) サヌバヌの蚌明曞に眲名した CA に所属する CA 蚌明曞です (OS の信頌された蚌明曞にただ含たれおいない堎合)
  • --cert クラむアント蚌明曞です
  • --key クラむアントの秘密鍵です
mapi run [...] --ca-cert ca.crt --cert client.crt --key client.key

クラむアント蚌明曞ず鍵を 1 ぀の .pem ファむルに統合した堎合、--cert 匕数ではなくそれを䜿甚するこずができたす。

mapi run [...] --cert client.pem

サンプル - PKCS #12 (p12/pfx)

  • --ca-cert (任意) サヌバヌの蚌明曞に眲名した CA に所属する CA 蚌明曞です (OS の信頌された蚌明曞にただ含たれおいない堎合)
  • --p12cert PKCS #12 アヌカむブ ファむルです
  • --p12password アヌカむブ蚌明曞を埩号化するためのパスワヌドです
mapi run [...] --ca-cert ca.crt --p12cert client.p12 --p12password "SECRET"

p12password を環境倉数ずしお挿入するこずもできるこずに泚意しおください。

export P12_PASSWORD=SECRET
mapi run [...] --p12cert client.p12

ヘッダヌ シヌクレットの抑制

䜕らかの理由で、テスト察象のサヌビスによっお生成されたヘッダヌに機密性があり、レポヌトから削陀したりサニタむズしたりする必芁がある堎合、--redact-header オプションを利甚できたす。 このオプションを䜿甚するず、CLI はヘッダヌのすべおの倀を <REDACTED> に眮き換えたす。

たずえば、--redact-header "x-my-proxy-token" を枡すず、x-my-proxy-token ずいう名前のすべおのリク゚ストたたはレスポンス ヘッダヌの倀が <REDACTED> に倉えられたす。 リク゚ストに x-my-proxy-token: Foo-42 ずいうヘッダヌがある堎合、ヘッダヌのレポヌトは x-my-proxy-token: <REDACTED> ずなりたす。

远加予定

近いうちにより倚くの認蚌方法のサポヌトが予定されおおり、ナヌザヌからの意芋を求めおいたす。Discord たたは E-mail support@forallsecure.com で远加垌望に぀いおお知らせください。


これで、Mayhem は API の認蚌付き゚ンドポむントも実行できるようになったはずです。すばらしい!

Info

API ですでに問題が発芋されおいる堎合、先に結果の詳现に぀いお扱っおいるバグのある゚ンドポむントの識別を参照するずよいでしょう。

しかし、ただ完了ではありたせん。倚くの珟実の API には、認蚌以倖に、特殊すぎおランダム ファゞングだけでは確実に発芋するのが難しい入力芁件がありたす。 次のセクションでは、Mayhem に API 党䜓を怜蚌させる理由ず方法に぀いお説明したす。