Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Easybuggy(バグ)の召し上がり方

1,291 views

Published on

Easybuggyの効果的な使い方

Published in: Education
  • Be the first to comment

Easybuggy(バグ)の召し上がり方

  1. 1. EasyBuggy (バグ)の 召し上がり方
  2. 2. 自己紹介 名前: 田村 広平 • Twitter: tamura__246 • OpenAMコミッター • EasyBuggy開発者 • ∴トラブル★メーカー
  3. 3. 自己紹介 • 日経Linux「統合認証からSSOまで」 • CodeZine「OpenAMで始めるSSO」 • @IT「OSSによるID管理」 • @IT「認証の動向とOpenAMの事例」 • @IT 「keyclaok入門」(執筆中) • Qiita など こんなアイコン つくってみたり
  4. 4. 今日お話しすること • EasyBuggyって? • 特徴は? • 美味しい召し上がり方 • 最後に一言二言
  5. 5. 今日お話しすること • EasyBuggyって? • 特徴は? • 美味しい召し上がり方 • 最後に一言二言
  6. 6. EasyBuggy って?
  7. 7. Tomcat組込の Webアプリ
  8. 8. ただし...
  9. 9. バグだらけ StackOverflowError 打ち切り誤差 デッドロック メモリリーク 無限ループ スレッドリーク 丸め誤差 文字化け +演算子による性能低下 情報落ち データベースコネクションリーク ネットワークソケットリーク ファイルディスクリプタリーク OutOfMemoryError 整数オーバーフロー 完了しないプロセスの待機 NoClassDefFoundError フォワードループ 不要なオブジェクト生成による遅延 JVMクラッシュ 正規表現解析による遅延
  10. 10. そして...
  11. 11. XSS CSRF SQLインジェクション 脆弱性だらけ ヌルバイトインジェクション 拡張子無制限のファイルアップロード サイズ無制限のファイルアップロード クリックジャッキング ブルートフォース攻撃 セッション固定攻撃 メールヘッダインジェクション OSコマンドインジェクション パストラバーサル オープンリダイレクト コードインジェクション リモートファイルインクルード 過剰なログインエラーメッセージ 意図しないファイル公開 LDAPインジェクション XXE XEE
  12. 12. つまり
  13. 13. やられWebアプリ
  14. 14. 今日お話しすること • EasyBuggyって? • 特徴 • 美味しい召し上がり方 • 最後に一言二言
  15. 15. 特徴
  16. 16. ① 超早い
  17. 17. $ java -jar easybuggy.jar • Githubからダウンロード • http://localhost:8080 にアクセス 3秒お待ち下さい
  18. 18. ② 超簡単
  19. 19. 脆弱性の攻撃方法も解説
  20. 20. ③ OSS
  21. 21. /** * Encode data for use in HTML using HTML entity encoding * Note that this method just call * <code>ESAPI.encoder().encodeForHTML(String)</code>. * * @param input the text to encode for HTML * @return input encoded for HTML */ protected String encodeForHTML(String input) { return ESAPI.encoder().encodeForHTML(input); } コードを見れば、 原因が分かる
  22. 22. 1機能:1サーブレット 1機能:(1ファイル) 単純なファイル構成
  23. 23. デモ
  24. 24. まずは起動します
  25. 25. 次にコード インジェクション を実行します
  26. 26. JVMが 停止しました
  27. 27. 今日お話しすること • EasyBuggyって? • 特徴 • 美味しい召し上がり方 • 最後に一言二言
  28. 28. バグの美味しい 召し上がり方
  29. 29. Step1: バグを知る
  30. 30. ○×銀行か らの連絡だ 例えば、オープンリダイレクト しらないうちに攻撃者 のサイトへリダイレクト IDとパスワードを入手 ○×銀行を偽装 したメールを送信
  31. 31. Qiita - 脆弱性を 攻撃してみよう (2) オープンリダイレクト
  32. 32. Step2: 問題を再現する
  33. 33. 実際にやってみる
  34. 34. Step3: コードを読む
  35. 35. String gotoUrl = request.getParameter("goto"); if (gotoUrl != null) { response.sendRedirect(gotoUrl);
  36. 36. Step4: コードを直す
  37. 37. String gotoUrl = request.getParameter("goto"); if (gotoUrl != null && isValidGoto (gotoUrl )) { response.sendRedirect(gotoUrl); チェックメソッド を追加
  38. 38. Step5: 結果を確認する
  39. 39. ○×銀行を偽装 したメールを送信 ○×銀行か らの連絡だ 対策後 未登録のURLへの リダイレクトをブロック
  40. 40. 今日お話しすること • EasyBuggyって? • 特徴 • 美味しい召し上がり方 • 最後に一言二言
  41. 41. EasyBuggyに 興味がある方は
  42. 42. Qiitaでtamura__246の 記事を参照下さい。 例えば... 「ZAP vs EasyBuggy」
  43. 43. ちなみに
  44. 44. 姉妹製品 •同機能で異実装 Spring Bootベース Kotlinで実装
  45. 45. 最後に
  46. 46. とコラボ しませんか?
  47. 47. 例えば • 脆弱性の解説記事/書籍 の執筆(@ITとか?) • EasyBuggyへのプルリク LBTM(Looks Bad to me)したい!
  48. 48. 脆弱性について 記事を書ける方 是非お声を
  49. 49. ありがとう ございました

×