【要約】パスワードを知らずに「SSHのパスワード認証が有効か」を判定する—ブラックボックス脆弱性診断の小技集 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
診断者が、ソースコードや認証情報を持たない環境で、内部設定の把握に苦慮している。具体的には以下の課題がある。
- ・SSHの認証方式が有効か、正しいパスワードなしでは判別できない。
- ・
requests等のライブラリが、攻撃ペイロードを自動で正規化してしまう。 - ・CSRF対策の有無を、サーバー側のロジックを見ずに判断できない。
// Approach
診断者は、外部から観測できる挙動の差異を利用し、内部状態を推測する手法を採用する。具体的な手法は以下の通りである。
- ・SSH:
paramikoの例外(BadAuthenticationTypeとAuthenticationException)を区別して判定する。 - ・Path Traversal:
%2e%2e/を用いてライブラリの正規化を回避し、root:等の文字列で検知精度を高める。 - ・CSRF: フレームワーク特有の命名規則に基づき、
hiddeninput の属性を走査する。
// Result
診断者は、限られた情報からでも誤検知を抑えつつ、脆弱性の兆候を効率的に特定できる。成果は以下の通りである。
- ・SSH認証の有効性を、正しいパスワードなしで判定可能。
- ・ライブラリの仕様に阻害されず、正確なパストラバーサル検証が可能。
- ・ヒューリスティックな手法により、CSRF対策の有無を推定可能。
Senior Engineer Insight
> 非常に実践的な知見である。特にライブラリの仕様(
requests の正規化)を回避する視点は、自動化ツール開発において不可欠だ。ただし、これらはあくまで「推測」である。スキャナに組み込む際は、偽陽性を考慮した閾値設計が重要となる。単一の挙動だけでなく、複数の状況証拠を組み合わせる設計が求められる。