【網絡安全】——服務端安全(注入攻擊、認證與會話管理和訪問控制、訪問控制、加密算法與隨機數、Web框架安全、應用層拒絕服務攻擊DDOS)

這一篇博客記錄的是服務端安全應用安全的知識,學習內容來自《白帽子講Web安全》。

​ 承接自上一篇客戶端安全之後,包括注入攻擊、認證與會話管理和訪問控制、訪問控制、加密算法與隨機數、Web框架安全、應用層拒絕服務攻擊DDOS、Web Server安全等方面

注入攻擊

由於應用違背了“數據與代碼分離的原則”。兩個條件:1.用戶能控制數據的輸入;2.代碼拼湊了用戶輸入的數據。

SQL注入

盲注

​ 在服務器沒有錯誤回顯的時候完成注入攻擊。驗證方法:構造簡單的條件語句根據頁面是否發生變化來判斷SQL語句是否執行。

Timing Attack

​ 利用數據庫中某些特殊的函數,可以有條件地造成延遲。

​ 例如在MySQL中,利用BENCHMARK()函數,可以讓同一個函數執行若干次,使得返回的結果比平均時間要長,通過時間長短的變化,可以判斷出注入語句是否執行成功。這是一種 邊信道攻擊

​ eg:

1170 UNION SELECT IF(SUBSTRING(current,1,1) =
CHAR(119),BENCHMARK(5000000,ENCODE('MSG','by
5 seconds')),null) FROM (Select Database()
as current) as tbl;

​ 這段Payload判斷庫名的第一個字母是否爲CHAR(119),即小寫的w。如果判斷結果爲真,
則會通過BENCHMARK()函數造成較長延時;如果不爲真,則該語句將很快執行完。攻擊者
遍歷所有字母,直到將整個數據庫名全部驗證完成爲止。

​ 此外,例如如此的手段還可以獲得很多有關數據庫的信息。

數據庫攻擊技巧

常見的攻擊機巧

​ SQL注入可以猜解數據庫的版本。有自動化工具完成猜解username和password。。(猜解。。暴力),可以獲取到當前用戶的身份,從而進行進一步的文件操作,通過LOAD_FILE讀出,然後INTODUMOFILE寫入系統,最後通過LOAD DATA INFILE將文件導入表中。這種技巧可以導出Web-shell,爲進一步攻擊做好準備。

​ 自動化注入工具:sqlmap

命令執行

​ 在MySQL中,除了直接導出Web-shell間接執行命令之外,還可以利用UDF(USER-Defined-Functions)來執行命令。若當前用戶是root,則可以直接獲取到root權限。

攻擊存儲過程

​ 存儲過程爲數據庫提供了強大的功能,但必須用CALL或者EXECUTE執行。在注入過程中,存儲過後才能爲攻擊者提供很大便利。例如MS SQL Server中,“xp_cmd-shell”執行系統命令。

編碼問題

​ 注入攻擊中常常用到的單引號和雙引號等特殊字符。當數據集採用了“寬字符集”的時候,就會產生一些漏洞,比如幾個編碼代表一個字符,例如。

​ 0xbf27 or 1=1 經過轉義之後 成爲 經過轉義後,會變成0xbf5c27(“\”的ASCII碼爲0x5c),但0xbf5c又是一個字符。故原有的轉義字符 \ 就會“吃掉”。

​ 統一設置爲UTF-8是一個很好的辦法,也就是,設置頁面meta標籤的charset屬性。

SQL Column Truncation

​ MySQL數據庫中,strict模式不開啓會導致重複數據插入或其他非法數據插入,從而有可能獲得越權訪問。

正確地防禦SQL注入

  • 找到所有SQL注入漏洞

  • 修補這些漏洞

    使用預編譯語句:最佳方式是使用預編譯語句,綁定變量,用戶的輸入無法改變語句的結構和語義。

    使用存儲過程:將SQL語句定義在數據庫中,避免使用動態的SQL語句。

    檢查數據類型使用安全函數

    從數據庫角度來說,應該使用最小權限原則。

其他注入攻擊

  • XML注入:和HTML注入很相似
  • 代碼注入: 通過一些執行命令的函數間接執行命令,如eval(), system()
  • CRLF注入: 兩個字符 \n \t 表示換行,注入換行符改變語義。eg:log日誌文件的改寫,注入HTTP頭(Http Response Splitting),因爲HTTP頭是\n\t換行的,可能導致安全隱患,可形成XSS攻擊。

文件上傳漏洞

文件上傳漏洞概述

​ 文件上傳漏洞指用戶上傳了一個可執行的腳本文件,並通過這個腳本文件獲得了執行服務器端命令的能力。

​ 常見安全漏洞

  • 上傳文件是Web腳本語言

  • 上傳文件是Flash的策略穩健crossdo-main.xml,黑客可以控制Flash在這個域下面的行爲

  • 上傳文件是病毒,木馬文件,誘導用戶或者管理員下載執行

  • 上傳文件是釣魚圖片或爲包含了腳本的圖片,用於釣魚和欺詐

    形成條件:1.上傳的文件能被Web容器解釋執行。2.用戶能從Web上訪問這個文件。3.用戶上傳的文件並未被安全檢查和格式化

    eg:開源富文本編輯器的文件上傳功能。

    繞過文件上傳檢查功能

    1.攻擊者手動修改上傳過程中的POST包,添加%00字符,可以截斷某些函數對文件名的判斷。

    2.僞造一個合法的文件頭,將真實的腳本文件放置在其後。

功能還是漏洞

  • Apache文件解析問題: Apache對文件名的解析式從後往前解析的,直到遇到Apache認識的文件類型爲止。定義在Apache的mime.types文件中。
  • IIS文件解析問題:1. ;成爲截斷字符,如文件名是 evil.asp;xx.jpg 時,IIS 6 會將此文件解析爲 evil.asp來執行。2. 處理文件夾拓展名出錯,在/*.asp/文件夾的文件都當做asp來處理
  • PHP CGI路徑解析問題: PHP在Nginx作爲Web Server時,一般使用fastcgi作爲腳本解釋器,而fastcgi模式下,PHP獲取環境變量的方式有關,若解析不了,則會路徑向前一步尋求環境解析。
  • 利用上傳文件漏洞釣魚: 從正常域名跳轉到釣魚網站,通過不同文件類型的解析,在域名上看上去仍然是可信任的域名,但是html文件通過*.html.jpg解析運行。

設計安全的文件上傳功能

  • 文件上傳的目錄設置爲不可執行
  • 判斷文件類型,使用白名單策略,不要使用黑名單策略
  • 使用隨機數改寫文件名和文件路徑
  • 單獨設置文件服務器的域名

認證與會話管理

  • 認證”和“授權”的概念,單因素認證與多因素認證
  • 密碼:最基礎的認證手段。OWASP有推薦的最佳實踐。

OWASP:The Open Web Application Security Project (OWASP), an online community, produces freely-available articles, methodologies, documentation, tools, and technologies in the field of web application security.

使用弱口令攻擊比暴力破解有效得多。密碼的保存不要明文保存,採用不可逆的加密算法或者是單項散列函數算法。

  • 多因素認證:提高攻擊門檻

  • Session與認證:將Session ID加密後保存在Cookie中,Cookie收到瀏覽器同源策略保護,Session劫持就是Session ID在生命週期內被竊取,相當於賬戶失竊;如果Session ID 保存在Cookie中,則可以稱作Cookie劫持。

    • Session泄漏途徑:XSS攻擊、網絡sniff以及本地木馬竊取。
  • Session Fixation攻擊: 在用戶登錄網站的過程中,如果登錄前後用戶的Session ID沒有發生變化,則會存在Session Fixation問題。

    • 具體攻擊的過程是,用戶X(攻擊者)先獲取到一個未經認證的SessionID,然後將這個SessionID
      交給用戶Y去認證,Y完成認證後,服務器並未更新此SessionID的值(注意是未改變
      SessionID,而不是未改變Session),所以X可以直接憑藉此SessionID登錄進Y的賬戶。
  • Session保持攻擊: 用戶長時間未活動或者用戶點擊退出後,服務器將銷燬session,如果Session一直未失效,則會導致Session劫持攻擊。

    有的網站訪問量大,則服務端不維護Session,把Session放到Cookie中加密保存,發送時帶上Cookie,利用Cookie的Expire標籤控制Session的失效時間,這就可以通過XSS攻擊客戶端Cookie失效時間來劫持Session了。

    • 定期強制銷燬Cookie,一個用戶可以同時擁有幾個Session的問題
  • SSO 單點登錄: 用戶登錄一次就可以訪問所有系統。將風險集中了。使用最多的是OpenID,使用URL進行用戶認證,同時在驗證成功後重定向回網站。

訪問控制

  • What Can I Do?

    授權問題: 權限控制,訪問控制。某個主體對某個客體需要實施某種操作,而系統對這種操作的限制就是權限控制。網絡請求收到防火牆ACL策略的限制。加上基於頁面的訪問控制可以解決頁面未授權訪問的問題。

  • 垂直權限管理

    RBAC(Role-Based Access Control):基於角色的訪問控制。採用最小權限原則。

  • 水平權限管理

    同一種用戶相互間的數據不能直接訪問,即問題出在同一個角色上,至今仍然是一個難題。

    eg:來伊份購物網站沒有對用戶進行權限控制,通過變化URL中的id參數即可查看對應id的個人
    

    姓名、地址等隱私信息。

  • OAuth簡介

    不提供用戶名和密碼的情況下,授權第三方應用訪問Web資源的安全協議。OpenID解決認證問題,OAuth解決授權問題。

    有三個角色:
    
  • User:用戶

  • Resource Owner:資源提供方,用戶訪問其他的網頁應用需要資源提供方的數據支持

  • Client:消費方,用戶正在訪問的網頁應用

過程步驟不贅述,理解。

加密算法與隨機數

概述

​ 加密算法分爲 分組加密算法流密碼加密算法

分組加密法: DES、3-DES、Blowfish、IDEA、AES等。

流密碼加密算法: RC4、ORYX、SEAL。

​ 根據攻擊者可以獲得的信息,可以分爲:唯密文攻擊、已知明文攻擊、選擇明文攻擊、選擇密文攻擊。

Stream Cipher Attack

​ 流密碼常用的一種加密算法,基於異或操作,每次都只操作一個字節,但是性能非常好。

  • Reused Key Attack: 使用同一個密鑰加密多次,因爲基於異或操作,所以只要知道四個數據只要知道三個就可以推導出剩下的一個了。

    E(A) = A xor C
    E(B) = B xor C

    E(A) xor E(B) = A xor B;

  • Bit-flipping Attack: 在密碼學中,攻擊者在不知道明文的情況下,通過改變密文,使得明文按其需要的方式發生改變的攻擊方式。也就是當知道A、B的明文,A的密文時,就可以推導出B 的密文。

    解決Bit-flipping攻擊,驗證密文的完整性。

  • 弱隨機IV問題: 在authcode()函數中,它默認使用了4字節的IV(就是函數中的keyc),使得破解難度增
    大。但其實4字節的IV是很脆弱的,它不夠隨機,我們完全可以通過“暴力破解”的方式找到重複的IV。

WEP破解

​ WEP是一種無線加密傳輸協議,破解了WEP的密鑰,就可以連接Access Point。

​ 兩個關鍵因素:

  • 初始化向量IV:明文發送,在較短時間內會出現重複,就可以利用Reused Key Attack。同時,找到相同的IV,就可以構造出相同的CRC-32校驗值,可以成功實施Bit-flipping。
  • 對消息的CRC-32校驗

Security of the WEP algorithm 提出了破解WEP破解的理論。

ECB模式的缺陷

​ 分組獨立加密,調換任意分組的密文,那麼解密後的明文也是對調位置的。所以應該使用鏈式加密。

Padding Oracle Attack

​ 分組加密過程中,不夠位數的用padding進行填充。Padding Oracle Attack的關鍵在於攻擊者能夠獲知解密的結果是否符合padding。在實現和使用CBC模式的分組加密算法時,注意這一點即可。

密鑰管理

密碼學一個原則:密碼系統的安全性應該依賴於密鑰的複雜性,而不應該依賴於
算法的保密性。

​ 防止密鑰從非正常的途徑泄露。不要把私鑰硬編碼在代碼中,應該採用公私鑰管理或者改善密鑰管理。密鑰集中管理,降低系統對密鑰的耦合性,也利於定期更換密鑰。

僞隨機數問題

​ 僞隨機數不夠隨機。

  • 時間戳不夠隨機,不能直接用做隨機數的生成。
  • 破解僞隨機數種子即可破解,eg:PHP的rand()函數,mt_rand()函數。
  • 採用安全的隨機數算法,JAVA中的用java.security.SecureRandom等。

Web框架安全

  • MVC框架安全

    現代開發中的MVC框架。從數據流入的方向看,數據先後經過了View層、Controller層、Model層,設計安全方案的時候要掌握住數據這個關鍵因素。在每一層解決相關的問題,不要把不屬於該層的問題留給那一層。

模板引擎與XSS防禦

​ 在View層解決XSS問題。在現在View層用模板引擎對頁面進行渲染,模板引擎可能會提供一些編碼方法

​ eg:Django中auto-escape採用了htmlEncode(),從而可以保證安全,有時關閉則可能導致問題。

  • Web框架與CSRF防禦

    可以使用security token來解決CSRF攻擊,對讀寫操作分開,對所有的“寫操作”使用POST提交,同時,要保證security token的私密性,自動在POST中增加Token。

    1.在Session中綁定Token。
    
    2.在form表單中自動添加token字段。
    
    3.在Ajax請求中自動添加token。
    
    4.在服務端對比POST中提交的Token和Session中綁定的Token是否一致。
    
  • HTTP Headers管理

    在框架中,對HTTP頭進行全局化的處理。eg:針對HTTP頭的CSRF攻擊。針對30X返回的HTTP Response的跳轉——提供統一跳轉函數(白名單)。

  • 數據持久層與SQL注入

    使用ORM框架對防止SQL注入有好處。

應用層拒絕服務攻擊DDOS

DDOS:分佈式拒絕服務 ,將正常服務放大了若干倍,通過若干個網絡節點同時發起攻擊,以達規模效應。

​ 常見的DDOS攻擊:SYN flood, UDP flood, ICMP flood。

在很多對抗DDOS的產品中,一般會綜合使用各種算法,結合一些DDOS攻擊的特徵,對流

量進行清洗。對抗DDOS的網絡設備可以串聯或者並聯在網絡出口處。

應用層DDOS

​ 發生在應用層,TCP三次握手已經完成,連接已經建立,發起攻擊的IP地址真實。這種攻擊是對服務器性能的一種攻擊,優化服務器性能的方法能夠緩解這種攻擊。

  • CC攻擊 :對消耗資源較大的應用頁面不斷髮起正常的請求,以達到消耗服務端資源的目的。
  • 限制請求頻率: 針對每個客戶端做一個請求頻率的限制。

驗證碼

CAPTCHA:全自動區別計算機和人類的圖靈測試。

​ 可能漏洞: 1. 直接利用圖像相關算法識別驗證碼 2.驗證碼消耗掉後SessionID未更新,導致使用原有的SessionID可以一直重複提交同一個驗證碼 3. 提前將所有的驗證碼圖片生成好,以哈希過的字符串作爲驗證碼
圖片的文件名——採用枚舉的方式即可破解。

防禦應用層DDOS

​ 驗證碼的核心是識別人與機器。一般情況下,判斷HTTP頭中的User-Agent字段來識別客戶端。

​ 另外一種比較可信的辦法是讓客戶端解析一段JS,並給出正確的運行結果,因爲大部分自動化過程是直接構造HTTP包來完成的,並沒有在瀏覽器環境中。

​ Web Server也可以用來進行防禦。

資源耗盡攻擊

  • Slow Loris攻擊:以極低的速度向服務器發送HTTP請求,由於Web Server併發的連接數都有一定的上限,故最終導致所有連接都被惡意佔用。
  • HTTP POST DOS : 原理是在發送HTTP POST包時,指定一個非常大的Content-Length值,然後以很低的速
    度發包,比如10~100s發一個字節,保持住這個連接不斷開。
  • Server Limit DOS:Cookie造成一種拒絕服務。Web Server對HTTP包頭的大小都有長度限制,如果攻擊者通過XSS攻擊,惡意地往客戶端寫入了一個超長的Cookie,則該客戶端在清空Cookie之前,將無法再訪問該Cookie所在域的任何頁面。

ReDOS正則引起的問題

​ 當正則表達式寫得不好時,就有可能被惡意輸入利用,消耗大量資源,從而造成DOS。這種攻擊被稱爲Re-DOS。這是一種代碼缺陷上的漏洞。

​ eg: ^(a+)+$, 正常時候輸入 aaaax 時,16條可能路徑,但是輸入 aaaaaaaaaaaaaaaaX 時,有65536條路徑,極大增加正則引擎解析的速度,用戶惡意構造輸入的時候,有缺陷的正則表達式效率大大降低。

PHP安全

​ 暫時跳過這個章節,等到具體去寫POC的時候回過頭來再看。

Web Server安全

  • Apache安全:1. Apache的Module模塊最容易出現安全漏洞,所以要檢車Module的安裝情況
    1. 指定Apache進程以單獨的用戶身份運行,通常需要爲Apache單獨建立一個user/group;使用root身份運行是一個非常不好的習慣。
    2. Apache有一些配置參數可以優化服務器的性能,提高對抗DDOS的攻擊的能力。
    3. 保護好Apache log,攻擊者入侵成功後,會修改清除log。
  • Nginx安全:注意軟件本身的安全,配置好參數。
  • jBoss遠程命令執行:JMX-Console管理後臺,提供給管理員很多強大的功能,也方便了黑客入侵。遠程加載war包。
  • Tomcat遠程命令執行:Tomcat manager後臺容易出現漏洞。

互聯網公司安全運營

​ 此處對互聯網公司安全瞭解爲主,此處摘錄一些重要觀點,不做詳細探討了。

  • 安全是產品的一個特性。
  • 好的安全方案
    • 良好的用戶體驗
    • 優秀的性能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章