作者:Allen Own,2010 年 5 月投稿。
我們在前篇已經有介紹一些駭客的思維以及攻擊手法,接下來我們要介紹身為開發者的我們,要如 何去確保自己的網站應用程式是安全無虞的。透過網路上 OWASP 組織提供的防護方法以及弱點介紹,我們可以很快的檢視自己的網站是否有安全弱點。以下我們會介紹 OWASP Top 10 十大網站安全弱點,以十項最常見的弱點來介紹網站的安全問題。
OWASP 是一個開放社群的非營利組織,致力於改善網站應用程式的安全性。OWASP Top 10 揭露常見的網站應用程式弱點,以供軟體開發安全參考。
通常我們會針對 OWASP Top 10 來進行基本的網站安全風險說明。目前 OWASP Top 10 釋出 2010 年版。十大風險如下:
以下針對這十大風險做一個簡單的介紹。
網站應用程式執行來自外部包括資料庫在內的惡意指令,SQL Injection 與 Command Injection 等攻擊包括在內。 因為駭客必須猜測管理者所撰寫的方式,因此又稱「駭客的填空遊戲」。
舉例來說,原本管理者設計的登入頁面資料庫語法如下:
$str = "SELECT * FROM Users WHERE Username='“.$user."' and Password=‘”.$pass."'“;
如果說 $user 以及 $pass 變數沒有做保護,駭客只要輸入「’ or ‘‘=’」字串,就會變成以下:
$str = “SELECT * FROM Users WHERE Username='' or ''='' and Password= '' or ‘’=‘’”;
如此一來,這個 SQL 語法就會規避驗證手續,直接顯示資料。
簡述駭客攻擊流程:
防護建議:
網站應用程式直接將來自使用者的執行請求送回瀏覽器執行,使得攻擊者可擷取使用者的 Cookie 或 Session 資料而能假冒直接登入為合法使用者。
此為目前受災最廣的攻擊。簡稱 XSS 攻擊。攻擊流程如下圖:
防護建議:
網站應用程式中自行撰寫的身分驗證相關功能有缺陷。例如,登入時無加密、SESSION 無控管、Cookie 未保護、密碼強度過弱等等。
例如:
應用程式 SESSION Timeout 沒有設定。使用者在使用公用電腦登入後卻沒有登出,只是關閉視窗。攻擊者在經過一段時間之後使用同一台電腦,卻可以直接登入。
網站並沒有使用 SSL / TLS 加密,使用者在使用一般網路或者無線網路時,被攻擊者使用 Sniffer 竊聽取得 User ID、密碼、SESSION ID 等,進一步登入該帳號。
這些都是身分驗證功能缺失的例子。
管理者必須做以下的檢查:
防護建議:
攻擊者利用網站應用程式本身的檔案讀取功能任意存取檔案或重要資料。進一步利用這個弱點分析網站原始碼、系統帳號密碼檔等資訊,進而控制整台主機。
例如:http://example/read.php?file=../../../../../../../c:\boot.ini。
防護建議:
已登入網站應用程式的合法使用者執行到惡意的 HTTP 指令,但網站卻當成合法需求處理,使得惡意指令被正常執行。
舉例來說,攻擊者在網站內放置了<img src="http:/server.com/send.asp?to=xxx" border="0" />
,受害者讀取到此頁面之後,就會去 server.com 主機執行 send.asp 惡意行為。
例如 Web 2.0 時代的社交網站等等,都是 CSRF 攻擊的天堂。
防護建議:
或者參考 OWASP 所提供的 CSRF Solution
系統的安全性取決於應用程式、伺服器、平台的設定。因此所有設定值必須確保安全,避免預設帳號、密碼、路徑等。甚至被 Google Hacking 直接取得攻擊弱點。
防護建議:
各種設備、系統的預設密碼,都可以在網路上找到一些整理資料。 http://www.phenoelit-us.org/dpl/dpl.html http://www.routerpasswords.com/ http://www.defaultpassword.com/
網頁因為沒有權限控制,使得攻擊者可透過網址直接存取能夠擁有權限或進階資訊的頁面。例如管理介面、修改資料頁面、個人機敏資訊頁面洩漏等等。
舉例來說,
/admin
/backup
/logs
/phpmyadmin
/phpinfo.php
/manage
這些都是常見的路徑及檔案。攻擊者只要猜測到,就可以操弄主機。
防護建議:
網頁應用程式經常將使用者 Forward 或 Redirect 至其他頁面或網站,沒有驗證的機制。攻擊者可將受害者導向至釣魚網站或惡意網站,甚至存取受限制的資源。
例如: http://example.cc/redir.jsp?url=evil.com http://example.cc/func.jsp?fwd=admin.jsp http://g.msn.com/9SE/1?http://xxx.com
防護建議:
網 站應用程式沒有對敏感性資料使用加密、使用較弱的加密演算法或將金鑰儲存於容易被取得之處。加密演算法是安全防護的最後一道防線,當駭客取得了帳號密碼, 可以簡單的使用一些破解軟體甚至線上服務進行破解。例如 Cain & Abel,MD5 Reverse Lookup 等。
防護建議:
網頁應用程式未在傳輸機敏資訊時提供加密功能,或者是使用過期、無效的憑證,使加密不可信賴。
例如:攻擊者竊聽無線網路,偷取使用者cookie;網站憑證無效,使用者誤入釣魚網站。
防護建議:
Cookie Secure Flag 設定:
● PHP setcookie ("TestCookie", "", time() - 3600, “/", ".example.com", 1);
● JSP cookie.setSecure(true);
● ASP.NET cookie.Secure = True;
以上 OWASP Top 10 包含了大部分常見的網站安全弱點,但並不是只有這些。管理者必須時時注意最新的資安消息,並且對自己的主機定時進行更新,檢查系統記錄檔,絕不可有僥倖之心。如此一來,才能確保主機處於安全的狀態。
以下附上常見的弱點資料庫以及網站淪陷資料庫,管理者可以定期瀏覽最新的資訊安全消息,並且檢查自己的網站有沒有在淪陷資料庫榜上有名。
弱點資料庫 CVE - Common Vulnerabilities and Exposures (CVE) SecurityFocus National Vulnerability Database VUPEN Security
網站淪陷資料庫 TW 網站淪陷資料庫 Zone-H
翁浩正 ( Allen Own ) 網駭科技技術顧問,資安團隊 NISRA 創辦人,多年網路管理、資訊安全、駭客攻防技術經驗,自覺什麼都沒有,只有滿腔熱血。