際際滷

際際滷Share a Scribd company logo
|奨寄僥 秤麪Лh
恷除のWebアプリケ`ションの巌樋來や
それを喘する好弔嗜
1
|奨寄僥寄僥垪秤麪Лh
セキュア秤鷸芙氏冩梢篠原v恙
蒙販冩梢T 儲云嵐戦徨
|奨寄僥 秤麪Лh
アジェンダ
2
? Struts 2(S2-045/046)の巌樋來について
? 恷除のWebアプリケ`ションにする好嗜
? Webアプリケ`ションの巌樋來を喘する好
から便るためには
? まとめ
|奨寄僥 秤麪Лh
徭失B初
? 2004定゛NECソリュ`ションイノベ`タにて、ソフト
_kやSIなどに愱
? 2015定゛JPCERTコ`ディネ`ションセンタ`に竃
し、巌樋來編^やログ蛍裂に愱
? 2017定゛|奨寄僥秤麪Лhに竃鬚掘▲札ュリティ繁
可圄撹や冩梢に愱
? 翌試?鵡P麗など
C ISOG-J 巌樋來\僅平Web アプリケ`ション
C v處や巌樋來秤鵑琉k佚
Apache Commons Collectionsの巌樋來盾h(CodeZine)
https://codezine.jp/article/detail/9150
3
|奨寄僥 秤麪Лh
Struts 2(S2-045/046)の巌樋來について
4
|奨寄僥 秤麪Лh
Struts 2の巌樋來(S2-045/046)
? 書定3埖に巷_され、謹くの晩云Mが瓜墾を鞭けた
? 巌樋來喘により、リモ`トから販吭のコ`ドをg佩できる
? 巷塀アップデ`トの巷_念に好張芥`ドが巷_された
? 貌のStruts 2の巌樋來が羨てAけに巷_されている
☆Struts 2はWebアプリケ`ションの_kフレ`ムワ`ク
Web
アプリケ`ション
垢した
リクエスト Webサ`バ
Struts 2
好蔦澆峺協した
コ`ドがサ`バ貧で
g佩される
5
哈喘
https://www.lac.co.jp/lacwatch/alert/20170310_001246.html
|奨寄僥 秤麪Лh
S2-045の巌樋來を喘する好弔離妊
6
|奨寄僥 秤麪Лh
Struts 2の巌樋來喘の並箭
? 忽坪Mで寄トな秤鸛竃の瓜墾がk伏
C WebサイトにバックドアがO崔され、クレジットカ`ド秤
鵑送竃
2017/3/06 2017/3/07 2017/3/08
22:14
巌樋來秤
が_k宀鬚
サイトに巷_
15:21
好張芥`ド巷_
4:54
サ`バへの好弔魎_J
匚
巷塀アップデ`ト巷_
Struts 2の巌樋來にvする、ある瓜墾Mのタイムライン
2017/3/09
21:56
音なリクエス
トを孳僅
抓猗來秤鷙_ 攅弔魎_J 杙惘棆烝m喘
2017/3/10
11:15
Webサイト唯峭
∠サ`ビス唯峭
7
|奨寄僥 秤麪Лh
Struts 2について
? MVC (Model/View/Controller) モデルにもとづくオ`プ
ンソ`スのJavaの Web アプリケ`ションフレ`ムワ`ク
? Struts 2に巌樋來がつかると、それを旋喘しているソフ
トウエアやWebアプリが唹を鞭ける
サ`バ
リクエストとActionの
vB原け
Struts 2
Action1ActionMapper JSP1
ViewController Model
JSP2
/action1.action
/action2.action Action2
APサ`バ
8
|奨寄僥 秤麪Лh
S2-045の巌樋來を喘する好
? multipart/form-dataをI尖するStruts 2覆離僣`サ
(JakartaMultiPartRequest)のエラ`I尖にvする巌樋來
? Content-TypeにOGNLを根めてリクエスト
9
APサ`バ
Struts
アプリケ`ション
垢した
リクエスト
ContentType: %{(#nike=`multipa
rt/form-data¨).(#dm=@ognl.
OgnlContext@DEFAULT_MEM
BER_ACCESS).???}
サ`バ
Struts 2
Content-Typeが音屎な侘
塀の栽、エラ`がk伏
エラ`I尖でOGNLコ`ド
がuされ、販吭のコ`ド
がg佩される
|奨寄僥 秤麪Лh
OGNL(Object Graph Navigation Language)
? JSPなどからJavaクラスのプロパティやメソッドにgにアク
セスできるプログラミング冱Z
? Struts 2はOGNLをサポ`トしており、坪何議にも聞っている
? 匯圭、リクエストを宥じて販吭の Java コ`ドがg佩できるた
め、セキュリティ}を哈き軟こすリスクもある
View (JSP with OGNL)
<s:property value="%{sampleList.size}"/>
<s:property value="%{sampleList[0]}"/>
Action (Java Class)
public class SampleAction extends ActionSupport {
private List<String> sampleList;
public List<String> getSampleList() {
return sampleList;
}
public void setSampleList(List<String> sampleList) {
this.sampleList = sampleList;
}
public String execute() throws Exception {
???
}
} 10
SampleActionクラスの
sampleListプロパティにアクセス
|奨寄僥 秤麪Лh
S2-046の巌樋來を喘する好
? S2-045巷_から10晩瘁、仟たな好張戰トルがkし、弖紗のア
ドバイザリが巷_された
? Struts 2覆eのパ`サ(JakartaStreamMultiPartRequest)のエラ`
I尖に揖の巌樋來
? メッセ`ジボディのContent-Disposition にOGNLを根む垢した
猟忖双を根める
11
APサ`バ
Struts
アプリケ`ション
垢した
リクエスト
Content-Disposition: form-data;
name="upload";
filename="%{#context[´
サ`バ
Struts 2
Content-Lengthが階^し
ている栽、エラ`がk伏
OGNLコ`ドがuされ、
販吭のコ`ドがg佩される
|奨寄僥 秤麪Лh
S2-045,46にする指閲貨
? 音なリクエストの孳僅(WAF/サ`ブレットフィルタ)
? WAF(Web Application Firewall)
C Webアプリケ`ションに蒙晒したファイアウォ`ル
C 宥佚の嶄附(ペイロ`ド)をチェックすることが辛嬬
? 音屎なリクエストかどうかの登僅箭
C Content-TypeやリクエストボディにOGNL燕F
(OgnlContext,OgnlUtil,#context など)が根まれないか
? OGNLに軟咀するその麿の巌樋來を粧う好弔砲瞋
だが、屎、離螢エストを孳僅しないように廣吭
12
|奨寄僥 秤麪Лh
サ`ブレットフィルタ
? サ`ブレットをg佩する念のI尖を佩うJavaプログラム
C I尖の尅り蛍け、リクエストのフィルタリング、慌宥の
I尖など
? サ`ブレットとは
C Javaでg廾されたサ`バサイドプログラムのこと
? 弖紗のu瞳秘が音勣な郡中、Mみzみがyしい蕉中もある
サ`バ
Struts 2
Action1
Servlet
Filter1
JSP1
ViewController Model
JSP2
/xx.action
(屎、離螢エスト)
Action2
Servlet
Filter2
音屎なリクエストの
フィルタリング
垢した
リクエスト
|奨寄僥 秤麪Лh
Webアプリケ`ションにする
恷除の好嗜
14
|奨寄僥 秤麪Лh
販吭のコ`ドg佩の巌樋來
15
巌樋來 CVE r豚 ソフトウエア
PHP/Joomla!
の巌樋來
CVE-2015-6835,
CVE-2015-8562
2015定8埖,
12埖
PHPライブラリ/CMS
Apache Commons
Collectionsの巌樋來
D 2015定11埖 Javaライブラリ
Magento 2の巌樋來 CVE-2016-4010 2016定5埖 PHPベ`スのCMS
node-serialize
の巌樋來
CVE-2017-5941 2017定3埖 Javascriptライブラリ
? 販吭のコ`ドg佩が辛嬬となる巌樋來とそれを喘する好
が謹方_Jされている
? CMS、ライブラリなどWebアプリの_kを屶址するソフトウ
エアの巌樋來が謹い
? 仝オブジェクトインジェクション々に軟咀する巌樋來がえ
てきている
|奨寄僥 秤麪Лh
}その
? Webアプリの_kを屶址するためのソフトウエアの栽
C プログラムと畜俊にvSする
C ?なソフトやアプリで聞われており、唹譴レい
? アップデ`トが戻工されても、堀やかなm喘がyしい栽も
C 唹譴燐{砲寄
C 俐屎が裏弌でもテストが寄
16
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
{砲肇謄好塙なが
かさむ
俐屎w侭は
富ない栽でも??
唹譴レい
|奨寄僥 秤麪Лh
オブジェクトインジェクションとは
? 吭蹐靴覆ぅブジェクトが伏撹されること
C オブジェクト坤廛蹈哀薀潺鵐委壞Zで、あるC嬬にvBするプロパ
ティとI尖をまとめたもの
? アンシリアライズI尖の編^音笋弐Cになることが謹い
C シリアライズ坤ブジェクトの彜Bを隠隔したまま僕鞭佚したり、
ファイルへiみきを佩うために蒙協のデ`タ侘塀にQすること
C アンシリアライズQされたデ`タをプログラムでQえるオブ
ジェクトの侘塀に痌すること
17Webアプリケ`ション
找師なオブジェクトを
シリアライズして僕佚
垢した
リクエスト
敲榻鼎靴織禰`タを
アンシリアライズ
吭蹐靴覆
オブジェクト
柢蹐靴覆ぅブジェ
クトが伏撹される
|奨寄僥 秤麪Лh
}その
? ライブラリやフレ`ムワ`クの巌樋來を喘する好弔撹
羨するのは、旋喘(アプリ)のg廾にも}があるケ`スが
謹い
★gにパッチをm喘するだけでは、功云議Iとならない
18
巌樋來 ライブラリの} 旋喘する箸}
PHP/Joomla!
の巌樋來
PHPの}
猟忖双のアンシリアライズが
屎しく佩われず、オブジェク
トを痌してしまう
Joomla!の}
アンシリアライズI尖の决L
でリスクがあるI尖を佩って
いる
Apache Commons
Collectionsの巌樋來
アンシリアライズrに啜弔
コ`ドをg佩できるクラスが
贋壓する
APサ`バなどの}
アンシリアライズ鵐ブ
ジェクトにする編^音
Magento 2の巌樋來 アンシリアライズI尖の决L
でリスクがあるI尖を佩って
いる
D
node-serialize
の巌樋來
v方(I尖)を根めたシリアラ
イズが辛嬬
佚mできないデ`タをアンシ
リアライズしている
|奨寄僥 秤麪Лh
}その
? PHP/Joomla!の巌樋來箭
C PHP坤札奪轡腑鵑鬟妊芥`ドするライブラリに巌樋が贋壓(CVE-
2015-6835)
C Joomla!塞腕ライブラリを旋喘するCMS(CVE-2015-8562)
19
Webサ`バ
拏垢したリクエスト
Joomla!User-Agent
PHP
撻螢エストに根まれる、
シリアライズして隠贋
Serialized
UA
音屎なオブ
ジェクト
∠アンシリアライズrに徭
議にg佩されるI尖によって
販吭のコ`ドがg佩される
User-
Agent
垢したリクエストの箭
巌樋な
ライブ
ラリ
曠▲鵐轡螢▲薀ぅ困垢襪函
吭蹐靴覆ぅブジェクトが
伏撹される
|奨寄僥 秤麪Лh
Webアプリケ`ションの巌樋來を
喘する好弔ら便るためには
? Webアプリで聞喘するソフトウエアのアップデ`ト
? ライブラリの旋喘箸I尖の岷し
C 秘薦チェック
☆秘薦チェックは?な巌樋來への貨として嗤
? アンシリアライズr、鵑吭蹐靴織ラス(デ`タ侏)で
あるかをチェック
? アンシリアライズしたオブジェクトの彜Bをチェック
C アンシリアライズrのI尖に廣吭
? 徭啜弔g佩されるv方(Magic Method)に廣吭
20
|奨寄僥 秤麪Лh
廣吭すべきAPIの箭
21
クラス兆 メソッド兆 h苧
Serializableをg
廾するクラス
readObject
☆
云メソッドをオ`バライドしている
栽、輝クラスのデシリアライズrに
g佩される
Serializableをg
廾するクラス
readResolve
☆
云メソッドをオ`バライドしている
栽、輝クラスのreadObject() のg佩
瘁に柵び竃され、デシリアライズする
オブジェクトを崔Qできる
Externalizableを
g廾するクラス
readExternal
☆
云メソッドをオ`バライドしている
栽、輝クラスのデシリアライズrに
g佩される
JavaのアンシリアライズにvBするAPIの箭
☆アンシリアライズrに徭啜弔g佩されるv方
|奨寄僥 秤麪Лh
廣吭すべきAPIの箭
22
クラス兆 v方兆 h苧
D unserialize 隠贋喘の猟忖双侘塀をオブジェクトに
アンシリアライズする
シリアライズ
鵑離ラス
__destruct()☆ オブジェクトが篤されるHのI尖を
協xする蒙歩v方であり、アンシリア
ライズrにg佩される
シリアライズ
鵑離ラス
__wakeup()☆ アンシリアライズrに徭啜弔g佩さ
れる
シリアライズ
鵑離ラス
__toString() print(),echo()などを聞喘し、オブジェ
クトの坪否を燕幣したHにg佩される。
PHPのアンシリアライズにvBするAPIの箭
☆アンシリアライズrに徭啜弔g佩されるv方
|奨寄僥 秤麪Лh
Webアプリケ`ションの巌樋來を
喘する好弔ら便るためには
? 堀やかな俐屎がyしい栽の\喘議指閲貨
C WAFの秘
C m俳なアクセス崙囮のg仏
? 佚mできない俊A圷の崙
? J^のO協
C Webアプリが辛嬬な嘛を崙
? Webアプリのg佩ユ`ザ慙
? プログラムg佩h廠のセキュリティC嬬(Security
Managerなど)
? 好弔返するための貨
C ログのO協と隠贋
? S2-045を返するためにはContent-Typeのhが駅勣
23
|奨寄僥 秤麪Лh
まとめ
? リモ`トから販吭のコ`ドg佩が辛嬬となる巌樋來は{
璃業が互い
? フレ`ムワ`クやCMSは宴旋な郡中、巌樋來がつかっ
た栽の{砲yしく、また唹譴レいというデメ
リットもある
? ライブラリやフレ`ムワ`クのアップデ`トとあわせて、
旋喘箸g廾を書匯業岷すことが寄俳
? 堀やかな俐屎がyしい栽の\喘議指閲貨、好弔
岑?{砲垢襪燭瓩離蹈鞍ゝ辰皹慴
24
|奨寄僥 秤麪Лh
(歌深) S2-045の巌樋來(CVE-2017-5638)
? multipart リクエストをI尖するStruts 2覆離僣`サ
(JakartaMultiPartRequest)のエラ`I尖にvする巌樋來
C 聞喘するパ`サを覆ら筝していない栽に唹を鞭ける
C パ`サのC嬬を聞っていなくても唹を鞭ける
C Content-Type が音屎な侘塀の栽、エラ`がk伏し、巌樋來がある
I尖がg佩される
25
APサ`バ
Struts アプリケ`ション
垢した
リクエスト
サ`バ
Struts 2
エラ`I尖に巌樋來があり、
OGNLコ`ドがg佩される
StrutsPrepareFilter
JakartaMultiPartRequest
content_typeに^multipart/form-data ̄
があると、JakartaMultiPartRequest
がg佩される
|奨寄僥 秤麪Лh
(歌深) S2-046の巌樋來(CVE-2017-5638)
? multipart リクエストをI尖するStruts 2Mみzみのパ`サ
(JakartaStreamMultiPartRequest)のエラ`I尖に揖の巌樋來
C 聞喘するパ`サをjakarta-streamにO協している栽に唹を鞭ける
C 覆離僣`サ(JakartaMultiPartRequest)聞喘rの唹は苧されていない
C Content-lengthが貧泙魍^している栽、エラ`がk伏し、巌樋來があ
るI尖がg佩される
26
APサ`バ
Struts アプリケ`ション
垢した
リクエスト サ`バ
Struts 2
エラ`I尖に巌樋來があり、
OGNLコ`ドがg佩される
StrutsPrepareFilter
JakartaStreamMultiPartRequestcontent_typeに^multipart/form-data ̄があ
ると、O協に鬉犬織僣`サをg佩
jakarta-streamの栽は
JakartaStreamMultiPartRequestをg佩
|奨寄僥 秤麪Лh
(歌深) S2-045,46にする指閲貨
? 音なリクエストの孳僅(WAF/サ`ブレットフィ
ルタ)
? 音屎なリクエストかどうかの登僅箭
C Content-Type
? multipart/form-dataが根まれるが、輝猟忖双で兵まっていな
い
? OGNL燕F (OgnlContext,OgnlUtil,#context など)が根まれる
C リクエストボディ(Content-Dispostion)
? OGNL燕F (OgnlContext,OgnlUtil,#context など)が根まれる
C Content-Length
? 覿參貧の、峺協されている
27
|奨寄僥 秤麪Лh
歌深Y創
? Javaのデシリアライズにvする}への貨
http://codezine.jp/article/detail/9176
?What Do WebLogic, WebSphere, JBoss, Jenkins, OpenNMS, and Your
Application Have in Common? This Vulnerability.
http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-
jboss-jenkins-opennms-and-your-application-have-in-common-this-
vulnerability/
?Sec Bug #70219 Use after free vulnerability in session deserializer
https://bugs.php.net/bug.php?id=70219
?[20151201] - Core - Remote Code Execution Vulnerability
https://developer.joomla.org/security-centre/630-20151214-core-
remote-code-execution-vulnerability.html
?Joomla!の仝ゼロデイコ`ドg佩巌樋來々はPHPの屡岑の巌樋來が圻咀
http://blog.tokumaru.org/2015/12/joomla-zero-day-attack-caused-by-
php.html
28
Ad

Recommended

M晒するWebトラッキングの #ssmjp
M晒するWebトラッキングの #ssmjp
sonickun
?
これからのWebセキュリティ フロントエンド #seccamp
これからのWebセキュリティ フロントエンド #seccamp
Kyo Ago
?
安艶恢プラットフォ`ムのセキュリティ
安艶恢プラットフォ`ムのセキュリティ
Muneaki Nishimura
?
クラウドセキュリティ児A #seccamp
クラウドセキュリティ児A #seccamp
Masahiro NAKAYAMA
?
サイバ`セキュリティ鯢呂墨鬚韻心 ̄室宝の旋試喘
サイバ`セキュリティ鯢呂墨鬚韻心 ̄室宝の旋試喘
Takeshi Takahashi
?
檎顎恢霞で禽皆晦
檎顎恢霞で禽皆晦
Yukimitsu Izawa
?
Nishimura i os井firefoxの巌樋來をつけ竃す_jp
Nishimura i os井firefoxの巌樋來をつけ竃す_jp
PacSecJP
?
巌樋來スキャナ閣顎鉛壊で兵めるセキュリティ貨
巌樋來スキャナ閣顎鉛壊で兵めるセキュリティ貨
Takayuki Ushida
?
芦畠な永堰永アプリケ`ションの恬り圭2016
芦畠な永堰永アプリケ`ションの恬り圭2016
Hiroshi Tokumaru
?
安艶恢アプリケ`ションのセキュリティ
安艶恢アプリケ`ションのセキュリティ
Tokai University
?
osc2016do ひけ?て?僥ふ?Webアフ?リケ`ションに捻むリスク
osc2016do ひけ?て?僥ふ?Webアフ?リケ`ションに捻むリスク
Ierae Security
?
Security Learning Vol2 }の巌樋來をコ`ドで~盾く
Security Learning Vol2 }の巌樋來をコ`ドで~盾く
YOJI WATANABE
?
20150704 icst 2015-maruwakari_day_matsuo
20150704 icst 2015-maruwakari_day_matsuo
Kazuaki Matsuo
?
ライブコ`ディングとデモで尖盾する安艶恢セキュリティの児粥
ライブコ`ディングとデモで尖盾する安艶恢セキュリティの児粥
Takahisa Kishiya
?
飛返エンジニアのためのセキュリティ讐恙
飛返エンジニアのためのセキュリティ讐恙
Hiroshi Tokumaru
?
ソ`スで僥ぶ巌樋來\僅 - SmartTechGeeks #2
ソ`スで僥ぶ巌樋來\僅 - SmartTechGeeks #2
tobaru_yuta
?
アプリケ`ションのシフトレフトをg樹するには
アプリケ`ションのシフトレフトをg樹するには
Riotaro OKADA
?
IDAの巌樋來とBug Bounty by 認弥 囘苧
IDAの巌樋來とBug Bounty by 認弥 囘苧
CODE BLUE
?
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
tobaru_yuta
?
HTML5 Web アプリケ`ションのセキュリティ
HTML5 Web アプリケ`ションのセキュリティ
嫦 翫仇
?
デバッガで安看姻糸永姻艶壊壊云悶やプラグインの巌樋來を弖いかけてみよう
デバッガで安看姻糸永姻艶壊壊云悶やプラグインの巌樋來を弖いかけてみよう
Hiroshi Tokumaru
?
Usenix Security2009 Report Suzaki
Usenix Security2009 Report Suzaki
Kuniyasu Suzaki
?
階互堀g樹珂温温皆アプリ蝕k讐恙
階互堀g樹珂温温皆アプリ蝕k讐恙
Masaki Ito
?
サ`バ`フレ`ムワ`クに捻んでる巌樋來返ツ`ル府初
サ`バ`フレ`ムワ`クに捻んでる巌樋來返ツ`ル府初
gree_tech
?
麿繁並ではない安艶恢セキュリティ
麿繁並ではない安艶恢セキュリティ
Yosuke HASEGAWA
?
Adobe ReaderのJavaScript APIの喘 by Abdul-Aziz Hariri & Brian Gorenc - CODE BLU...
Adobe ReaderのJavaScript APIの喘 by Abdul-Aziz Hariri & Brian Gorenc - CODE BLU...
CODE BLUE
?
1.冩梢テ`マ僉協
1.冩梢テ`マ僉協
nasunasu
?

More Related Content

Similar to 仝恷除のwebアプリケ`ションの巌樋來やそれを喘する好弔嗜髻OWASP Kansai (20)

芦畠な永堰永アプリケ`ションの恬り圭2016
芦畠な永堰永アプリケ`ションの恬り圭2016
Hiroshi Tokumaru
?
安艶恢アプリケ`ションのセキュリティ
安艶恢アプリケ`ションのセキュリティ
Tokai University
?
osc2016do ひけ?て?僥ふ?Webアフ?リケ`ションに捻むリスク
osc2016do ひけ?て?僥ふ?Webアフ?リケ`ションに捻むリスク
Ierae Security
?
Security Learning Vol2 }の巌樋來をコ`ドで~盾く
Security Learning Vol2 }の巌樋來をコ`ドで~盾く
YOJI WATANABE
?
20150704 icst 2015-maruwakari_day_matsuo
20150704 icst 2015-maruwakari_day_matsuo
Kazuaki Matsuo
?
ライブコ`ディングとデモで尖盾する安艶恢セキュリティの児粥
ライブコ`ディングとデモで尖盾する安艶恢セキュリティの児粥
Takahisa Kishiya
?
飛返エンジニアのためのセキュリティ讐恙
飛返エンジニアのためのセキュリティ讐恙
Hiroshi Tokumaru
?
ソ`スで僥ぶ巌樋來\僅 - SmartTechGeeks #2
ソ`スで僥ぶ巌樋來\僅 - SmartTechGeeks #2
tobaru_yuta
?
アプリケ`ションのシフトレフトをg樹するには
アプリケ`ションのシフトレフトをg樹するには
Riotaro OKADA
?
IDAの巌樋來とBug Bounty by 認弥 囘苧
IDAの巌樋來とBug Bounty by 認弥 囘苧
CODE BLUE
?
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
tobaru_yuta
?
HTML5 Web アプリケ`ションのセキュリティ
HTML5 Web アプリケ`ションのセキュリティ
嫦 翫仇
?
デバッガで安看姻糸永姻艶壊壊云悶やプラグインの巌樋來を弖いかけてみよう
デバッガで安看姻糸永姻艶壊壊云悶やプラグインの巌樋來を弖いかけてみよう
Hiroshi Tokumaru
?
Usenix Security2009 Report Suzaki
Usenix Security2009 Report Suzaki
Kuniyasu Suzaki
?
階互堀g樹珂温温皆アプリ蝕k讐恙
階互堀g樹珂温温皆アプリ蝕k讐恙
Masaki Ito
?
サ`バ`フレ`ムワ`クに捻んでる巌樋來返ツ`ル府初
サ`バ`フレ`ムワ`クに捻んでる巌樋來返ツ`ル府初
gree_tech
?
麿繁並ではない安艶恢セキュリティ
麿繁並ではない安艶恢セキュリティ
Yosuke HASEGAWA
?
Adobe ReaderのJavaScript APIの喘 by Abdul-Aziz Hariri & Brian Gorenc - CODE BLU...
Adobe ReaderのJavaScript APIの喘 by Abdul-Aziz Hariri & Brian Gorenc - CODE BLU...
CODE BLUE
?
1.冩梢テ`マ僉協
1.冩梢テ`マ僉協
nasunasu
?
芦畠な永堰永アプリケ`ションの恬り圭2016
芦畠な永堰永アプリケ`ションの恬り圭2016
Hiroshi Tokumaru
?
安艶恢アプリケ`ションのセキュリティ
安艶恢アプリケ`ションのセキュリティ
Tokai University
?
osc2016do ひけ?て?僥ふ?Webアフ?リケ`ションに捻むリスク
osc2016do ひけ?て?僥ふ?Webアフ?リケ`ションに捻むリスク
Ierae Security
?
Security Learning Vol2 }の巌樋來をコ`ドで~盾く
Security Learning Vol2 }の巌樋來をコ`ドで~盾く
YOJI WATANABE
?
20150704 icst 2015-maruwakari_day_matsuo
20150704 icst 2015-maruwakari_day_matsuo
Kazuaki Matsuo
?
ライブコ`ディングとデモで尖盾する安艶恢セキュリティの児粥
ライブコ`ディングとデモで尖盾する安艶恢セキュリティの児粥
Takahisa Kishiya
?
飛返エンジニアのためのセキュリティ讐恙
飛返エンジニアのためのセキュリティ讐恙
Hiroshi Tokumaru
?
ソ`スで僥ぶ巌樋來\僅 - SmartTechGeeks #2
ソ`スで僥ぶ巌樋來\僅 - SmartTechGeeks #2
tobaru_yuta
?
アプリケ`ションのシフトレフトをg樹するには
アプリケ`ションのシフトレフトをg樹するには
Riotaro OKADA
?
IDAの巌樋來とBug Bounty by 認弥 囘苧
IDAの巌樋來とBug Bounty by 認弥 囘苧
CODE BLUE
?
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
tobaru_yuta
?
HTML5 Web アプリケ`ションのセキュリティ
HTML5 Web アプリケ`ションのセキュリティ
嫦 翫仇
?
デバッガで安看姻糸永姻艶壊壊云悶やプラグインの巌樋來を弖いかけてみよう
デバッガで安看姻糸永姻艶壊壊云悶やプラグインの巌樋來を弖いかけてみよう
Hiroshi Tokumaru
?
Usenix Security2009 Report Suzaki
Usenix Security2009 Report Suzaki
Kuniyasu Suzaki
?
階互堀g樹珂温温皆アプリ蝕k讐恙
階互堀g樹珂温温皆アプリ蝕k讐恙
Masaki Ito
?
サ`バ`フレ`ムワ`クに捻んでる巌樋來返ツ`ル府初
サ`バ`フレ`ムワ`クに捻んでる巌樋來返ツ`ル府初
gree_tech
?
麿繁並ではない安艶恢セキュリティ
麿繁並ではない安艶恢セキュリティ
Yosuke HASEGAWA
?
Adobe ReaderのJavaScript APIの喘 by Abdul-Aziz Hariri & Brian Gorenc - CODE BLU...
Adobe ReaderのJavaScript APIの喘 by Abdul-Aziz Hariri & Brian Gorenc - CODE BLU...
CODE BLUE
?
1.冩梢テ`マ僉協
1.冩梢テ`マ僉協
nasunasu
?

仝恷除のwebアプリケ`ションの巌樋來やそれを喘する好弔嗜髻OWASP Kansai

  • 2. |奨寄僥 秤麪Лh アジェンダ 2 ? Struts 2(S2-045/046)の巌樋來について ? 恷除のWebアプリケ`ションにする好嗜 ? Webアプリケ`ションの巌樋來を喘する好 から便るためには ? まとめ
  • 3. |奨寄僥 秤麪Лh 徭失B初 ? 2004定゛NECソリュ`ションイノベ`タにて、ソフト _kやSIなどに愱 ? 2015定゛JPCERTコ`ディネ`ションセンタ`に竃 し、巌樋來編^やログ蛍裂に愱 ? 2017定゛|奨寄僥秤麪Лhに竃鬚掘▲札ュリティ繁 可圄撹や冩梢に愱 ? 翌試?鵡P麗など C ISOG-J 巌樋來\僅平Web アプリケ`ション C v處や巌樋來秤鵑琉k佚 Apache Commons Collectionsの巌樋來盾h(CodeZine) https://codezine.jp/article/detail/9150 3
  • 5. |奨寄僥 秤麪Лh Struts 2の巌樋來(S2-045/046) ? 書定3埖に巷_され、謹くの晩云Mが瓜墾を鞭けた ? 巌樋來喘により、リモ`トから販吭のコ`ドをg佩できる ? 巷塀アップデ`トの巷_念に好張芥`ドが巷_された ? 貌のStruts 2の巌樋來が羨てAけに巷_されている ☆Struts 2はWebアプリケ`ションの_kフレ`ムワ`ク Web アプリケ`ション 垢した リクエスト Webサ`バ Struts 2 好蔦澆峺協した コ`ドがサ`バ貧で g佩される 5 哈喘 https://www.lac.co.jp/lacwatch/alert/20170310_001246.html
  • 7. |奨寄僥 秤麪Лh Struts 2の巌樋來喘の並箭 ? 忽坪Mで寄トな秤鸛竃の瓜墾がk伏 C WebサイトにバックドアがO崔され、クレジットカ`ド秤 鵑送竃 2017/3/06 2017/3/07 2017/3/08 22:14 巌樋來秤 が_k宀鬚 サイトに巷_ 15:21 好張芥`ド巷_ 4:54 サ`バへの好弔魎_J 匚 巷塀アップデ`ト巷_ Struts 2の巌樋來にvする、ある瓜墾Mのタイムライン 2017/3/09 21:56 音なリクエス トを孳僅 抓猗來秤鷙_ 攅弔魎_J 杙惘棆烝m喘 2017/3/10 11:15 Webサイト唯峭 ∠サ`ビス唯峭 7
  • 8. |奨寄僥 秤麪Лh Struts 2について ? MVC (Model/View/Controller) モデルにもとづくオ`プ ンソ`スのJavaの Web アプリケ`ションフレ`ムワ`ク ? Struts 2に巌樋來がつかると、それを旋喘しているソフ トウエアやWebアプリが唹を鞭ける サ`バ リクエストとActionの vB原け Struts 2 Action1ActionMapper JSP1 ViewController Model JSP2 /action1.action /action2.action Action2 APサ`バ 8
  • 9. |奨寄僥 秤麪Лh S2-045の巌樋來を喘する好 ? multipart/form-dataをI尖するStruts 2覆離僣`サ (JakartaMultiPartRequest)のエラ`I尖にvする巌樋來 ? Content-TypeにOGNLを根めてリクエスト 9 APサ`バ Struts アプリケ`ション 垢した リクエスト ContentType: %{(#nike=`multipa rt/form-data¨).(#dm=@ognl. OgnlContext@DEFAULT_MEM BER_ACCESS).???} サ`バ Struts 2 Content-Typeが音屎な侘 塀の栽、エラ`がk伏 エラ`I尖でOGNLコ`ド がuされ、販吭のコ`ド がg佩される
  • 10. |奨寄僥 秤麪Лh OGNL(Object Graph Navigation Language) ? JSPなどからJavaクラスのプロパティやメソッドにgにアク セスできるプログラミング冱Z ? Struts 2はOGNLをサポ`トしており、坪何議にも聞っている ? 匯圭、リクエストを宥じて販吭の Java コ`ドがg佩できるた め、セキュリティ}を哈き軟こすリスクもある View (JSP with OGNL) <s:property value="%{sampleList.size}"/> <s:property value="%{sampleList[0]}"/> Action (Java Class) public class SampleAction extends ActionSupport { private List<String> sampleList; public List<String> getSampleList() { return sampleList; } public void setSampleList(List<String> sampleList) { this.sampleList = sampleList; } public String execute() throws Exception { ??? } } 10 SampleActionクラスの sampleListプロパティにアクセス
  • 11. |奨寄僥 秤麪Лh S2-046の巌樋來を喘する好 ? S2-045巷_から10晩瘁、仟たな好張戰トルがkし、弖紗のア ドバイザリが巷_された ? Struts 2覆eのパ`サ(JakartaStreamMultiPartRequest)のエラ` I尖に揖の巌樋來 ? メッセ`ジボディのContent-Disposition にOGNLを根む垢した 猟忖双を根める 11 APサ`バ Struts アプリケ`ション 垢した リクエスト Content-Disposition: form-data; name="upload"; filename="%{#context[´ サ`バ Struts 2 Content-Lengthが階^し ている栽、エラ`がk伏 OGNLコ`ドがuされ、 販吭のコ`ドがg佩される
  • 12. |奨寄僥 秤麪Лh S2-045,46にする指閲貨 ? 音なリクエストの孳僅(WAF/サ`ブレットフィルタ) ? WAF(Web Application Firewall) C Webアプリケ`ションに蒙晒したファイアウォ`ル C 宥佚の嶄附(ペイロ`ド)をチェックすることが辛嬬 ? 音屎なリクエストかどうかの登僅箭 C Content-TypeやリクエストボディにOGNL燕F (OgnlContext,OgnlUtil,#context など)が根まれないか ? OGNLに軟咀するその麿の巌樋來を粧う好弔砲瞋 だが、屎、離螢エストを孳僅しないように廣吭 12
  • 13. |奨寄僥 秤麪Лh サ`ブレットフィルタ ? サ`ブレットをg佩する念のI尖を佩うJavaプログラム C I尖の尅り蛍け、リクエストのフィルタリング、慌宥の I尖など ? サ`ブレットとは C Javaでg廾されたサ`バサイドプログラムのこと ? 弖紗のu瞳秘が音勣な郡中、Mみzみがyしい蕉中もある サ`バ Struts 2 Action1 Servlet Filter1 JSP1 ViewController Model JSP2 /xx.action (屎、離螢エスト) Action2 Servlet Filter2 音屎なリクエストの フィルタリング 垢した リクエスト
  • 15. |奨寄僥 秤麪Лh 販吭のコ`ドg佩の巌樋來 15 巌樋來 CVE r豚 ソフトウエア PHP/Joomla! の巌樋來 CVE-2015-6835, CVE-2015-8562 2015定8埖, 12埖 PHPライブラリ/CMS Apache Commons Collectionsの巌樋來 D 2015定11埖 Javaライブラリ Magento 2の巌樋來 CVE-2016-4010 2016定5埖 PHPベ`スのCMS node-serialize の巌樋來 CVE-2017-5941 2017定3埖 Javascriptライブラリ ? 販吭のコ`ドg佩が辛嬬となる巌樋來とそれを喘する好 が謹方_Jされている ? CMS、ライブラリなどWebアプリの_kを屶址するソフトウ エアの巌樋來が謹い ? 仝オブジェクトインジェクション々に軟咀する巌樋來がえ てきている
  • 16. |奨寄僥 秤麪Лh }その ? Webアプリの_kを屶址するためのソフトウエアの栽 C プログラムと畜俊にvSする C ?なソフトやアプリで聞われており、唹譴レい ? アップデ`トが戻工されても、堀やかなm喘がyしい栽も C 唹譴燐{砲寄 C 俐屎が裏弌でもテストが寄 16 ????????????????????????? ????????????????????????? ????????????????????????? ????????????????????????? ????????????????????????? {砲肇謄好塙なが かさむ 俐屎w侭は 富ない栽でも?? 唹譴レい
  • 17. |奨寄僥 秤麪Лh オブジェクトインジェクションとは ? 吭蹐靴覆ぅブジェクトが伏撹されること C オブジェクト坤廛蹈哀薀潺鵐委壞Zで、あるC嬬にvBするプロパ ティとI尖をまとめたもの ? アンシリアライズI尖の編^音笋弐Cになることが謹い C シリアライズ坤ブジェクトの彜Bを隠隔したまま僕鞭佚したり、 ファイルへiみきを佩うために蒙協のデ`タ侘塀にQすること C アンシリアライズQされたデ`タをプログラムでQえるオブ ジェクトの侘塀に痌すること 17Webアプリケ`ション 找師なオブジェクトを シリアライズして僕佚 垢した リクエスト 敲榻鼎靴織禰`タを アンシリアライズ 吭蹐靴覆 オブジェクト 柢蹐靴覆ぅブジェ クトが伏撹される
  • 18. |奨寄僥 秤麪Лh }その ? ライブラリやフレ`ムワ`クの巌樋來を喘する好弔撹 羨するのは、旋喘(アプリ)のg廾にも}があるケ`スが 謹い ★gにパッチをm喘するだけでは、功云議Iとならない 18 巌樋來 ライブラリの} 旋喘する箸} PHP/Joomla! の巌樋來 PHPの} 猟忖双のアンシリアライズが 屎しく佩われず、オブジェク トを痌してしまう Joomla!の} アンシリアライズI尖の决L でリスクがあるI尖を佩って いる Apache Commons Collectionsの巌樋來 アンシリアライズrに啜弔 コ`ドをg佩できるクラスが 贋壓する APサ`バなどの} アンシリアライズ鵐ブ ジェクトにする編^音 Magento 2の巌樋來 アンシリアライズI尖の决L でリスクがあるI尖を佩って いる D node-serialize の巌樋來 v方(I尖)を根めたシリアラ イズが辛嬬 佚mできないデ`タをアンシ リアライズしている
  • 19. |奨寄僥 秤麪Лh }その ? PHP/Joomla!の巌樋來箭 C PHP坤札奪轡腑鵑鬟妊芥`ドするライブラリに巌樋が贋壓(CVE- 2015-6835) C Joomla!塞腕ライブラリを旋喘するCMS(CVE-2015-8562) 19 Webサ`バ 拏垢したリクエスト Joomla!User-Agent PHP 撻螢エストに根まれる、 シリアライズして隠贋 Serialized UA 音屎なオブ ジェクト ∠アンシリアライズrに徭 議にg佩されるI尖によって 販吭のコ`ドがg佩される User- Agent 垢したリクエストの箭 巌樋な ライブ ラリ 曠▲鵐轡螢▲薀ぅ困垢襪函 吭蹐靴覆ぅブジェクトが 伏撹される
  • 20. |奨寄僥 秤麪Лh Webアプリケ`ションの巌樋來を 喘する好弔ら便るためには ? Webアプリで聞喘するソフトウエアのアップデ`ト ? ライブラリの旋喘箸I尖の岷し C 秘薦チェック ☆秘薦チェックは?な巌樋來への貨として嗤 ? アンシリアライズr、鵑吭蹐靴織ラス(デ`タ侏)で あるかをチェック ? アンシリアライズしたオブジェクトの彜Bをチェック C アンシリアライズrのI尖に廣吭 ? 徭啜弔g佩されるv方(Magic Method)に廣吭 20
  • 21. |奨寄僥 秤麪Лh 廣吭すべきAPIの箭 21 クラス兆 メソッド兆 h苧 Serializableをg 廾するクラス readObject ☆ 云メソッドをオ`バライドしている 栽、輝クラスのデシリアライズrに g佩される Serializableをg 廾するクラス readResolve ☆ 云メソッドをオ`バライドしている 栽、輝クラスのreadObject() のg佩 瘁に柵び竃され、デシリアライズする オブジェクトを崔Qできる Externalizableを g廾するクラス readExternal ☆ 云メソッドをオ`バライドしている 栽、輝クラスのデシリアライズrに g佩される JavaのアンシリアライズにvBするAPIの箭 ☆アンシリアライズrに徭啜弔g佩されるv方
  • 22. |奨寄僥 秤麪Лh 廣吭すべきAPIの箭 22 クラス兆 v方兆 h苧 D unserialize 隠贋喘の猟忖双侘塀をオブジェクトに アンシリアライズする シリアライズ 鵑離ラス __destruct()☆ オブジェクトが篤されるHのI尖を 協xする蒙歩v方であり、アンシリア ライズrにg佩される シリアライズ 鵑離ラス __wakeup()☆ アンシリアライズrに徭啜弔g佩さ れる シリアライズ 鵑離ラス __toString() print(),echo()などを聞喘し、オブジェ クトの坪否を燕幣したHにg佩される。 PHPのアンシリアライズにvBするAPIの箭 ☆アンシリアライズrに徭啜弔g佩されるv方
  • 23. |奨寄僥 秤麪Лh Webアプリケ`ションの巌樋來を 喘する好弔ら便るためには ? 堀やかな俐屎がyしい栽の\喘議指閲貨 C WAFの秘 C m俳なアクセス崙囮のg仏 ? 佚mできない俊A圷の崙 ? J^のO協 C Webアプリが辛嬬な嘛を崙 ? Webアプリのg佩ユ`ザ慙 ? プログラムg佩h廠のセキュリティC嬬(Security Managerなど) ? 好弔返するための貨 C ログのO協と隠贋 ? S2-045を返するためにはContent-Typeのhが駅勣 23
  • 24. |奨寄僥 秤麪Лh まとめ ? リモ`トから販吭のコ`ドg佩が辛嬬となる巌樋來は{ 璃業が互い ? フレ`ムワ`クやCMSは宴旋な郡中、巌樋來がつかっ た栽の{砲yしく、また唹譴レいというデメ リットもある ? ライブラリやフレ`ムワ`クのアップデ`トとあわせて、 旋喘箸g廾を書匯業岷すことが寄俳 ? 堀やかな俐屎がyしい栽の\喘議指閲貨、好弔 岑?{砲垢襪燭瓩離蹈鞍ゝ辰皹慴 24
  • 25. |奨寄僥 秤麪Лh (歌深) S2-045の巌樋來(CVE-2017-5638) ? multipart リクエストをI尖するStruts 2覆離僣`サ (JakartaMultiPartRequest)のエラ`I尖にvする巌樋來 C 聞喘するパ`サを覆ら筝していない栽に唹を鞭ける C パ`サのC嬬を聞っていなくても唹を鞭ける C Content-Type が音屎な侘塀の栽、エラ`がk伏し、巌樋來がある I尖がg佩される 25 APサ`バ Struts アプリケ`ション 垢した リクエスト サ`バ Struts 2 エラ`I尖に巌樋來があり、 OGNLコ`ドがg佩される StrutsPrepareFilter JakartaMultiPartRequest content_typeに^multipart/form-data ̄ があると、JakartaMultiPartRequest がg佩される
  • 26. |奨寄僥 秤麪Лh (歌深) S2-046の巌樋來(CVE-2017-5638) ? multipart リクエストをI尖するStruts 2Mみzみのパ`サ (JakartaStreamMultiPartRequest)のエラ`I尖に揖の巌樋來 C 聞喘するパ`サをjakarta-streamにO協している栽に唹を鞭ける C 覆離僣`サ(JakartaMultiPartRequest)聞喘rの唹は苧されていない C Content-lengthが貧泙魍^している栽、エラ`がk伏し、巌樋來があ るI尖がg佩される 26 APサ`バ Struts アプリケ`ション 垢した リクエスト サ`バ Struts 2 エラ`I尖に巌樋來があり、 OGNLコ`ドがg佩される StrutsPrepareFilter JakartaStreamMultiPartRequestcontent_typeに^multipart/form-data ̄があ ると、O協に鬉犬織僣`サをg佩 jakarta-streamの栽は JakartaStreamMultiPartRequestをg佩
  • 27. |奨寄僥 秤麪Лh (歌深) S2-045,46にする指閲貨 ? 音なリクエストの孳僅(WAF/サ`ブレットフィ ルタ) ? 音屎なリクエストかどうかの登僅箭 C Content-Type ? multipart/form-dataが根まれるが、輝猟忖双で兵まっていな い ? OGNL燕F (OgnlContext,OgnlUtil,#context など)が根まれる C リクエストボディ(Content-Dispostion) ? OGNL燕F (OgnlContext,OgnlUtil,#context など)が根まれる C Content-Length ? 覿參貧の、峺協されている 27
  • 28. |奨寄僥 秤麪Лh 歌深Y創 ? Javaのデシリアライズにvする}への貨 http://codezine.jp/article/detail/9176 ?What Do WebLogic, WebSphere, JBoss, Jenkins, OpenNMS, and Your Application Have in Common? This Vulnerability. http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere- jboss-jenkins-opennms-and-your-application-have-in-common-this- vulnerability/ ?Sec Bug #70219 Use after free vulnerability in session deserializer https://bugs.php.net/bug.php?id=70219 ?[20151201] - Core - Remote Code Execution Vulnerability https://developer.joomla.org/security-centre/630-20151214-core- remote-code-execution-vulnerability.html ?Joomla!の仝ゼロデイコ`ドg佩巌樋來々はPHPの屡岑の巌樋來が圻咀 http://blog.tokumaru.org/2015/12/joomla-zero-day-attack-caused-by- php.html 28