Post on 29-Jun-2015
description
XOOPS Cube and Security
WeeklyCMS 6.25 at Microsoft Japan
自己紹介 Yoshi Sakai
有限会社ブルームーン ソフト開発 代表取締役Bluemooninc.jp
XOOPS Cube YouTube Channel and SNSXoopscube.info
WeeklyCMS USTREAM TV Show
@bluemooninc
Guitar freak
How to keepSecure CMS
Use ProtectorModule
CheckSourceCode
Use XOOPSFunction
CheckVulnerabilityInformation
ProtectorModule
Guard your site
XSS
SQLInjection
DoS Attack
- 悪意あるクローラー(メール収集ボットなど)- システムグローバル変数汚染- セッションハイジャック- ヌルバイト攻撃- ディレクトリ遡り攻撃- いくつかの危険な CSRF (XOOPS 2.0.9.2Under)- Brute Force (パスワード総当たり)- 拡張子偽装画像ファイルアップロード ( すなわち、 IE Content-Type XSS)- 実行可能なファイルをアップロードする攻撃- XMLRPC 関連- コメント SPAM/ トラックバック SPAM等、あらゆる SPAM
Check Source Code
foreach ($_POST as $key => $value){ $$key = $value;}foreach ($_GET as $key => $value){ $$key = $value;}
$hoge = isset($_GET[‘hoge’]) ? $_GET[‘hoge’] : 0;
Check Source Code
DO NOT use foreach $_POST and $_GET
$hoge = isset($_GET[‘hoge’]) ? Intval($_GET[‘hoge’]) : 0;
$hoge = isset($_GET[‘hoge’]) ? htmlspecialchars($_GET[‘hoge’], ENT_QUOTES) : “”;
SQLInjection
// a good user's name$name = "timmy"; $query = "SELECT * FROM customers WHERE username = '$name'”;echo "Normal: " . $query . "<br />”;// user input that uses SQL Injection$name_bad = "' OR 1'"; // not a very safe one$query_bad = "SELECT * FROM customers WHERE username = '$name_bad'”;
$name_bad=addslashes($name_bad);
SELECT * FROM customers WHERE username = '' OR 1'' SELECT * FROM customers WHERE username = '\' OR 1\''
MyTextSanitizer
class for HTML
$myts =& MyTextSanitizer::getInstance();
GET や POST で取得した文字列 (VARCHAR 型 ) を HTML 上に表示したい ⇒ makeTboxData4Preview()GET や POST で取得した文字列 (VARCHAR 型 ) を HTML のテキストフォーム内に表示したい ⇒ makeTboxData4PreviewInForm()GET や POST で取得した文字列 (TEXT 型 ) を HTML 上に表示したい ⇒ makeTareaData4Preview()GET や POST で取得した文字列 (TEXT 型 ) を HTML のテキストフォーム内に表示したい ⇒ makeTareaData4PreviewInForm()
MyTextSanitizer
class for DBGET や POST で取得した文字列 (VARCHAR 型 ) を DB に格納したい ⇒ makeTboxData4Save()DB から取得した文字列 (VARCHAR 型 ) を HTML 上に表示したい ⇒ makeTboxData4Show()DB から取得した文字列 (VARCHAR 型 ) を HTML のテキストフォーム内に表示したい ⇒ makeTboxData4Edit()GET や POST で取得した文字列 (TEXT 型 ) を DB に格納したい ⇒ makeTareaData4Save()DB から取得した文字列 (TEXT 型 ) を HTML 上に表示したい ⇒ makeTareaData4Show()DB から取得した文字列 (TEXT 型 ) を HTML のテキストフォーム内に表示したい ⇒ makeTareaData4Edit()
XOOPS
• http://xoopscube.jp/news• http://www.xoops.org/modules/news
Site
• http://www.ipa.go.jp/• http://jvn.jp/• http://secunia.com/
Book
• 体系的に学ぶ 安全な Web アプリケーションの作り方 脆弱性が生まれる原理と対策の実践
• PHPサイバーテロの技法―攻撃と防御の実際