Web安全 DoS及其家族

2022-05-09 09:30:11 字數 2302 閱讀 8618

不久前我分享過的web安全概述獲得了大家的廣泛關注,說明大家對web安全這一塊還是很關心的,因此木可大大將陸續推出目前常見的web攻擊手段和對應的防範策略。本期向大家介紹的是dos和它的家族。

dos(denial of service,拒絕服務攻擊),它的原理很簡單,就是用我們手裡的機器去給伺服器發請求,如果我們手頭的伺服器各方面效能都比伺服器的主機的效能好,那麼當我們傳送大量請求給伺服器,占用伺服器的資源,導致伺服器沒有能力去處理其他使用者請求。

為了加深大家的理解,我就詳細介紹dos攻擊中最有名的實現方式:syn-flood攻擊。在具體介紹syn-flood攻擊之前,我先和大家溫故一下什麼是三次握手。所謂的三次握手,就是在建立tcp連線的時候,客戶端和伺服器需要做幾次通訊,確認相互之間的資訊。它是保證tcp協議可靠性的重要手段之一。下面我們就來看一下它的具體流程:

1、客戶端(client)首先向伺服器(server)傳送連線請求,請求內容是:syn=1 seq=x

2、伺服器收到這個包以後,將這個資料放入到乙個佇列中,這個佇列叫syn_table。並且傳送乙個返回包,作為響應,這個返回包有自己的序列號(seq=y),以及乙個ack,ack的值就是客戶端發來的seq值加一;

3、客戶端收到返回資訊以後,將伺服器的seq加一作為ack又發給伺服器;

4、伺服器收到這第三個包,驗證沒問題以後,就將這個連線放入到request_sock_queue

,三次握手完成。

以上就是三次握手的具體流程。看到這裡大家可能會有個疑問,平時我們在和伺服器建立連線的時候僅僅呼叫connect,我們並沒有進行三次握手,實際上connect這個高層概念是對三次握手的抽象,它的具體實現完成了三次握手流程。

面對tcp的三次握手協議,攻擊者應該如何發起攻擊呢?攻擊者首先故意發起乙個握手資料報,伺服器收到以後將它放入等待佇列,並返回確認。其次,攻擊者不再傳送第3個確認包,這樣一來,伺服器就會進行多次重傳傳送(linux系統通過tcp_synack_retries配置重傳次數),消耗了大量額外開銷,以及等待佇列被占用,甚至於等待佇列被佔滿,最終導致伺服器不能接收客戶端的請求。這就是syn-flood攻擊。

目前,我們是採取何種方法來解決syn-flood攻擊的呢?第一種方法,縮短等待時間,盡早刪除在等待佇列中等待非法請求資料報;第二種方法是在第一次握手報文不放入等待佇列,我們將乙個32位的無符號整數作為第二次握手的seq返回給客戶端,該整數通過將使用者請求的引數(包括請求的位址、埠等),加上伺服器的乙個序列號等做了一次運算得到。如果是正常使用者,它在收到這個整數之後加1作為ack返回給伺服器,伺服器在拿到資料後,對這個ack減1再進行逆運算得到各個引數,最後發出去的資料進行比對,如果完全一致,說明是乙個有效的響應,存放到相應的資料結構,反之則不是。通過該方法,非法請求就不能占用系統資源了。

通過上文介紹,ddos攻擊需要獲取大量的肉雞,但是獲取肉雞也越來越困難了,那目前還有沒有不用控制肉雞還能大量攻擊的呢?drdos((distributed reflection denial of service,分布式反射拒絕服務),攻擊者將不是將請求直接傳送給被攻擊者,而是傳送給乙個第三方,通過第三方中轉到被攻擊者,這就是"reflection"的體現。它的流程具體如下:攻擊者將請求包的源ip篡改成要被攻擊者的ip,目標ip是第三方ip,那麼第三方的恢復報文的目標ip就變成被攻擊者的ip,這樣一來,被攻擊者就會收到大量請求導致服務不可用。

需要注意的是:1. 攻擊者往往選擇的是基於udp協議的系統,因為udp協議是不可靠的,能夠偽造源ip; 2. 攻擊者往往會選擇那些響應包大於請求包的服務。基於此,一般被被攻擊的服務包括dns服務、memcached服務等。

為了加深大家理解,我就以memecached服務為例。首先,memcahced執行在11211埠,支援tcp和udp一些,也就是說攻擊者能夠偽造源ip,同時,memcached支援最大鍵值但資料對1m儲存,意味著攻擊者用較小的請求包讓攻擊者收到變大了幾十倍的資料報。

對於這種攻擊,有沒有方法來防範呢?首先,擴大伺服器的寬頻;其次,盡可能選擇tcp協議;最後,對於一些被放大的返回包直接進行丟棄。

Web安全 Web通訊

協議 url http 統一資源定位符 uniform resource locator 支援多種協議 http ftp 定位伺服器的資源 schema host port path query string anchor schema 底層協議 如 http https ftp host 伺服器的...

安全測試,web安全

web分為好幾層,一圖勝千言 完全沒有基礎我該從哪下手?完全沒有基礎學習 web 安全是件比較難的事情,所以我給出的最小的方案和最少的建議。工具 先用 awvs 掃幾個測試 大體了解一下 把掃到的漏洞復現,了解怎麼利用,主要了解 xsssql 注入 遠端 執行 開發 書籍 細說 php 實踐 使用 ...

Web安全 密碼安全

就是為了證明 你就是你的問題 計算機為了識別人的時候,需要密碼。資料庫被偷 伺服器被入侵 通訊被竊聽 http協議被竊聽 內部人員洩密 通過撞庫的方式 嚴禁明文儲存 防洩漏 單向變換 變換複雜度分析 密碼複雜度的要求 明文 密文 是一一對應的。雪崩效應 只要明文一點點不一樣,密文是完全不一樣的。密文...