一篇文章掌握常見的網站攻擊方式

普通程式設計師發表於2018-10-24

最近兼職部門的安全介面人,時不時收到資訊保安部發過來的漏洞,有些漏洞看得一頭霧水(沒文化真可怕)。趕緊普及一下常見的安全問題。

這篇文章主要描述常見的網站攻擊方式( OWASP是世界上最知名的Web安全與 資料庫安全 研究組織 ,更多安全問題可以搜尋OWASP)

一、Dos攻擊(Denial of Service attack)

DoS是Denial of Service的簡稱,即 拒絕服務 ,造成DoS的攻擊行為被稱為DoS攻擊,其目的是使計算機或網路無法提供正常的服務。最常見的DoS攻擊有計算機網路頻寬攻擊和連通性攻擊。

作個形象的比喻來理解DoS。街頭的餐館是為大眾提供餐飲服務,如果一群地痞流氓要DoS餐館的話,手段會很多,比如霸佔著餐桌不結賬,堵住餐館的大門不讓路,騷擾餐館的服務員或廚子不能幹活,甚至更惡劣……相應的計算機和網路系統則是為Internet使用者提供網際網路資源的,如果有駭客要進行DoS攻擊的話,可以想象同樣有好多手段!今天最常見的DoS攻擊有對計算機網路的頻寬攻擊和連通性攻擊。頻寬攻擊指以極大的通訊量衝擊網路,使得所有可用網路資源都被消耗殆盡,最後導致合法的使用者請求無法透過。連通性攻擊指用大量的連線請求衝擊計算機,使得所有可用的作業系統資源都被消耗殆盡,最終計算機無法再處理合法使用者的請求。

傳統上,攻擊者所面臨的主要問題是網路頻寬,由於較小的網路規模和較慢的網路速度的限制,攻擊者無法發出過多的請求。雖然類似“the ping of death”的攻擊型別只需要較少量的包就可以摧毀一個沒有打過補丁的UNIX系統,但大多數的DoS攻擊還是需要相當大的頻寬的,而以個人為單位的駭客們很難使用高頻寬的資源。為了克服這個缺點,DoS攻擊者開發了分散式的攻擊。攻擊者簡單利用工具集合許多的網路頻寬來同時對同一個目標發動大量的攻擊請求,這就是 DDoS(Distributed Denial of Service) 攻擊。

拒絕服務攻擊是一種對網路危害巨大的惡意攻擊。今天,DoS具有代表性的 攻擊手段 包括PingofDeath(死亡之ping)、TearDrop(淚滴)、UDPflood(UDP泛洪)、SYNflood(SYN泛洪)、LandAttack(Land攻擊)、IPSpoofingDoS(IP欺騙)等。

SYNflood 是當前網路上 最常見 DDos攻擊,也是 最經典 的拒絕服務攻擊。以下介紹SYNflood基本原理(其他攻擊型別可百度谷歌) 

一篇文章掌握常見的網站攻擊方式


它利用了TCP協議實現上的一個缺陷,透過向網路服務所在埠傳送大量的偽造源地址的攻擊報文,就可能造成目標伺服器中的半開連線佇列被佔滿,從而阻止其它合法使用者進行訪問。這種攻擊早在1996年就被發現,但至今仍然顯示出強大的生命力。很多作業系統,甚至防火牆、路由器都無法有效地防禦這種攻擊,而且由於它可以方便地偽造源地址,追查起來非常困難。它的資料包特徵通常是,源傳送了大量的SYN包,並且 缺少三次握手的最後一步握手ACK回覆

想了解更多TCP的內容,參看《IM系統開發中如何除錯TCP協議》

二、跨站點請求偽造(CSRF,Cross-Site Request Forgeries)

CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。CSRF透過偽裝來自受信任使用者的請求來利用受信任的網站。


CSRF攻擊原理 如下圖 

一篇文章掌握常見的網站攻擊方式


舉個 CSRF的攻擊例項

受害者 Bob 在銀行有一筆存款,透過對銀行的網站傳送請求 可以使 Bob 把 1000000 的存款轉到 bob2 的賬號下。通常情況下,該請求傳送到網站後,伺服器會先驗證該請求是否來自一個合法的 session,並且該 session 的使用者 Bob 已經成功登陸。

駭客 Mallory 自己在該銀行也有賬戶,他知道上文中的 URL 可以把錢進行轉帳操作。Mallory 可以自己傳送一個請求給銀行:。但是這個請求來自 Mallory 而非 Bob,他不能透過安全認證,因此該請求不會起作用。

這時,Mallory 想到使用 CSRF 的攻擊方式,他先自己做一個網站,在網站中放入如下程式碼: src=” ”,並且透過廣告等誘使 Bob 來訪問他的網站。當 Bob 訪問該網站時,上述 url 就會從 Bob 的瀏覽器發向銀行,而這個請求會附帶 Bob 瀏覽器中的 cookie 一起發向銀行伺服器。大多數情況下,該請求會失敗,因為他要求 Bob 的認證資訊。但是,如果 Bob 當時恰巧剛訪問他的銀行後不久,他的瀏覽器與銀行網站之間的 session 尚未過期,瀏覽器的 cookie 之中含有 Bob 的認證資訊。這時,悲劇發生了,這個 url 請求就會得到響應,錢將從 Bob 的賬號轉移到 Mallory 的賬號,而 Bob 當時毫不知情。等以後 Bob 發現賬戶錢少了,即使他去銀行查詢日誌,他也只能發現確實有一個來自於他本人的合法請求轉移了資金,沒有任何被攻擊的痕跡。

更多CSRF攻擊防禦方式參看  https://www.cnblogs.com/phpstudy2015-6/p/6771239.html

三、SOL注入攻擊

是指透過對web連線的資料庫傳送惡意的SQL語句而產生的攻擊,從而產生安全隱患和對網站的威脅,可以造成逃過驗證或者私密資訊洩露等危害。

SQL隱碼攻擊的原理是透過在對SQL語句呼叫方式上的疏漏,惡意注入SQL語句。

舉個例子

當使用者傳送GET請求:

這是一個新聞詳情頁面,會顯示出新聞的title和content,程式內部會接收這個id引數傳遞給 SQL語句,SQL如下:

SELECT title,content FROM news WHERE id = 1

這是SQL的原義,也是程式設計師想要得到的結果,但是如果使用者改變了id的內容,修改成如下:

and 1=2 UNION SELECT userna-me, password FROM admin

此時內部程式執行的SQL語句為:

SELECT title,content FROM news WHERE id = 1 and 1=2 UNION SELECT username, password FROM admin

這條SQL的原義就會被改變,導致將管理員資料表中的使用者名稱顯示在頁面title位置,密碼顯示在頁面content位置,攻擊成功。

MyBatis框架 也可能產生SQL隱碼攻擊漏洞,詳細情況及應對措施參看

四、XSS攻擊(Cross-Site scripting)

跨站點指令碼(XSS)攻擊是一類注入問題 ,惡意指令碼被注入到其他良性和可信賴的網站中。當攻擊者使用Web應用程式將惡意程式碼(通常以瀏覽器端指令碼的形式)傳送給不同的終端使用者時,就會發生XSS攻擊。允許這些攻擊成功的缺陷非常普遍,只要這個網站某個頁面將使用者的輸入包含在它生成的動態輸出頁面中並且未經驗證或編碼轉義,這個缺陷就存在。

攻擊者可以使用XSS將惡意指令碼傳送給毫無戒心的使用者。終端使用者的瀏覽器無法知道該指令碼該不該被信任,從而執行該指令碼。惡意指令碼可以訪問任何cookie,會話令牌或瀏覽器保留並與該站點一起使用的其他敏感資訊。這些指令碼甚至可以重寫HTML頁面的內容。

跨站點指令碼(XSS)攻擊發生在:

1、資料透過不受信任的來源進入Web應用程式,最常見的是Web請求。 

2、資料包含在動態內容中,該動態內容在未經過惡意內容驗證的情況下傳送給Web使用者。 

傳送到Web瀏覽器的惡意內容通常採用JavaScript段的形式,但也可能包括HTML,Flash或瀏覽器可能執行的任何其他型別的程式碼。 基於XSS的各種攻擊幾乎是無限的 ,常見的有傳輸私密資料,像cookies或其他會話資訊,對攻擊者而言,重定向或引誘受害者到由攻擊者所控制的頁面,或者偽裝成可信賴網站,直接在使用者機器上執行惡意操作。

XSS攻擊通常被分為兩類:儲存型和反射型。還有第三類,不那麼知名的,基於DOM的xss。

舉個 簡單的例子

以下JSP程式碼段從HTTP請求中讀取員工ID eid,並將其顯示給使用者。 

一篇文章掌握常見的網站攻擊方式

如果eid僅包含標準字母數字文字,則此示例中的程式碼可正常執行。如果eid的值包含元字元或原始碼,那麼程式碼將由Web瀏覽器在顯示HTTP響應時執行。 

最初,這似乎不是一個漏洞。畢竟,為什麼有人會輸入導致惡意程式碼在自己的計算機上執行的URL?真正的危險是攻擊者會建立惡意URL,然後使用電子郵件或社交工程技巧誘使受害者訪問URL的連結。當受害者點選該連結時,他們會無意中透過易受攻擊的Web應用程式將惡意內容反映回自己的計算機。這種利用易受攻擊的Web應用程式的機制稱為反射型XSS。

關於XSS攻擊更多內容參看 

(XSS

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556438/viewspace-2217360/,如需轉載,請註明出處,否則將追究法律責任。

相關文章