作為一個從知道創與到自建安全團隊的資深白帽子,一路也是從不止所謂的web小白歷經磨難成長起來的我,給現在正在準備學習web安全的同學一些建議。在我認為,滲透安全的范圍其實要學習的東西很廣泛的,間接的相當于你要是一個前端工程師,也要是一個后端工程師(其中就包含主流的php,JAVA,python等),如果學習移動端安全,你還要是一個出色的安卓工程師,而網絡安全又細分為很多方向,比如系統安全、移動安全、無線安全、web安全等。 作為還沒接觸或者剛剛接觸滲透測試,或者安全方面的同學來說,這里建議你們可以從web安全開始學,web安全領域相對來說比較好入門,后續如果要轉的話,無論是轉前端還是轉后端都是比較吃香的,其實對于沒有學習過來說呢,入門是相對來說友好一些的。我剛開始的時候也是從web安全開始入手的,后續的介紹與相關教學也會以web安全為主。 第一課就先以介紹為主,如何上車web網絡安全 01對于系統的操作 首先要熟悉的就是各種操作系統,這里主推centos,因為無論是企業還是個人網站,用的最多的都是以centos作為操作系統運行服務器,有能力的可以玩一下kali系統,里面集成了很多滲透測試軟件。 02數據庫的學習 針對于web漏洞中的SQL,例如:MySQL數據庫的基本操作 Sqlmap sql注入工作的操作,著名的自動化sql注入工具,可以找到漏洞,并直接查看數據 03進行web安全滲透 熟悉常見的web攻擊類型,有機會可以直接進行實戰01:注入漏洞 1)SQL注入(SQL Injection) 由于程序對SQL相關的一些敏感字符缺少過濾or轉換,攻擊者把SQL命令插入到用戶提交的數據中,欺騙服務器執行惡意的SQL命令,非法獲取到內部權限和數據。 風險:讀取or篡改數據庫的數據,獲取服務器or管理員權限 類型: a、數據型 b、字符型 其他注入方式 c、偽靜態注入 d、GET & POST注入 e、Cookie注入 2)SQL盲注(SQL Blind Injection) a.基于布爾的盲注[Boolean-Based] SQL注入過程中,應用程序僅僅返回True頁面和False頁面,無法根據應用程序的返回頁面得到數據庫信息,但可通過構造邏輯條件(如比較大?。┫蚍斩苏埱蠛蟮姆祷仨撁鎭矸治雠袛辔覀兯枰臄祿煨畔?。 b.基于時間的盲注[Time-Based] 注入的SQL代碼影響后臺數據庫的功能,但此時Web的前端頁面始終顯示True頁面,知識頁面返回的響應時間有差異,可以根據時間差來推斷注入語句中的判斷條件真假,繼而獲取數據庫相關的信息。 3)OS命令注入 OS Command Injection,當應用程序使用外部輸入的字符串,or使用受外部影響的字符串來組裝命令時,若沒有進行安全過濾防范,可能產生OS命令的注入攻擊,甚至操作服務器相關的權限。 4)Xpath注入 利用XPath解析器的松散輸入和容錯特性,能夠在URL、表單或其它信息上附帶惡意的XPath查詢代碼,以獲得權限信息的訪問權并更改這些信息。 02:失效的身份認證和會話管理 用戶身份認證和會話管理是一個應用程序中最關鍵的過程,有缺陷的設計會嚴重破壞這個過程。在開發Web應用程序時,開發人員往往只關注Web應用程序所需的功能,通常會建立自定義的認證和會話管理方案。但要正確實現這些方案卻很難,結果這些自定義的方案往往在如下方面存在漏洞:退出、密碼管理、超時、記住我、密碼問題、帳戶更新等。 03:敏感信息泄露 在最近幾年,這是最常見的、最具影響力的攻擊。這個領域最常見的漏洞是不對敏感信息進行加密。在數據加密過程中,常見的問題是不安全的密鑰生成和管理以及使用弱加密算法、弱協議和弱密碼。特別是使用弱的哈希算法來保護密碼。 攻擊者不是直接攻擊密碼,而是在傳輸過程中或從客戶端(例如:瀏覽器)竊取密鑰、發起中間人攻擊,或從服務器端竊取明文數據。 04:XML外部實體(XXE) 默認情況下,許多舊的XML處理器能夠對外部實體、XML進程中被引用和評估的URI進行規范。如果攻擊者可以上傳XML文檔或者在XML文檔中添加惡意內容,通過易受攻擊的代碼、依賴項或集成,他們就能夠攻擊含有缺陷的XML處理器。 XXE缺陷可用于提取數據、執行遠程服務器請求、掃描內部系統、執行拒絕服務攻擊和其他攻擊。 05:失效的訪問控制 由于缺乏自動化的檢測和應用程序開發人員缺乏有效的功能測試,因而訪問控制缺陷很常見。訪問控制檢測通常不適用于自動化的靜態或動態測試。手動測試是檢測訪問控制缺失或失效的最佳方法,包括:HTTP方法(如:GET和PUT)、控制器、直接對象引用。 攻擊者可以冒充用戶、管理員或擁有特權的用戶,或者創建、訪問、更新或刪除任何記錄。 06:安全配置錯誤 安全配置錯誤可以發生在一個應用程序堆棧的任何層面,包括網絡服務、平臺、Web服務器、應用服務器、數據庫、框架、自定義代碼和預安裝的虛擬機、容器和存儲。自動掃描器可用于檢測錯誤的安全配置、默認帳戶的使用或配置、不必要的服務、遺留選項等。 通常,攻擊者能夠通過未修復的漏洞、訪問默認賬戶、不再使用的頁面、未受保護的文件和目錄等來取得對系統的未授權的訪問或了解。 07:跨站腳本(XSS) XSS是OWASP Top10中第二普遍的安全問題,存在于近三分之二的應用中。由于程序缺少對某些敏感字符的過濾or轉換,攻擊者對在url或輸入框中輸入HTML/JS惡意代碼提交成功后并被執行,獲取用戶or程序敏感信息。 XSS對于反射和DOM的影響是中等的,而對于存儲的XSS,XSS的影響更為嚴重,譬如在受攻擊者的瀏覽器上執行遠程代碼,例如:竊取憑證和會話或傳遞惡意軟件等。 08:不安全的反序列化 反序列化漏洞有十年的歷史,存在于不同的編程語言中,最為明顯的當屬Java、PHP、Python、Ruby。漏洞的本質就是反序列化機制打破了數據和對象的邊界,導致攻擊者注入的惡意序列化數據在反序列化過程中被還原成對象,控制了對象就可能在目標系統上面執行攻擊代碼。 09:使用含有已知漏洞的組件 這種安全漏洞普遍存在?;诮M件開發的模式使得多數開發團隊不了解其應用或API中使用的組件,更談不上及時更新這些組件了。如Retire.js之類的掃描器可以幫助發現此類漏洞,但這類漏洞是否可以被利用還需花費額外的時間去研究。 10:不足的日志記錄和監控 對不足的日志記錄及監控的利用幾乎是每一個重大安全事件的溫床。攻擊者依靠監控的不足和響應的不及時來達成他們的目標而不被知曉。 根據行業調查的結果,此問題被列入了Top10。判斷你是否有足夠監控的一個策略是在滲透測試后檢查日志。測試者的活動應被充分的記錄下來,能夠反映出他們造成了什么樣的影響。 多數成功的攻擊往往從漏洞探測開始。允許這種探測會將攻擊成功的可能性提高到近100%;據統計,在2016年確定一起數據泄露事件平均需要花191天時間,這么長時間里損害早已發生。 11:跨站請求偽造(CSRF) CSRF是利用某些web應用程序允許攻擊者預測一個特定操作的所有細節。由于瀏覽器自動發送會話cookie等認證憑證,攻擊者能創建惡意web頁面產生偽造請求。這些偽造請求很難與合法請求區分開。 攻擊者能欺騙受害用戶完成該受害者所允許的任意狀態改變的操作,比如:更新帳號細節,完成購物,注銷甚至登錄等操作。 12:未驗證的重定向和轉發 應用程序經常將用戶重定向到其他網頁,或以類似的方式進行內部轉發。有時,目標網頁是通過一個未經驗證的參數來指定的,這就允許攻擊者選擇目標頁面。 攻擊者鏈接到未驗證的重定向并誘使受害者去點擊。由于是鏈接到有效的網站,受害者很有可能去點擊。攻擊者利用不安全的轉發繞過安全檢測。 這種重定向可能試圖安裝惡意軟件或者誘使受害者泄露密碼或其他敏感信息。不安全的轉發可能允許繞過訪問控制。 12:弱口令漏洞 弱口令(weak password) ,沒有嚴格和準確的定義,通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令,如:生日、名字、簡單的順序數字or字符。 13:文件上傳漏洞 文件上傳漏洞是指網絡攻擊者上傳了一個可執行的文件到服務器并執行。這里上傳的文件可以是木馬,病毒,惡意腳本或者WebShell等。大多數的上傳漏洞被利用后攻擊者都會留下WebShell以方便后續進入系統。攻擊者在受影響系統放置或者插入WebShell后,可通過該WebShell更輕松,更隱蔽的在服務中為所欲為。 WebShell就是以asp、php、jsp或者cgi等網頁文件形式存在的一種命令執行環境,也可以將其稱之為一種網頁后門。攻擊者在入侵了一個網站后,通常會將這些asp或php后門文件與網站服務器web目錄下正常的網頁文件混在一起,然后使用瀏覽器來訪問這些后門,得到一個命令執行環境,以達到控制網站服務器的目的(可以上傳下載或者修改文件,操作數據庫,執行任意命令等)。 14:緩沖區溢出 在計算機內部,輸入數據通常被存放在一個臨時空間內,這個臨時存放的空間就被稱為緩沖區,緩沖區的長度事先已經被程序或者操作系統定義好了。向緩沖區內填充數據,如果數據的長度很長,超過了緩沖區本身的容量,那么數據就會溢出存儲空間,而這些溢出的數據還會覆蓋在合法的數據上。 操作系統所使用的緩沖區又被稱為堆棧,在各個操作進程之間,指令被臨時存儲在堆棧當中,堆棧也會出現緩沖區溢出。當一個超長的數據進入到緩沖區時,超出部分就會被寫入其他緩沖區,其他緩沖區存放的可能是數據、下一條指令的指針,或者是其他程序的輸出內容,這些內容都被覆蓋或者破壞掉。 15:業務邏輯漏洞 業務邏輯問題是一種設計缺陷,邏輯缺陷表現為設計者或開發者在思考過程中做出的特殊假設存在明顯或隱含的錯誤。攻擊者會特別注意目標應用程序采用的邏輯方式,設法了解設計者與開發者做出的可能假設,然后考慮如何攻破這些假設。攻擊者挖掘邏輯漏洞有兩個重點:業務流程、http/https請求篡改。 業務邏輯漏洞經常出現的場景為:賬戶(注冊/登錄/密碼找回)、交易、支付、個人信息修改。 04各種的搜索引擎的使用技巧: Google、FOFA、shodan、zoomeye等搜索引擎的使用技巧來進行資產的收集,在做前期的滲透信息收集的時候,是非常重要的??梢匀ニ岩幌鹿雀韬诳驼Z法,有些直接可以搜出網站登陸后臺,再用簡單的sqlmap直接跑注入,一些簡單的網站直接就能改破解了。 05 HTML5、css3、PHP 在進行學習web滲透之前呢,需要簡單了解一下語言HTML5、css3、PHP ,這些語言對于了解web安全漏洞有很大的幫助的。 06 要掌握基本的幾種黑客工具的使用: AWVS、appscan、nmap、burpsuite、sqlmap、xray、Metasploit、瀏覽器代理、各種語言的小馬大馬、蟻劍等工具的使用07 對于一些網站的基礎框架要有一定的了解:TP、DZ、WP、織夢、帝國、structs、ecshop、等常見的網站框架要了解08 Linux滲透進階知識:Linux下手動查殺木馬過程-使用rootkit隱藏蹤跡的審計方法,主要有模擬木馬程序病原體并讓木馬程序自動運行的代碼審計,木馬父進程實時監控木馬的原理及防御方法,創建一個讓root用戶都刪除不了的木馬程序的原理及防御方法,深入講解如何不讓木馬程序和外網數據主動通信,使用rootkit把木馬程序的父進程和木馬文件隱藏的審計方法,使用rkhunter Rootkit獵手來檢查rootkit,還有Linux下的手工提權原理-劫持賬號和密碼審計及防御方法-Tripwire檢查文件。以上的web滲透安全相關的知識點,建議大家先去了解這些漏洞出現的原因,再去學習攻擊這些漏洞,最后的最后才是學習如何去防范這些漏洞,這其中,幾乎每一步都是難的,了解漏洞出現的原因,在你看到一個系統之后,你根本發現不了漏洞,更無法去了解他出現的原因了,常見的攻擊思路是使用常見的漏洞攻擊方式,一步步的去試(現在大部分后臺框架都已經集成了常見攻擊方式的防范策略,更高級的方式等待你們去開發),其中也包含一些社會工程學的應用,比如誘導郵件之類的,總之,網絡攻防就像是一場戰役,沒有絕對安全的系統,一切都等待你們去發掘。 |
標簽: 攻擊者 漏洞 安全 注入 數據 緩沖區 攻擊 一個 可以 使用 出處: https://www.toutiao.com/article/7081801261045006879/ |