Shikata Ga Nai

Private? There is no such things.

脆弱性診断レベルについてかいてみた

Hello there, ('ω')ノ

 

下記は、おなじみのOWASP TOP10で。

 

 

経済産業省情報セキュリティサービス基準には。

あくまでも例示ではありますが、下記のように書いてあって。

 

・ OWASP の定める ASVS(Application Security Verification Standard)
レベル1以上


・ 独立行政法人情報処理推進機構による「ウェブ健康診断仕様」が定める
診断内容


・ OWASP が定める「Security Testing Guideline」


・ 日本セキュリティオペレーション事業者協議会及び OWASP による脆弱性
診断士スキルマッププロジェクトが定める「脆弱性診断ガイドライン」

 

f:id:ThisIsOne:20210305122525p:plain

 

下記が、ウェブ健康診断仕様で。

この中にはXXEについては記述がなく。

 

f:id:ThisIsOne:20210305121218p:plain

 

下記が、脆弱性診断ガイドラインで。

ここにはXXEについてはOS別の記述があって。

これらの問題は、更新がされていないという点で。

このような姿勢が世界に取り残される理由であって。

国のデジタル事業やアプリ開発のレベルを疑問視する理由だったりと。

 

f:id:ThisIsOne:20210305121649p:plain

 

さて、XXEの診断ですが。

Exploiting XXE to perform SSRF attacksを例にすると。

 

f:id:ThisIsOne:20210305115803p:plain

 

いきなり、脆弱性診断ガイドラインのペイロードを試す前に。

シンプルなDTDで構文チェックをしてからのほうがお勧めで。

エラーメッセージからどこに問題があるかを把握して。

 

<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe "hack" >]>
<foo>&xxe;</foo>

 

f:id:ThisIsOne:20210305115741p:plain

 

下記のように修正すると、エラーメッセージは構文にあるわけではないので。

<productId>&xxe;</productId>

 

f:id:ThisIsOne:20210305115652p:plain

 

慣れないうちは、少しずつ構文を変えてはエラーメッセージで把握して。

<!ENTITY xxe SYSTEM "hack" >]>

 

f:id:ThisIsOne:20210305115619p:plain

 

診断したいペイロードを完成させるようにステップバイステップのほうが。

勘違いして脆弱性を見逃すことはないのかと。

<!ENTITY xxe SYSTEM "file:///etc/hosts" >]>

 

f:id:ThisIsOne:20210305115533p:plain

 

次にBlind XXE with out-of-band interactionを例に。

 

f:id:ThisIsOne:20210305120745p:plain

 

ここで、脆弱性診断ガイドラインのペイロードを試すと。

記述どおりのレスポンスを確認できないので。

脆弱性なしと判断するのかと。

 

f:id:ThisIsOne:20210305120723p:plain

 

要は、脆弱性診断はそれほど簡単なものではなく。

ツール頼みだったり、マニュアルに頼るだけでは。

外部からの侵入を防ぐことはできず。

セキュリティに国境はないので。

日ごろのトレーニングを怠らずに。

常に世界レベルでスキルを身につけていくべきかと。

日本では、本やセミナー等を通じて有名になった者勝ちのような風潮もありますが。

本当に目指すレベルは、そういった有名人レベルなのだろうかと。

 

Best regards, (^^ゞ