常見網站攻擊技術,一篇打包全部帶走!

「來源: |小生方勤 ID:XSFQ_HSD」

大家好,今天給大家介紹一下,Web安全領域常見的一些安全問題。

1、SQL 注入

SQL注入攻擊的核心在於讓Web伺服器執行攻擊者期望的SQL語句,以便得到資料庫中的感興趣的資料或對資料庫進行讀取、修改、刪除、插入等操作,達到其邪惡的目的。

而如何讓Web伺服器執行攻擊者的SQL語句呢?SQL注入的常規套路在於將SQL語句放置於Form表單或請求引數之中提交到後端伺服器,後端伺服器如果未做輸入安全校驗,直接將變數取出進行資料庫查詢,則極易中招。

常見網站攻擊技術,一篇打包全部帶走!

舉例如下:

對於一個根據使用者ID獲取使用者資訊的介面,後端的SQL語句一般是這樣:

selectname,[。。。] from t_user whereid=$id

其中,$id就是前端提交的使用者id,而如果前端的請求是這樣:

GET xx/userinfo?id=1%20or%201=1

其中請求引數id轉義後就是1 or 1=1,如果後端不做安全過濾直接提交資料庫查詢,SQL語句就變成了:

selectname,[。。。] from t_user whereid=1or1=1

其結果是把使用者表中的所有資料全部查出,達到了駭客洩露資料的目的。

以上只是一個極簡單的示例,在真實的SQL注入攻擊中引數構造和SQL語句遠比這複雜得多,不過原理是一致的。

常見網站攻擊技術,一篇打包全部帶走!

2、XSS 攻擊

XSS全稱跨站指令碼攻擊(Cross Site Scripting),為了與重疊樣式表CSS區分,換了另一個縮寫XSS。

常見網站攻擊技術,一篇打包全部帶走!

XSS攻擊的核心是將可執行的前端指令碼程式碼(一般為JavaScript)植入到網頁中,聽起來比較拗口,用大白話說就是攻擊者想讓你的瀏覽器執行他寫的JS程式碼。那如何辦到呢?一般XSS分為兩種:

反射型

常見網站攻擊技術,一篇打包全部帶走!

1、攻擊者將JS程式碼作為請求引數放置URL中,誘導使用者點選

示例:

http://localhost:8080/test?name=

2、使用者點選後,該JS作為請求引數傳給Web伺服器後端

3、後端伺服器沒有檢查過濾,簡單處理後放入網頁正文中返回給瀏覽器

4、瀏覽器解析返回的網頁,中招!

儲存型

常見網站攻擊技術,一篇打包全部帶走!

上述方式攻擊指令碼直接經伺服器轉手後返回瀏覽器觸發執行,儲存型與之的區別在於能夠將攻擊指令碼入庫儲存,在後面進行查詢時,再將攻擊指令碼渲染進網頁,返回給瀏覽器觸發執行。常見的套路舉例如下:

1、攻擊者網頁回帖,帖子中包含JS指令碼

2、回帖提交伺服器後,儲存至資料庫

3、其他網友檢視帖子,後臺查詢該帖子的回帖內容,構建完整網頁,返回瀏覽器

4、該網友瀏覽器渲染返回的網頁,中招!

3、CSRF 攻擊

常見網站攻擊技術,一篇打包全部帶走!

CSRF,跨站請求偽造,其核心思想在於,在開啟A網站的情況下,另開Tab頁面開啟惡意網站B,此時在B頁面的“唆使”下,瀏覽器發起一個對網站A的HTTP請求。這個過程的危害在於2點:

1、這個HTTP請求不是使用者主動意圖,而是B“唆使的”,如果是一個危害較大的請求操作(發郵件?刪資料?等等)那就麻煩了

2、因為之前A網站已經打開了,瀏覽器存有A下發的Cookie或其他用於身份認證的資訊,這一次被“唆使”的請求,將會自動帶上這些資訊,A網站後端分不清楚這是否是使用者真實的意願

4、DDoS 攻擊

DDoS全稱Distributed Denial of Service:分散式拒絕服務攻擊(在這個文章裡也有介紹:)。是拒絕服務攻擊的升級版。拒絕攻擊服務顧名思義,讓服務不可用。常用於攻擊對外提供服務的伺服器,像常見的:

Web服務

郵件服務

DNS服務

即時通訊服務

……

常見網站攻擊技術,一篇打包全部帶走!

攻擊者不斷地提出服務請求,讓合法使用者的請求無法及時處理,這就是 DoS 攻擊。

攻擊者使用多臺計算機或者計算機叢集進行 DoS 攻擊,就是 DDoS 攻擊。

在早期網際網路技術還沒有那麼發達的時候,發起DoS攻擊是一件很容易的事情:一臺效能強勁的計算機,寫個程式多執行緒不斷向伺服器進行請求,伺服器應接不暇,最終無法處理正常的請求,對別的正常使用者來說,看上去網站貌似無法訪問,拒絕服務就是這麼個意思。

後來隨著技術對發展,現在的伺服器早已不是一臺伺服器那麼簡單,你訪問一個www。baidu。com的域名,背後是數不清的CDN節點,數不清的Web伺服器。

這種情況下,還想靠單臺計算機去試圖讓一個網路服務滿載,無異於雞蛋碰石頭,對方沒趴下,自己先趴下了。

技術從來都是一柄雙刃劍,分散式技術既可以用來提供高可用的服務,也能夠被攻擊方用來進行大規模殺傷性攻擊。攻擊者不再侷限於單臺計算機的攻擊能力,轉而透過成規模的網路叢集發起拒絕服務攻擊。

5、DNS劫持

當今網際網路流量中,以HTTP/HTTPS為主的Web服務產生的流量佔據了絕大部分。Web服務發展的如火如荼,這背後離不開一個默默無聞的大功臣就是域名解析系統:

常見網站攻擊技術,一篇打包全部帶走!

如果沒有DNS,我們上網需要記憶每個網站的IP地址而不是他們的域名,這簡直是災難,好在DNS默默在背後做了這一切,我們只需要記住一個域名,剩下的交給DNS來完成吧。

也正是因為其重要性,別有用心的人自然是不會放過它,DNS劫持技術被髮明瞭出來。

DNS提供服務用來將域名轉換成IP地址,然而在早期協議的設計中並沒有太多考慮其安全性,對於查詢方來說:

我去請求的真的是一個DNS伺服器嗎?是不是別人冒充的?

查詢的結果有沒有被人篡改過?這個IP真是這個網站的嗎?

常見網站攻擊技術,一篇打包全部帶走!

DNS協議中沒有機制去保證能回答這些問題,因此DNS劫持現象非常氾濫,從使用者在位址列輸入一個域名的那一刻起,一路上的兇險防不勝防:

本地計算機中的木馬修改hosts檔案

本地計算機中的木馬修改DNS資料包中的應答

網路中的節點(如路由器)修改DNS資料包中的應答

網路中的節點(如運營商)修改DNS資料包中的應答

……

常見網站攻擊技術,一篇打包全部帶走!

後來,為了在客戶端對收到對DNS應答進行校驗,出現了DNSSEC技術,一定程度上可以解決上面的部分問題。但限於一些方面的原因,這項技術並沒有大規模用起來,尤其在國內,鮮有部署應用。

再後來,以阿里、騰訊等頭部網際網路廠商開始推出了httpDNS服務,來了一招釜底抽薪,雖然這項技術的名字中還有DNS三個字母,但實現上和原來但DNS已經是天差地別,透過這項技術讓DNS變成了在http協議之上的一個應用服務。

6、JSON 劫持

JSON是一種輕量級的資料交換格式,而劫持就是對資料進行竊取(或者應該稱為打劫、攔截比較合適。惡意攻擊者透過某些特定的手段,將本應該返回給使用者的JSON資料進行攔截,轉而將資料傳送回給惡意攻擊者,這就是JSON劫持的大概含義。一般來說進行劫持的JSON資料都是包含敏感資訊或者有價值的資料。

7、暴力破解

這個一般針對密碼而言,弱密碼(Weak Password)很容易被別人(對你很瞭解的人等)猜到或被破解工具暴力破解。

解決方案 密碼複雜度要足夠大,也要足夠隱蔽 限制嘗試次數

8。、HTTP 報頭追蹤漏洞

HTTP/1。1(RFC2616)規範定義了 HTTP TRACE 方法,主要是用於客戶端透過向 Web 伺服器提交 TRACE 請求來進行測試或獲得診斷資訊。

當 Web 伺服器啟用 TRACE 時,提交的請求頭會在伺服器響應的內容(Body)中完整的返回,其中 HTTP 頭很可能包括 Session Token、Cookies 或其它認證資訊。攻擊者可以利用此漏洞來欺騙合法使用者並得到他們的私人資訊。

解決方案:

禁用 HTTP TRACE 方法。

9、資訊洩露

由於 Web 伺服器或應用程式沒有正確處理一些特殊請求,洩露 Web 伺服器的一些敏感資訊,如使用者名稱、密碼、原始碼、伺服器資訊、配置資訊等。

所以一般需注意:

應用程式報錯時,不對外產生除錯資訊 過濾使用者提交的資料與特殊字元 保證原始碼、伺服器配置的安全

10、目錄遍歷漏洞

攻擊者向 Web 伺服器傳送請求,透過在 URL 中或在有特殊意義的目錄中附加 。。/、或者附加 。。/ 的一些變形(如 。。 或 。。// 甚至其編碼),導致攻擊者能夠訪問未授權的目錄,以及在 Web 伺服器的根目錄以外執行命令。

11、命令執行漏洞

命令執行漏洞是透過 URL 發起請求,在 Web 伺服器端執行未授權的命令,獲取系統資訊、篡改系統配置、控制整個系統、使系統癱瘓等。

12、檔案上傳漏洞

如果對檔案上傳路徑變數過濾不嚴,並且對使用者上傳的檔案字尾以及檔案型別限制不嚴,攻擊者可透過 Web 訪問的目錄上傳任意檔案,包括網站後門檔案(webshell),進而遠端控制網站伺服器。

所以一般需注意:

在開發網站及應用程式過程中,需嚴格限制和校驗上傳的檔案,禁止上傳惡意程式碼的檔案 限制相關目錄的執行許可權,防範 webshell 攻擊

13、其他漏洞

SSLStrip 攻擊

OpenSSL Heartbleed 安全漏洞

CCS 注入漏洞

證書有效性驗證漏洞

14、業務漏洞

一般業務漏洞是跟具體的應用程式相關,比如引數篡改(連續編號 ID / 訂單、1 元支付)、重放攻擊(偽裝支付)、許可權控制(越權操作)等。

15、框架或應用漏洞

WordPress 4。7 / 4。7。1:REST API 內容注入漏洞

Drupal Module RESTWS 7。x:Remote PHP Code Execution

SugarCRM 6。5。23:REST PHP Object Injection Exploit

Apache Struts:REST Plugin With Dynamic Method Invocation Remote Code Execution

Oracle GlassFish Server:REST CSRF

QQ Browser 9。6:API 許可權控制問題導致洩露隱私模式

Hacking Docker:Registry API 未授權訪問

作者:senntyousegmentfault。com/a/1190000018004657