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

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