SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
もしWebセキュリティのエンジ
ニアがRFC7540の「HTTP/2ア
プリ」をWeb診断したら
略して「もしR」
自己紹介
Twitter: abend@number3to4
Webセキュリティエンジニア
宣伝
7/26(日) に開催されるJULY TECH FESTAにて、
「フリーでできるセキュリティチェック」という
タイトルにて、プレゼンをさせていただきます。
”無料”のツールを利用して、ラクにセキュリティ
チェックを行うためのノウハウをご紹介いたし
ます。
インフラエンジニア、運用を担当されている
エンジニア向けの内容となっています。
http://2015.techfesta.jp/
HTTP/2って
HTTP(HyperperText Transfer Protocol)の最新バージョンにあたり、HTTP/1.1
から16年ぶりのアップデート。HTTP/2についてはRFC7540、関連するHPACKは
RFC7541でリリースされました。
HTTP/1.1と比較するとHTTP/2は複雑になっています。
HTTP/1.1との違いはこんな感じ。
① 多重化
② バイナリメッセージ
③ ヘッダ圧縮(HPACK)
④ フロー制御
⑤ 優先度
⑥ 依存関係
⑦ Server Push
nghttp2って
HTTP/2に対応したWebサーバ、Webクライアント、Proxy機能を有する。
通信内容の確認は、hexdumpオプションを指定することで確認することが可能。
https://nghttp2.org/
① 多重化
HTTP/1.Xでは、1つのTCPコネクションで1つのリクエストおよびレスポンスを
やりとりしていた。HTTP/2では、streamという概念により1つのTCPコネクション
で複数のリクエストおよびレスポンスをやりとりできるようなった。
stream
Stream_id:偶数
Stream_id:奇数
Stream_id:0
クライアント
サーバ
StreamID
0:コネクション制御用
奇数:クライアントが開始
偶数:サーバが開始
コネクション
② バイナリメッセージ
HTTPフレームが新たに定義され、stream上でやりとりをする。
フレームタイプによってFrame Payloadのフォーマットが変わる。フレームヘッダ
は9byte。
フレームヘッダ
HEADERSフレーム
② バイナリメッセージ
リクエスト、レスポンスヘッダがバイナリベースとなっている。
Nghttpでアクセスした際のdump結果。赤枠箇所がリクエストのHEADERSフレーム。
② バイナリメッセージ
リクエストのHEADERSフレーム。
00 00 26 01 25 00 00 00 0d 00 00 00 0b 0f 82 84
87 41 8b 0b e2 5c 2e 3c b8 5b 7d 70 b2 cf 53 03
2a 2f 2a 90 7a 89 aa 69 d2 9a c4 c0 57 02 e0
緑箇所の3byte「00 00 26」がフレームサイズで38byte(0x26)
最初の9byte(固定長)は、フレームヘッダ。
青箇所の「01」がフレームタイプを表しており、0x01はHEADERSフレーム。
黄色箇所の「25」はFlagで詳細はRFC7540へ。
茶色箇所の4byte(正確には31bit分)はStream IDで、この場合は13。
② バイナリメッセージ
リクエストのHEADERSフレームペイロード(赤箇所)
00 00 26 01 25 00 00 00 0d 00 00 00 0b 0f 82 84
87 41 8b 0b e2 5c 2e 3c b8 5b 7d 70 b2 cf 53 03
2a 2f 2a 90 7a 89 aa 69 d2 9a c4 c0 57 02 e0
青箇所は依存先のStream IDを指している。
白箇所でPriorityフラグ(0x20)がセットされた場合にのみ、青箇所と
緑箇所が出力される。
緑箇所はweightで、「0f」の場合、15+1=16となる。
③ ヘッダ圧縮(HPACK)
HTTP/2はヘッダ圧縮のためにHPACK(RFC7541)を採用しています。
ハフマン符号や静的テーブルと動的テーブルを用いて、圧縮しています。
Indexの場合、7bitの値がリクエスト・レスポンスヘッダのヘッダ名、値を
指している。「:」から始まるヘッダ名はHTTP/2のために作られた疑似
ヘッダフィールドです。
③ ヘッダ圧縮(HPACK)
さっきのHeader Blockの場合
00 00 26 01 25 00 00 00 0d 00 00 00 0b 0f 82 84
87 41 8b 0b e2 5c 2e 3c b8 5b 7d 70 b2 cf 53 03
2a 2f 2a 90 7a 89 aa 69 d2 9a c4 c0 57 02 e0
0x82(1000 0010)でIndexの2を指しており、「:method: GET」を意味します。
同様に0x84、0x87は、それぞれIndexが4、7を指しています。
Index 4 ・・・ :path: /
Index 7 ・・・ :scheme: https
③ ヘッダ圧縮(HPACK)
bitにより、どういう意味なのか変わってくる。
Indexは事前に定義されたヘッダ名の
値をセットする。0x41の場合、Index
が1である:authorityを指す。
2byte目(緑箇所)は、上位bitがハフ
マンエンコーディングの有無を指定
し、値長を指定している(11byte)。
00 00 26 01 25 00 00 00 0d 00 00 00 0b 0f 82 84
87 41 8b 0b e2 5c 2e 3c b8 5b 7d 70 b2 cf 53 03
2a 2f 2a 90 7a 89 aa 69 d2 9a c4 c0 57 02 e0
③ ヘッダ圧縮(HPACK)
:authority:ヘッダの値は、赤箇所のbyte列(11byte分)になる。
このbyte列はハフマンエンコーディングされているため、このままでは
可視できるものではないので、ハフマンでコーディングを行う必要が
ある。
00 00 26 01 25 00 00 00 0d 00 00 00 0b 0f 82 84
87 41 8b 0b e2 5c 2e 3c b8 5b 7d 70 b2 cf 53 03
2a 2f 2a 90 7a 89 aa 69 d2 9a c4 c0 57 02 e0
③ ヘッダ圧縮(HPACK)
まずは、11byteを2進数に変換し、結合する。
RFC7541で定義されているテーブルから
戻してあげればいい。赤箇所の
「00001」は1を意味しており、白は9、
青は2を意味する。
これを繰り返すと「 192.168.159.133 」
となる。緑箇所は余りで1でpaddingされ
ている。
00001011111000100101110000101110001111001011100001011011011111010111000010
11001011001111
④ フロー制御
HTTP/2では1つのコネクションで複数のstreamが通信できる。複数のstreamが
一斉に大量の通信をはじめたら・・・。
俺、通信するっ!! じゃ、俺も俺も。 じゃ、俺も俺も。
誰も「どうぞ、どうぞ」を言わないと、重要な通信が行えなくなってしまう。
どうぞ、そうぞ どうぞ、そうぞ えっ!?
④ フロー制御
ウィンドウサイズによるフロー制御が存在しており、優先度にも応じて通信
を行う。ただし、フロー制御の対象となるのは、DATAフレームのみ。
コネクションの使用可能なウィンドウサイズ:65535
Streamごとの使用可能なウィンドウサイズ:65535
使用可能な量を使い切ってしまった場合、受信者側からWINDOW_UPDATE
を受け取ることで、使用可能な量を追加することができる。
クライアント
サーバ
④ フロー制御
たとえば、237byteのデータをStreamIDが1のウィンドウサイズ127byteの設定
で通信した場合・・・
2. サーバが237byteのデータのうち、127byteをsend
クライアント
サーバ
コネクション ウィンドウサイズ:65535
StreamID:1 ウィンドウサイズ:127
1. クライアントがInitial Window Sizeを127byteへ変更をsend
コネクション ウィンドウサイズ:65535
StreamID :1 ウィンドウサイズ:127
クライアント
サーバ
④ フロー制御
4. サーバが残りの110byteをsend
クライアント
サーバ
コネクション ウィンドウサイズ:65408
StreamID:1 ウィンドウサイズ:127
3. クライアントがWINDOW_UPDATE(StreamID:1)127byteをsend
コネクション ウィンドウサイズ: 65408
StreamID:1 ウィンドウサイズ:0
クライアント
サーバ
④ フロー制御
Initial Window Sizeは、SETTINGフレームで指定します。
00 00 0c 04 00 00 00 00 00 00 03 00 00 00 64 00
04 00 00 00 7f
赤箇所9byteはフレームヘッダ。黄色箇所以降がSETTINGフレームのペイロード。
2byteの識別子と4byteの値の計6byte単位で構成される。
黄色箇所0x03は、SETTINGS_MAX_CONCURRENT_STREAMS を意味し、値は緑箇所
の0x64(100)。0x04がSETTINGS_INITIAL_WINDOW_SIZEで、0x07(127)。
※ SETTINGS_INITIAL_WINDOW_SIZEはオプションで強制的に0x07に指定してます。
④ フロー制御
WINDOW_UPDATEは、WINDOW_UPDATEフレームで実行されます。
00 00 04 08 00 00 00 00 0d 00 00 00 1f
WINDOW_UPDATEは、「コネクションに対して」と「Streamに対して」行うこと
が可能で、フレームヘッダで指定するStream IDが0の場合、「コネクションに
対して」、指定するWindow Sizeが追加される。「Streamに対して」行う場合は
該当するStream IDを指定する必要がある。両方に対して行う必要がある場合は
それぞれのWINDOW_UPDATEフレームを送信する必要がある。
⑤ 優先度
各StreamがWindow Sizeの上限まで使い切ることがないように、Streamに対して
優先度(Wight)をつけて、その割合に応じて通信を行う。
値は1から256の整数で指定することが可能です。Defaultは16です。
StreamID:1 Wight:12
StreamID:3 Wight:3
この場合、StreamID:1は全体の5分の4の割合で通信を行います。
非常に参考になりました。
HTTP/2 Deep Dive: Priority & Server Push by Moto Ishizawa
https://speakerdeck.com/summerwind/2-deep-dive-priority-and-server-push
⑤ 優先度
優先度の指定は、PRIORITYフレームを用いて行うことが可能です。
00 00 05 02 00 00 00 00 03 00 00 00 00 c8
赤箇所はフレームヘッダ。
青箇所は依存するStreamIDを指定し、この場合は0を指していている。
緑箇所が該当Stream(StreamID:3)の優先度で、0xc8(200)+1=201が優先度となる。
⑥ 依存関係
各Streamは、他のStreamと依存関係を持ちます。
ルートにはStreamID:0がセットされ、依存されるStreamIDのほうが優先して
リソースの割り当てを行われます。
StreamID:0
StreamID:1 StreamID:3
StreamID:5 StreamID:7
⑦ Server Push
通常、クライアントからリクエストを送信し、それに対してレスポンスを
返すが、Server Pushはクライアントからのリクエストを受けずにサーバが
レスポンスを返す。
クライアント サーバ
リクエスト
レスポンス
Server Pushのレスポンスは、クライアントが送信すると予定されるリクエスト
とデータを返します。データはクライアントでキャッシュされます。
⑦ Server Push
Server Pushするために、サーバからクライアントにPUSH_PROMISEフレームで
通知しておく必要があります。
Promissed Stream IDは、Server PushされStreamIDがセットされる。サーバが
起点となるため、この値は偶数となる。また、Header Block Fragmentには
予定されるリクエストをセットされます。
⑦ Server Push
Server Pushするために、サーバからクライアントにPUSH_PROMISEフレームで
通知しておく必要があります。
00 00 18 05 04 00 00 00 0d 00 00 00 02 82 04 87
61 09 f5 41 57 22 11 87 41 87 08 9d 5c 0b 81 70
ff
赤箇所はフレームヘッダ。緑箇所は、Server PushするStreamIDでID:2を指定。
水色箇所は、予定されるリクエストヘッダになっており、HEADERSフレーム
と同様にデコード可能。
Web診断って
Webアプリケーションの脆弱性の有無を検査することをWeb診断としています。
Web診断では、基本的にProxyツールを用いて行います。
Proxyツールで検査パターンを付加してリクエストし、そのレスポンスの内容
によって脆弱性の有無を判断します。
リクエスト
Webサーバクライアント
検査パターンを
付加する。 Proxyツール
レスポンス
Web診断って
Proxyツールを使う理由は、ブラウザで操作できる内容が限られているためです。
都道府県:
性別: 男 女
東京都 (ブラウザ上で)入力形式が固定化されている
場合にProxyツールを用いて、入力値を変更します。
Web診断って
ProxyツールのひとつにBurp Suiteがあります。
Javaで動作し、一部の機能は有償版のみとなりますが、基本的にフリーで使える
ツールです。
リクエストをInterceptして
変更することで、ブラウザ
では変更できないパラメー
タも変更可能となります。
結論
HTTP/2のアプリに対して、Burp Suiteでアクセスしてみた。
Burp Suiteは、HTTP/2に対応していないのでできなかった。
じゃあ、どうすんの
ソースとか見てたら、nghttpxというProxy機能があることに気づいたので
これを活用することに。
クライアント Proxyツール
HTTP/1.1 HTTP/2
nghttpx
HTTP/1.1
こうすれば既存の仕組みのまま、HTTP/2アプリにも接続可能。
HTTP/2アプリ
試してみた
Nghttp2をProxyとして動作させることで、Burp Suiteでもアクセスできるよう
になった。
nghttpx --client -f0.0.0.0,8080 –b[HTTP2サーバのIP],443 -k -o -LINFO
これで脆弱性見つけられる
nghttp2には、アプリケーションサーバとしての機能がないため、以下、構成で
診断が行えるか確認することに。
クライアント Proxyツール
HTTP/1.1
HTTP/2
nghttpx
HTTP/1.1
Webアプリ
HTTP/1.1
nghttpx
当然見つかる
HTTP/1.Xと同様に何も変わることなく、XSSを見つけることができた。
じゃあ、すべての脆弱性も?
HTTPヘッダインジェクションはどうなるのだろうか。
脆弱なサイト一般利用者
Proxy Server
攻撃者
キャッシュが
汚染される
メールやページ
書込みによるリンク
XSSと同じ被害
なぜ、HTTPヘッダインジェクションなのか
HTTP/2だとレスポンスヘッダ(リクエストヘッダもだけど)はバイナリになる
ため、以下の行為ができないのではないかと考えた。
① 任意のヘッダ挿入
勝手にSet-Cookieとセットされる可能性がある。
② レスポンススプリッティング
Proxyサーバに不正な内容をキャッシュさせられる可能性がある。
なぜ、HTTPヘッダインジェクションなのか
検証するにあたり、脆弱なソースを用意した。
※オープンリダイレクタも存在します。
#!/usr/bin/perl
use utf8;
use strict;
use CGI;
my $cgi = new CGI;
my $url = $cgi->param('url');
print "Status: 302 Movedn";
print "Content-Type: text/html; charset=UTF-8n";
print "Location: $urln";
print "n";
print "<hmtl>n";
print "<body>n";
print "redirect done!!n";
print "</body>n";
print "</hmtl>n";
exit;
① 任意のヘッダ挿入
HTTP/2の場合、HPACKを用いてヘッダの圧縮を行っているため、脆弱性を悪用
してヘッダにインジェクトしようとしても、ただの文字列として処理されて
しまうのではないかと推測した。
<レスポンス>
HTTP/1.1 302 Found
Date: Thu, 25 Jun 2015 00:17:28 GMT
Set-Cookie: a=a
Location: http://www.yahoo.co.jp
以下略
<リクエスト>
GET http://192.168.159.152:8433/redirect.cgi?url=http://www.yahoo.co.jp%0a%0dSet-
Cookie:a=a HTTP/1.1
以下略
脆弱だった。。。
① 任意のヘッダ挿入
なぜこうなったのか。
<推測です>
今回の構成の場合、バックエンドサーバである脆弱サーバで改行が評価され
ヘッダに挿入されたレスポンスをそのままHTTP/2へ返すために、HTTP/2には
まったく関係がなく、とめることはできないのではないかと推測しています。
② レスポンススプリッティング
HTTP/2では、レスポンスヘッダとレスポンスボディはそれぞれ違うフレーム
として送信されるため、レスポンスを分割したとしてもキャッシュされない
のではないかと推測。
<リクエスト>
GET http://192.168.159.152:8433/redirect.cgi?url=http://www.yahoo.co.jp%0a%0dContent-
Length:0%0a%0d%0a%0dHTTP/1.1%20200%20OK%0a%0d%0a%0d<html><body>inject</body></htm
l> HTTP/1.1
Host: 192.168.159.152:8433
以下略
<赤字箇所のURLデコード結果>
改行
Content-Length:0
改行
改行
HTTP/1.1 200 OK
<html><body>inject</body></html>
② レスポンススプリッティング
結果は・・・。
HTTP/1.0 302 Moved Temporarily
Date: Thu, 25 Jun 2015 16:57:28 GMT
Location: http://www.yahoo.co.jp
Content-Length: 100
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
HTTP/1.1 200 OK
<html><body>inject</body></html>
<hmtl>
<body>
redirect done!!
</body>
</hmtl>
プログラムがそもそも意図した通りになっていなかった。。。
② レスポンススプリッティング
※20015/6/27に内容を追加してます。
意図した通りのレスポンスになっていないため、pythonで強制的にレスポンス
スプリッティングした結果がHTTP/2(nghttpx)ではどのように評価されるか検証
してみた。
参考
http://qiita.com/otoyo/items/98098e927797272d0a39
プログラムは一部抜粋
self.wfile.write("HTTP/1.1 302 Foundrn")
self.wfile.write("Content-Type: text/html; charset=utf-8rn")
self.wfile.write("Location: http://www.yahoo.co.jprn")
self.wfile.write("Content-Length:0rn")
self.wfile.write("rn")
self.wfile.write("HTTP/1.1 200 OKrn")
self.wfile.write("rn")
self.wfile.write("<html><body>inject</body></html>rn")
② レスポンススプリッティング
Pythonサーバにアクセスすると以下のレスポンスが常に返される。
HTTP/1.1 302 Found
Content-Type: text/html; charset=utf-8
Location: http://www.yahoo.co.jp
Content-Length: 0
HTTP/1.1 200 OK
<html><body>inject</body></html>
※20015/6/27に内容を追加してます。
青字箇所がレスポンススプリッティングされることを想定したレスポンス。
② レスポンススプリッティング
ブラウザ → Burp Suite → フォワードプロキシ(nghttpx) →
リバースプロキシ(nghttpx) → Pythonサーバという順でアクセスした結果。
HTTP/1.1 302 Found
Date: Sat, 27 Jun 2015 08:10:08 GMT
Location: http://www.yahoo.co.jp
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Server: nghttpx nghttp2/1.0.4
Via: 1.1 nghttpx, 2 nghttpx
2つ目のレスポンスがなくなっている。
※20015/6/27に内容を追加してます。
② レスポンススプリッティング
リバースプロキシ(nghttpx)のログは、大きく4つのポイントがあります。
1. フォワードプロキシ(nghttpx)からのHTTP/2のGETリクエスト
2. PythonサーバへのHTTP/1.1のGETリクエスト
3. PythonサーバからのHTTP/1.1のレスポンス
4. フォワードプロキシ(nghttpx)へのHTTP/2のレスポンス
※20015/6/27に内容を追加してます。
② レスポンススプリッティング
1.フォワードプロキシ(nghttpx)からのHTTP/2のGETリクエスト
:method: GET
:scheme: http
:authority: リバースプロキシのIP
:path: /
user-agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language: ja,en-US;q=0.7,en;q=0.3
accept-encoding: gzip, deflate
x-forwarded-proto: http
via: 1.1 nghttpx
※20015/6/27に内容を追加してます。
② レスポンススプリッティング
2. PythonサーバへのHTTP/1.1のGETリクエスト
GET http://リバースプロキシのIP/ HTTP/1.1
Host:リバースプロキシのIP
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Via: 1.1 nghttpx, 2 nghttpx
※20015/6/27に内容を追加してます。
② レスポンススプリッティング
3. PythonサーバからのHTTP/1.1のレスポンス
:status: 302
content-type: text/html; charset=utf-8
location: http://www.yahoo.co.jp
content-length: 0
via: 1.1 nghttpx
※20015/6/27に内容を追加してます。
※疑似ヘッダフィールド「:status」が出力されている。理由は不明。
② レスポンススプリッティング
4.フォワードプロキシ(nghttpx)へのHTTP/2のレスポンス
[2805.766] send HEADERS frame <length=27, flags=0x04, stream_id=5>
; END_HEADERS
(padlen=0)
; First response header
:status: 302
content-type: text/html; charset=utf-8
location: http://www.yahoo.co.jp
content-length: 0
via: 1.1 nghttpx
[2805.766] send DATA frame <length=0, flags=0x01, stream_id=5>
; END_STREAM
※20015/6/27に内容を追加してます。
レスポンスは、HEADERSフレームとDATAフレームのみで、DATAフレームの
サイズも0となっている。
② レスポンススプリッティング
レスポンススプリッティングした「HTTP/1.1 200 OK」のレスポンス自体は
認識されずに、破棄されていると思われる。
※20015/6/27に内容を追加してます。
Nghttpxを介すことで、レスポンススプリッティングされる可能性は減る
と思うが、実装状況にも依存すると思われるため、HTTP/2だからセキュア
になるということではないと思う。
まとめ
大事なことなので2度言います。
宣伝
7/26(日) に開催されるJULY TECH FESTAにて、
「フリーでできるセキュリティチェック」という
タイトルにて、プレゼンをさせていただきます。
”無料”のツールを利用して、ラクにセキュリティ
チェックを行うためのノウハウをご紹介いたし
ます。
インフラエンジニア、運用を担当されている
エンジニア向けの内容となっています。
http://2015.techfesta.jp/
・HTTP/2は以前のバージョンと比較すると複雑になり、telnetとかで試すことが
できなくなった。
まとめ
・HTTP/2を使えば安全というわけではなく、Webアプリケーションはこれまで
通りセキュリティ対策はとる必要はある。
・hexdumpした結果を何度も見ていると、だんだんフレームが見えてくる。
ちなみに
前から疑問だったのだが・・・。
HTTP/2コネクションの初期設定確立のために、24byteの固定されたコネクション
プリフェイスをサーバが送信する。
「HTTP/2.0」だと!?
正式名称は「HTTP/2」or「HTTP2」じゃないのか。って、前から??でした。
参考資料
RFC7540
https://http2.github.io/http2-spec/
http://summerwind.jp/docs/rfc7540/ (日本語訳)
RFC7541
http://www.rfc-editor.org/rfc/rfc7541.txt
http://syucream.github.io/hpack-spec-ja/rfc7541-ja.html (日本語訳)
HTTP/2 Frequently Asked Questions
http://http2.info/faq.html#why-is-http2-multiplexed
HTTP2 Advent Calendar 2014
http://qiita.com/advent-calendar/2014/http2
HTTP/2.0のインパクト
https://www.janog.gr.jp/meeting/janog32/doc/janog32-http2.0-shimizu-01.pdf
HTTP/2 入門
http://www.slideshare.net/techblogyahoo/http2-35029629
HTTP/2 Deep Dive: Priority & Server Push
https://speakerdeck.com/summerwind/2-deep-dive-priority-and-server-push

Más contenido relacionado

Was ist angesagt?

Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門Hiroyuki Wada
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門tamtam180
 
Consulを頑張って理解する
Consulを頑張って理解するConsulを頑張って理解する
Consulを頑張って理解するMasakazu Watanabe
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoTakayuki Shimizukawa
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceToru Makabe
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Hirofumi Iwasaki
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るTakeru Maehara
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみたzaki4649
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法シスコシステムズ合同会社
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
HashiCorpのNomadを使ったコンテナのスケジューリング手法
HashiCorpのNomadを使ったコンテナのスケジューリング手法HashiCorpのNomadを使ったコンテナのスケジューリング手法
HashiCorpのNomadを使ったコンテナのスケジューリング手法Masahito Zembutsu
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)NTT DATA Technology & Innovation
 

Was ist angesagt? (20)

NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
 
Consulを頑張って理解する
Consulを頑張って理解するConsulを頑張って理解する
Consulを頑張って理解する
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみた
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
Cisco Connect Japan 2014:Cisco ASA 5500-X 次世代ファイアウォールの機能と、安定導入・運用方法
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
HashiCorpのNomadを使ったコンテナのスケジューリング手法
HashiCorpのNomadを使ったコンテナのスケジューリング手法HashiCorpのNomadを使ったコンテナのスケジューリング手法
HashiCorpのNomadを使ったコンテナのスケジューリング手法
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 

Ähnlich wie もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら

FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
PHP5.6からPHP7.0への移行
PHP5.6からPHP7.0への移行PHP5.6からPHP7.0への移行
PHP5.6からPHP7.0への移行Yasuo Ohgaki
 
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Hidenori Goto
 
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみたIto Takahiro
 
Web Environments
Web EnvironmentsWeb Environments
Web Environmentsnasa9084
 
HttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何かHttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何かShigekiYamada
 
Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2久司 中村
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
AndroidとPCのみでスマート電球BLEハッキング
AndroidとPCのみでスマート電球BLEハッキングAndroidとPCのみでスマート電球BLEハッキング
AndroidとPCのみでスマート電球BLEハッキングShota Shinogi
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021Hideki Saito
 
OpenShift v3 Technical Overview
OpenShift v3 Technical OverviewOpenShift v3 Technical Overview
OpenShift v3 Technical OverviewNakayama Kenjiro
 
EchoyaGinhanazeSu_inoka.pptx
EchoyaGinhanazeSu_inoka.pptxEchoyaGinhanazeSu_inoka.pptx
EchoyaGinhanazeSu_inoka.pptxkeink
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろkjwtnb
 
Authlete overview
Authlete overviewAuthlete overview
Authlete overviewmtisol
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門Etsuji Nakai
 
リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法モノビット エンジン
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するjunichi anno
 

Ähnlich wie もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら (20)

FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
PHP5.6からPHP7.0への移行
PHP5.6からPHP7.0への移行PHP5.6からPHP7.0への移行
PHP5.6からPHP7.0への移行
 
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
 
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
 
Web Environments
Web EnvironmentsWeb Environments
Web Environments
 
HttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何かHttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何か
 
Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2
 
P2Pって何?
P2Pって何?P2Pって何?
P2Pって何?
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
AndroidとPCのみでスマート電球BLEハッキング
AndroidとPCのみでスマート電球BLEハッキングAndroidとPCのみでスマート電球BLEハッキング
AndroidとPCのみでスマート電球BLEハッキング
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021Ansible automationplatform product updates 2021
Ansible automationplatform product updates 2021
 
OpenShift v3 Technical Overview
OpenShift v3 Technical OverviewOpenShift v3 Technical Overview
OpenShift v3 Technical Overview
 
EchoyaGinhanazeSu_inoka.pptx
EchoyaGinhanazeSu_inoka.pptxEchoyaGinhanazeSu_inoka.pptx
EchoyaGinhanazeSu_inoka.pptx
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろ
 
勉強会資料①
勉強会資料①勉強会資料①
勉強会資料①
 
Authlete overview
Authlete overviewAuthlete overview
Authlete overview
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門
 
リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
 

Mehr von abend_cve_9999_0001

Bypassing anti virus using powershell
Bypassing anti virus using powershellBypassing anti virus using powershell
Bypassing anti virus using powershellabend_cve_9999_0001
 
ポートスキャンを擬人化してみた
ポートスキャンを擬人化してみたポートスキャンを擬人化してみた
ポートスキャンを擬人化してみたabend_cve_9999_0001
 
Bypassing Windows Security Functions(ja)
Bypassing Windows Security Functions(ja)Bypassing Windows Security Functions(ja)
Bypassing Windows Security Functions(ja)abend_cve_9999_0001
 
Bypassing Windows Security Functions(en)
Bypassing Windows Security Functions(en)Bypassing Windows Security Functions(en)
Bypassing Windows Security Functions(en)abend_cve_9999_0001
 
Burp Suite Japanユーザグループ紹介
Burp Suite Japanユーザグループ紹介Burp Suite Japanユーザグループ紹介
Burp Suite Japanユーザグループ紹介abend_cve_9999_0001
 
バックアップファイルの管理
バックアップファイルの管理バックアップファイルの管理
バックアップファイルの管理abend_cve_9999_0001
 
標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのかabend_cve_9999_0001
 
Nmap 9 truth "Nothing to say any more"
Nmap 9 truth "Nothing to say  any more"Nmap 9 truth "Nothing to say  any more"
Nmap 9 truth "Nothing to say any more"abend_cve_9999_0001
 
The vulnerabilities never bothered me anyway
The vulnerabilities never bothered me anywayThe vulnerabilities never bothered me anyway
The vulnerabilities never bothered me anywayabend_cve_9999_0001
 
フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編abend_cve_9999_0001
 
フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)abend_cve_9999_0001
 
Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~abend_cve_9999_0001
 
おちこんだりもしたけど、私は元気です。
おちこんだりもしたけど、私は元気です。おちこんだりもしたけど、私は元気です。
おちこんだりもしたけど、私は元気です。abend_cve_9999_0001
 
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)abend_cve_9999_0001
 
ハニーポットで見る攻撃手法(特に結論はありません)
ハニーポットで見る攻撃手法(特に結論はありません)ハニーポットで見る攻撃手法(特に結論はありません)
ハニーポットで見る攻撃手法(特に結論はありません)abend_cve_9999_0001
 

Mehr von abend_cve_9999_0001 (20)

Bypassing anti virus using powershell
Bypassing anti virus using powershellBypassing anti virus using powershell
Bypassing anti virus using powershell
 
ポートスキャンを擬人化してみた
ポートスキャンを擬人化してみたポートスキャンを擬人化してみた
ポートスキャンを擬人化してみた
 
Bypassing Windows Security Functions(ja)
Bypassing Windows Security Functions(ja)Bypassing Windows Security Functions(ja)
Bypassing Windows Security Functions(ja)
 
Bypassing Windows Security Functions(en)
Bypassing Windows Security Functions(en)Bypassing Windows Security Functions(en)
Bypassing Windows Security Functions(en)
 
Burp Suite Japanユーザグループ紹介
Burp Suite Japanユーザグループ紹介Burp Suite Japanユーザグループ紹介
Burp Suite Japanユーザグループ紹介
 
バックアップファイルの管理
バックアップファイルの管理バックアップファイルの管理
バックアップファイルの管理
 
標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか標的型攻撃からどのように身を守るのか
標的型攻撃からどのように身を守るのか
 
Your hash is.
Your hash is.Your hash is.
Your hash is.
 
Nmapの真実(続)
Nmapの真実(続)Nmapの真実(続)
Nmapの真実(続)
 
Nmap 9 truth "Nothing to say any more"
Nmap 9 truth "Nothing to say  any more"Nmap 9 truth "Nothing to say  any more"
Nmap 9 truth "Nothing to say any more"
 
Nmap 9つの真実
Nmap 9つの真実Nmap 9つの真実
Nmap 9つの真実
 
Nmapの真実
Nmapの真実Nmapの真実
Nmapの真実
 
Burpで指定文字列を検索
Burpで指定文字列を検索Burpで指定文字列を検索
Burpで指定文字列を検索
 
The vulnerabilities never bothered me anyway
The vulnerabilities never bothered me anywayThe vulnerabilities never bothered me anyway
The vulnerabilities never bothered me anyway
 
フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編
 
フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)
 
Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~
 
おちこんだりもしたけど、私は元気です。
おちこんだりもしたけど、私は元気です。おちこんだりもしたけど、私は元気です。
おちこんだりもしたけど、私は元気です。
 
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
 
ハニーポットで見る攻撃手法(特に結論はありません)
ハニーポットで見る攻撃手法(特に結論はありません)ハニーポットで見る攻撃手法(特に結論はありません)
ハニーポットで見る攻撃手法(特に結論はありません)
 

もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら