「來源: |小生方勤 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