XOOPS Securilty flow

Post on 29-Jun-2015

738 views 2 download

description

How to keep your site safety

Transcript of XOOPS Securilty flow

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サイバーテロの技法―攻撃と防御の実際