網頁注入(Web Injection)是每位程式設計師、開發者和資訊安全(InfoSec)專家所頭疼的問題,也是網路犯罪工具包內常備的工具。特別是跨站腳本、命令注入、SQL注入和XML注入都是網站和網頁應用程式經常遭遇到的攻擊,因為這些攻擊可以透過多種方式執行。防護方案的複雜性也增加了防禦的困難度。
四種網頁注入攻擊
保護平台不讓個人及財務資料失守是企業在營運、商譽和利潤方面重要的一環。以下是資安人員經常會遇到的四種網頁注入攻擊:
- SQL注入(SQL Injection, SQLi)
SQL注入可以用來入侵使用資料庫的軟體,被開放網路軟體安全計畫(OWASP)視為侵入網站及SQL資料庫最常見的技術之一。SQLi將惡意SQL語法插入輸入字串(作為指令或查詢的一部分),並且利用了軟體或網頁應用程式的漏洞 – 例如沒有正確地過濾使用者輸入。比方說,攻擊者可以將惡意輸入變成SQL查詢的參數,讓資料庫認為是SQL指令的一部分而執行。
SQLi攻擊成功可以讓駭客偽裝成目標身份並取得資料庫伺服器的管理權限。駭客接著可以修改現有資料(如取消交易),取出系統內的資料,破壞、覆蓋或刪除資料,甚至使其無法連線。對於會用如何入侵網路來威脅企業付奬金的漏洞獵人以及會刪除網站內容並將其活動偽裝成勒索病毒的壞人來說,這一直是個首選技術。SQLi還被用來竄改網站以及公開儲存在資料庫內的個人識別資料、帳密和敏感公司資料。
- 命令注入(Command Injection)
不同於SQLi攻擊針對資料庫相關網頁應用程式/服務,命令注入讓攻擊者插入惡意shell命令到網站主機作業系統。像是可以找出應用程式安裝的目錄並在那執行惡意腳本。命令注入讓駭客可以利用有漏洞的網頁應用程式來執行任意命令 – 例如當應用程式將表單、HTTP標頭和cookie內的惡意內容帶到系統shell時。此類攻擊就會用這不安全應用程式的權限執行。
簡而言之,當惡意輸入被誤認為作業系統命令時就會發生命令注入,讓壞人可以取得檔案或網頁伺服器的控制。2014年的Shellshock攻擊就是一例:它們讓攻擊者可以修改網頁伺服器內容、變更網站代碼、竊取或外洩資料、變更權限以及安裝後門等惡意軟體。電子郵件寄送程式庫的網站元件出現漏洞時也都會成為頭條,例如聯絡人、註冊及密碼重設郵件表單。
- XML外部實體注入(XML External Entity Injection, XXE)
這類攻擊不像SQLi或跨站腳本那樣常出現,但XML外部實體注入(XXE)最近也獲得了關注。XML(可延伸標記式語言)支援外部實體。可以用來引用或調用主檔案外的資料到XML文件。XXE會攻擊網頁應用程式解析未知或可疑來源XML輸入時的漏洞。將惡意內容注入將使用者或客戶資料輸入應用程式的文件(如XML檔案)。
XXE攻擊成功可以讓駭客存取內部網路或服務、讀取存放在伺服器上的系統檔案以及掃描內部端口。在某些狀況下,XXE可以讓攻擊者執行遠端程式碼(比方說透過載入惡意可執行PHP程式碼)。這些都取決於解析器的權限。
XXE被用來成功地在Facebook執行遠端程式碼,由此成為最高的bug獎金之一。XXE漏洞最近也出現在經常用於Mac應用程式的更新框架、Adobe ColdFusion的XML解析器(CVE-2016-4264)、Google搜尋引擎的一個功能以及Magento使用的PHP工具包(Zend)。