**:
在 owasp 組織列舉的十大 web 應用安全隱患中,有兩個概率最高的攻擊手段,它們分別是「跨站點指令碼攻擊」(cross-site scripting)和「注入缺陷」(injection flaws)。下面將通過舉例來說明這兩種攻擊是如何實施的。
1、 跨站點指令碼攻擊
首先來看一下跨站點指令碼的利用過程,如圖
在上圖中,惡意攻擊者(這裡使用 evil.org 表示)通過 e-mail 或 http 將某銀行的**鏈結發給使用者(銀行用 bank.com 表示),該鏈結中附加了惡意的指令碼(上圖步驟一);使用者訪問發來的鏈結,進入銀行**,同時,嵌在鏈結中的指令碼被使用者的瀏覽器執行(上圖步驟
二、三);用 戶在銀行**的所有操作,包括使用者的 cookie 和 session 資訊,都被指令碼收集到,並且在使用者毫不知情的情況下發送給惡意攻擊者(上圖步驟四);惡意攻擊者使用偷來的 session 資訊,偽裝成該使用者,進入銀行**,進行非法活動(上圖步驟五)。
因此,只要 web 應用中,有可被惡意攻擊者利用執行指令碼的地方,都存在極大的安全隱患。黑客們如果可以讓使用者執行他們提供的指令碼,就可以從使用者正在瀏覽的域中偷到他的個人 資訊、可以完全修改使用者看到的頁面內容、跟蹤使用者在瀏覽器中的每乙個動作,甚至利用使用者瀏覽器的缺陷完全控制使用者的機器。
目前,跨站點指令碼攻擊是最大的安全風險。
2、 注入缺陷
下面我們舉乙個例子來說明注入缺陷是如何進行的。在乙個交易**中,使用者必須輸入產品 id 號才可以檢視該產品的詳細資訊。為了實現這個需求,通常會用 sql
語句查詢資料庫
來實現。開發人員在編寫應用程式時,可能會使用如下的 sql 語句來實現上述目的(這裡僅為示例):
1) select * from products where product_id = ` + 使用者輸入的 id + `
這裡的 products 是資料庫中用來存放產品資訊的表,+號表示 sql 語句需要和使用者輸入的真實 id 進行拼接。如果使用者輸入 325,則該語句在執行時變為:
select * from products where product_id = ` 325 `
資料庫會將 id 為 325 的產品資訊返回給使用者。
2) 在介面上,需要使用者輸入產品 id 的地方,黑客會輸入如下資料:
` or `1`= `1
可以看到,黑客並沒有輸入正常合法的產品編號。
3) 通過黑客的非法輸入,需要執行的 sql 語句變為:
select * from products where product_id = ` ` or `1`=`1`
可以看出,sql 語句的意義就完全改變了,當產品 id 為空或者 1=1 時,返回產品所有資訊,而 1=1 是永遠成立的條件,因此,黑客並沒有輸入任何產品編號,就可以返回資料庫中所有產品的詳細資訊。
通過這個例子,我們可以看出,注入缺陷是風險非常高的安全漏洞,一旦 web 應用中給使用者提供了需要其輸入資料的介面,就有可能遭到攻擊,將後台的資料完全暴露在使用者的面前。
上述說明的「跨站點指令碼攻擊」和「注入缺陷攻擊」,是目前 web 應用中比例最高的兩種攻擊手段,按照 owasp 的專案排序,還有如下八種風險性較高的攻擊方法:
*malicious file execution(惡意檔案執行);
*insecure direct object reference(不安全的直接物件引用);
*cross-site request forgery(跨站點的請求偽造); *information leakage and improper error handling(資訊洩漏和不正確的錯誤處理);
*broken authentication & session management(損壞的認證和 session 管理);
*insecure cryptographic storage(不安全的密碼儲存);
*insecure communications(不安全的通訊);
*failure to restrict url access(未能限制 url 訪問)
常見WEB應用攻擊影響分析
黑客攻擊利用的漏洞型別包括 1.sql注入漏洞 sql注入漏洞是利用了將包含了某種目的的sql語句,通過關鍵變數插入到程式中正常的資料庫操作語句裡。如 hack drop table aritcles hack是正常應提交的 當使用 微軟的sql server,該資料庫支援多命令語句執行。這裡的 d...
常見Web攻擊
1.sql注入的危害 2.例項 mysqldb 通過在使用者名稱裡面構建乙個sql語句,達到了我們在執行sql語句的時候永遠為真的情況 username or 1 1 username request.post.get username password request.post.get passw...
Web常見的攻擊手段
type text name name value 當輸入的內容為 alert hello script 最終的效果為 type text name name value alert hello script 這時候就會彈出來hello。這樣的惡作劇還好,如果是獲取使用者賬號密碼的的指令碼呢,那樣的...