Nickセキュリティログ

ハニーポット、バグバウンティ、CTFなどなどセキュリティ関係のことを備忘録がてら書いていきます

脆弱性診断メモ

f:id:NickShadows:20190808114000j:plain

個人的脆弱性診断メモ
※ここの情報は脆弱性診断、バグバウンティなどのセキュリティを守る目的のみで使用するものとし、悪用は厳禁です




目的

Webの脆弱性について学ぶことでより確実・効率的に脆弱性診断を出来るようにする。
そしてWebのセキュリティ向上に貢献する。




参考資料

OWASP 脆弱性診断士スキルマッププロジェクト

www.owasp.org

通常パラメータ

XSS(反射)

  1. 入力値が反射されるか
  2. 反射される場合:特殊文字がエスケープされるか

ペイロード

">XSS
<script>alert(1)</script>
javascript:alert(1)
'+alert(1)+'



反射している場所も確認すること。
イベントハンドラ、URL値、javascript内だったら気をつける。




SQLインジェクション

  1. 表示されるデータに変化があるか



ペイロード

'
''
1/0
' and 'a'='a
' and 'a'='b



SQLのエラーが発生しないか、表示されるデータに過不足がないか。
and条件の場合、認証や処理などが正常終了と異常終了になるか。




コマンドインジェクション

  1. 表示されるデータに変化があるか



ペイロードは脆弱性診断プロジェクトと同一。




レスポンスが入力通り遅れるか。
実務で検出された経験が無いため、詳細は不明。




CRLFインジェクション

  1. ヘッダに値が追加されているか



ペイロードは脆弱性診断プロジェクトと同一。




メール、HTTPヘッダに改行が反映されるか。
実務で検出された経験が無いため、詳細は不明。




認可制御の不備

  1. 権限管理のパラメータがあるか
  2. ある場合、本来権限が無いデータをパラメータ値変更で見れるか





以下の場合、注意する。

  1. ファイル名
  2. ID
  3. 名前
  4. 識別番号





値変更パターン

  1. 数値変更
  2. ID変更
  3. 名前変更(システムに登録されている名前)
  4. 推測した識別番号





認証の不備

  1. 認証が必要なページが直接見れるか



ログイン必須ページ、パスワード再設定など。




オープンリダイレクト

  1. URL値をパラメータとしているか
  2. している場合、そのURLでリダイレクトされているか



ペイロード

http://www.example.com/
//www.example.com/
@www.example.com/



想定外の外部サイトにリダイレクトされなければOK




ファイル名パラメータ

パストラバーサル

  1. 入力したファイルの内容が表示されるか



ペイロードは脆弱性診断プロジェクトと同一。


表示させようとしているファイルの内容を把握する必要あり。
/etc/hosts

ja.wikipedia.org



/windows/win.ini www.weblio.jp





決定処理

XSS(格納)

  1. 入力した内容が保存されるか
  2. 保存される場合、エスケープされているか



ペイロードは反射と同じ。
どこに保存内容が反映されているか確認すること。




SQLインジェクション、CRLFインジェクション、コマンドインジェクション

通常パラメータと同じ。
どこに反映されているか注意する。


認証回避

通常パラメータと同じ。




認可制御

  1. 他ユーザとして決定処理が可能か



観点は通常パラメータと同じ。




CSRF

  1. トークンが無いか
  2. ローカルのHTMLから実行できるか



burp proの機能を使ってペイロードを作成して確かめる。




クリックジャッキング

  1. X-Frame-Optinが「DENY」「SAMEORIGIN」「ALLOW-FROM (uri)」のいずれか



設定されていたらOK




設定関連

ディレクトリリスティング

  1. 不要なファイルが公開されてないか



dirsearchを使うと手っ取り早い。




不要なHTTPメソッド

  1. TRACE、TRACK、DELETE、PUTが使用できないか



使用できなければOK
APIの場合は仕様を確認すること。




バージョン情報

  1. 使用しているソフトウェア、ミドルウェア、サーバのバージョンが見えるか
  2. 見える場合、脆弱性があるバージョンか



burpのRetire.jsを使うと手っ取り早い。




cookieの属性設定

  1. secure属性、httponly属性があるか



burpのpassive scanを使うと手っ取り早い。




クエリストリング情報の漏洩

  1. URLにセッションなどの重要情報がないか



burpのpassive scanを使うと手っ取り早い。




キャッシュからの情報漏洩

  1. 重要情報を含むページがキャッシュされていないか



burpのpassive scanを使うと手っ取り早い。




セッションの推測

  1. セッション値が推測できるものであるか



以下の観点でいる。

  1. 連番でないか
  2. 規則正しく増減しているか
  3. 同じ文字が含まれているか



認証関連(ログアウト、ログイン、アカウントロックなど)

脆弱性診断プロジェクト通り。




まとめ

ここに載ってないものは私が理解していないかあまり見たことがないものです。
随時更新して充実させていきます。


TODO

  1. RFI
  2. XXE