近整理了一些奇安信&華為大佬的課件資料+課件筆記+面試課題,想要的可以私信自取,無償贈送給粉絲朋友~
文章來源 :https://www.wljslmz.cn/1109.html
SQL 注入 (SQLi) 是一種可以訪問敏感或私有數據的隱蔽攻擊形式,它們最早是在上世紀末被發現的,盡管它們的年齡很大,但它們經常被用作黑客工具包中的一種有效技術。今天,給大家介紹一下頂級 SQLi 檢測工具。
有很多 SQLi 檢測工具,其中許多是開源的,可在 GitHub 上找到,除了專門的 SQLi 檢測工具外,還有更大的套件和專有軟件包將 SQLi 作為其整體漏洞檢測功能的一部分。
Netsparker是一個 Web 漏洞管理解決方案,其中包括 SQLi 檢測作為其眾多功能之一,還專注于可擴展性、自動化和集成。
該套件圍繞 Web 漏洞掃描器構建,并且可以與第三方工具集成,操作員不需要熟悉源代碼。該公司還提供了一個SQL 注入備忘單來幫助緩解工作。
Netsparker 平臺使用基于證明的掃描技術來識別和確認漏洞,指示絕對不是誤報的結果,除了 SQL 注入之外,它還可以識別 Web 應用程序、Web 服務和 Web API 中的跨站點腳本 (XSS) 和其他漏洞。
該平臺還具有安全測試工具和報告生成器,并且可以集成到 DevOps 環境中,它檢查 Apache、Nginx 和 IIS 等 Web 服務器,并支持基于 AJAX 和 JavaScript 的應用程序。
SQLMap是 GitHub 上提供的自動 SQLi 和數據庫接管工具,這個開源滲透測試工具可以自動檢測和利用 SQLi 漏洞或其他接管數據庫服務器的攻擊。
它包括一個檢測引擎;進行滲透測試的幾種方法;以及用于數據庫指紋識別、數據提取、訪問底層文件系統以及通過帶外連接在操作系統 (OS) 上執行命令的工具。
jSQL Injection是一種基于 Java 的工具,可幫助 IT 團隊從遠程服務器中查找數據庫信息,它是解決 SQLi 的眾多免費、開源方法中的另一種。它支持 Windows、Linux 和 Mac 操作系統以及 Java 版本 11-17。
它是如此有效的 SQLi 威懾,以至于它包含在許多其他漏洞掃描和滲透測試產品和發行版中。這包括Kali Linux、Pentest Box、Parrot Security OS、ArchStrike和BlackArch Linux。
它還提供 33 個數據庫引擎的自動注入,包括 Access、DB2、Hana、Ingres、MySQL、Oracle、PostgreSQL、SQL Server、Sybase 和 Teradata。它為用戶提供了解決多種注入策略和流程的方法,并提供了用于 SQL 和篡改的腳本沙箱。
Havij是由一家伊朗安全公司開發的,它提供了一個圖形用戶界面 (GUI),并且是一個自動化的 SQLi 工具,支持多種 SQLi 技術,它在支持滲透測試人員發現網頁漏洞方面具有特殊價值,雖然它主要適用于 Windows,但也有一些變通方法可以讓它在 Linux 上運行。
Burp Suite中的 Web 漏洞掃描器使用 PortSwigger 的研究來幫助用戶自動發現 Web 應用程序中的各種漏洞,例如,Burp Collaborator 識別其目標和外部服務器之間的交互,以檢查傳統掃描程序不可見的錯誤,例如異步 SQL 注入和盲目的服務器端請求偽造 (SSRF)。
Burp Scanner 中的爬網引擎位于 Burp Suite Enterprise Edition 和 Burp Suite Professional 等大型套件的核心,可消除跨站點請求偽造 (CSRF) 令牌、有狀態功能以及過載或易變 URL 等障礙。其嵌入式 Chromium 瀏覽器呈現和抓取 JavaScript。爬行算法以與測試人員類似的方式建立其目標的配置文件。
Burp 還旨在處理動態內容、不穩定的互聯網連接、API 定義和 Web 應用程序。此外,可以單獨或按組選擇掃描檢查,并且可以保存自定義配置 - 例如僅報告出現在 OWASP Top 10 中的漏洞的掃描配置。
BBQSQL是一個基于 Python 的注入利用工具,它消除了編寫自定義代碼和腳本以解決 SQLi 問題的大量乏味。它主要用于處理更復雜的 SQL 注入漏洞。由于它是半自動的且與數據庫無關,因此它簡化了定制并且相對易于使用。
它還利用基于 Python 的工具來提高性能。用戶提供數據,例如受影響的 URL、HTTP 方法和其他輸入作為設置的一部分。他們還必須指定注入的去向,以及注入的語法。
Blisqy處理 HTTP 標頭上基于時間的盲 SQL 注入。這種漏洞利用可通過盲 SQL 注入,對可打印的 ASCII 字符進行按位運算,從而從數據庫中抽取慢速數據。它支持 MySQL 和 MariaDB 數據庫。
由于它是用 Python 編寫的,因此可以將其導入其他基于 Python 的腳本中。Blisqy 是一種快速有效的補償網絡延遲和其他延遲的方法,因為它的時間比較是動態的,并且在每次測試的運行時計算。
Invicti 的Acunetix將 SQL 注入測試作為其整體功能的一部分,即掃描基于 Web 的應用程序。它的多線程掃描程序可以在 Windows 和 Linux 上快速爬取數十萬頁。它識別常見的 Web 服務器配置問題,并且特別擅長掃描 WordPress。
它會自動創建所有網站、應用程序和 API 的列表,并使其保持最新狀態。該工具還可以掃描 SPA、腳本繁重的網站以及使用 HTML5 和 JavaScript 構建的應用程序,并提供宏來自動掃描受密碼保護和難以到達的區域。
Blind SQL Injection via Bit Shifting通過使用位移方法計算字符而不是猜測字符來執行 SQL 盲注入。位移位將位的位置向左或向右移動。例如,00010111 可以轉換為 00101110。盲 SQL 模塊每個字符需要七個或八個請求,具體取決于配置。
Damn Small SQLi Scanner (DSSS) 由 SQLMap 的創建者之一組成,是一個緊湊的 SQLi 漏洞掃描器,由不到 100 行代碼組成。除了用作漏洞掃描器之外,該工具還強調其執行某些與占用大量代碼的工具相同的任務的能力。
但是,正如其大小所預期的那樣,它具有一定的局限性。例如,它只支持 GET 參數而不支持 POST 參數。
Leviathan的特點是工具的大規模審計集合。因此,它包含一系列用于服務發現、暴力破解、SQL 注入檢測和運行自定義漏洞利用功能的功能。它內部包含了幾個開源工具,包括masscan、ncrack和DSSS,可以單獨使用,也可以組合使用。
此外,它還可以發現在特定國家或 IP 范圍內運行的 FTP、SSH、Telnet、RDP 和 MySQL 服務。然后可以通過 ncrack 對發現的服務進行暴力破解。命令可以在受感染的設備上遠程運行。針對 SQLi 漏洞,它可以在帶有國家擴展名的網站上檢測到它們。
NoSQLMap是一個可用于審計的 Python 工具。它通常用于 SQL 注入攻擊的自動化,并用于發現NoSQL 數據庫和使用 NoSQL 從數據庫中披露或克隆數據的 Web 應用程序中的默認配置漏洞。
這個開源工具維護得很好,可以看作是 SQLMap 的表親。顧名思義,NoSQL 解決了與關系數據庫中使用的表格方法不同的數據模型。但是 NoSQL 數據庫確實支持類似 SQL 的查詢語言,因此受制于 SQLi。NoSQLMap 主要關注 MongoDB 和 CouchDB。未來的版本將擴大其曲目。
Tyrant SQL是一個基于 Python 的 GUI SQL 注入工具,類似于 SQLMap。它的 GUI 允許更大的簡單性。這使得初學者更容易分析易受攻擊的鏈接并確定弱點所在。
Whitewidow是另一個開源 SQL 漏洞掃描程序。由于它是自動化的,它可以快速運行一個長文件列表或從谷歌搜索潛在易受攻擊的網站。
Whitewidow 還提供其他功能,例如自動文件格式化、隨機用戶代理、IP 地址、服務器信息和多 SQL 注入語法。該工具還提供了從其中啟動 SQLMap 的能力。
然而,Whitewidow 與其說是一種補救工具,不如說是一種教育工具。它可以幫助用戶了解漏洞是什么樣的,但它依賴于 SQLMap 來獲得更強大的 SQLi 檢測功能。
Explo是一個基本工具,旨在以人類和機器可讀的格式描述 Web 安全問題。它定義了一個請求/條件工作流,允許它在無需編寫腳本的情況下利用安全問題。
因此,它可以解決復雜的漏洞,并以簡單的可讀和可執行格式共享它們。
結構化查詢語言或 SQL 是一種在Microsoft SQL Server、Oracle、IBM DB2 和 MySQL 等關系數據庫中大量使用的語言。由于數據庫傾向于為企業托管敏感信息,惡意 SQL 注入可能導致敏感信息泄露、Web 內容修改和數據刪除。
然后,SQLi 會利用基于 SQL 的應用程序中存在的漏洞。黑客將代碼注入 SQL 查詢,使他們能夠添加、修改和刪除數據庫項目。
但受影響的不僅僅是數據庫。SQLi 可以傳播到連接到 SQL 數據庫的 Web 應用程序和網站。根據開放 Web 應用程序安全項目 (OWASP),注入是 Web 應用程序最普遍的威脅。
SQLi 攻擊執行惡意 SQL 查詢,可用于繞過應用程序安全性,避免授權和身份驗證登錄和系統。攻擊因數據庫引擎的類型而異。最常見的變體包括基于用戶輸入的 SQLi、基于 cookie 的 SQLi、基于 HTTP 標頭的 SQLi 和二階 SQLi。
SQLi 的緩解和預防最初都是為了了解哪些應用程序可能易受攻擊——這意味著任何與 SQL 數據庫交互的網站。漏洞掃描是評估您可能面臨風險的好方法。另一種方法是進行滲透測試。這本質上是試圖闖入您的系統并找到任何可以利用的缺陷。
版權申明:內容來源網絡,版權歸原創者所有。除非無法確認,都會標明作者及出處,如有侵權,煩請告知,我們會立即刪除并致歉!
創: K 合天智匯
這篇文章,將教大家基本的手工sql注入和繞過waf的知識;分享一個實例,為了效果建議讀者自己去搭建環境,因為真實環境都不怎么理想。
1. sql注入的基礎
2. sql注入繞過waf
3. sql注入一個繞過實例
手工sql注入的基礎
基礎注入,盲注注入(時間和bool),報錯注入,聯合注入(union)
推薦sql-labs資源這個練習平臺,推薦《mysql注入天書pdf》
1.base(基礎的語句注入)
我們利用該表可以進行一次完整的注入。以下為一般的流程。
1)猜數據庫
2)猜某庫的數據表
3)猜某表的所有列
4)獲取某列的內容
2.union注入
union注入和基礎的注入相差不大,只需將前面的數據置0,即沒有那個指定字段即可;當然先要確定字段,下面的文章有分析
3. 時間注入
主要用到一些截斷字符對數據庫的字符進行判斷
1)先試數據庫的長度,當數字為6時發生了延時,說明數據庫名共五個字符。
2)開始猜數據庫的字(當發生延時,說明當前數據庫第一個字母為m):
3)其他的數據只需修改查詢語句即可
4. bool注入
是根據回顯,對的查詢是一種回顯,錯的查詢又是一種回顯
也是字符截斷函數來操作的
if(length(database())>8,1,sleep)
其他的不多說了
5. 報錯注入
是通過報錯函數來進行操作的
https://www.cnblogs.com/wocalieshenmegui/p/5917967.html 十種報錯注入
作者常嘗試的是這三個報錯函數updatexml,exp,floor
sql注入繞過waf
ok,這是本篇的重點
作者就不填寫那些網上普遍有的,給出幾個記得到并且常用的,但是有些簡單的還是要簡單試下
1. 大小寫混寫
2. 編碼試下 作者常用url編碼;拿到數據庫名和表名常用16進制替換他們的名字
3. 替換
and &&
or ||
相同函數的替換(這個先要過前面的引號閉合,字符過濾;前面的如果過不了,一般作者都考慮不到這,真要用到時才換)
4. 注釋繞過
1)內聯/*!50000*/,一般是被殺了的
2)/*!50000union/*!50000/*!(select*/~1,2,3) (過安全狗寫法,親測可用,下面實際操作我們將這樣操作)
3)句末注釋://, -- , /**/, #, --+,-- -, ;--a
作者常用 -- -,屢試不爽(一般+是被過濾了的)
實際運用
手工操作一波,我的測試過程:
單引號走起
這種情況gpc一般是打開了
雙引號,同樣如此:
ok,其實我們首先應該確定是字符型參數還是數字型
當id=2
id=1+1
這里+是被過濾了的,所以我們用-來做個運算
一切正常
ok,說明是數字型的參數,那么就不用引號閉合,可以進行接下來的注入
(這里給大家補充一點小知識:cms審計時,這種id之類的都是inval函數處理的;其他的cms地方sql注入漏洞很有一些是因為數字型參數不需要引號閉合進行操作的)
如果是字符型的怎么辦,字符型的gpc情況確實不好辦,作者遇到的基本是編碼繞過:這里的編碼是gbk的編碼,sprint函數這類的編碼漏洞繞過;編碼漏洞情況同樣適合xss漏洞,都是繞過waf。
這里,作者是先進行常規注入,id=2 order by 2
id=2 order by 1 正常
說明只能顯示一列數據了
OK,我們進行union測試
發現了什么,union不見了
不急,我們有姿勢
雙寫union(作者還真看到過只過濾一次關鍵詞的代碼)
嗯,看來是過濾那個單詞大小寫(雖然過時了,現在匹配函數都直接大小通殺,不妨礙隨手試下)
看到UNIon被ban了
OK,不要著急,我們試下其他的方法
用過狗方法,這里就這樣過了(普通內聯試過無法)
但美中不足的是網站的數據庫系統配置出了問題,出現下面這個錯誤
作者這樣嘗試
不指定庫也是查找當前庫;再嘗試用limit0,1限制,效果也是如此
Illegal mix of collations for operation 'UNION'
遇到了這個問題,是數據庫的編碼不一樣
原因參考:
https://www.cnblogs.com/google4y/p/3687901.html
ok,我們繼續,作者直接or來取數據庫
被ban了
|| 代替or
and呢(這比較有意思了,也是經常遇到了情況,waf特定情況才ban字符串,繞過本來就是經驗和猜)
我們看到,沒有語法錯誤,是正確的,那我們取下數據庫呢
按照mysql的語法,作者原先以為沒有錯(其實是錯的語法)
本地測試了下
錯誤,再多語句,分號試了下,是對的
想當然的給網址來了下分號(sqlmap中根據數據庫的不同也有多語句測試)
當然是錯誤的
時間注入嘛,測試成功(突破口哦)
作者一開始這樣測試
嗯,忘記單引號被過濾
用mysql的其他函數來解決
附上測試代碼(sql時間盲注的代碼除了sql的語句不同,其他的類似;bool盲注,就是修改返回判斷條件,if “aaa” in res.content:,bool就沒有去測試了,有興趣自己試一下吧)
報錯注入試下:
這么多報錯函數,就沒有一一去測試
總結
本篇文章較基礎,但對于作者來說,較全面了
手工注入知識就這些,更高級的就是各種姿勢了
大體也是這個流程,這也是作者的所有干貨了
文章僅用于普及網絡安全知識,提高小伙伴的安全意識的同時介紹常見漏洞的特征等,若讀者因此做出危害網絡安全的行為后果自負,與合天智匯以及原作者無關,特此聲明!
018年初,一個物理專業的學生Jan B?hmer創建了一個網站,用來跟蹤和記錄用戶的點擊、鼠標移動、瀏覽器類型和操作系統等數據。雖然用戶跟蹤并不新鮮,但他的方法不需要JavaScript、插件或外部庫。實際上,它只使用了普通HTML文本和一點CSS。
它是如何工作的
B?hmer的概念利用了CSS的兩個特性:將內容注入HTML元素的能力,以及在用戶執行操作后更改樣式的能力。網站的工作方式是在執行操作時使用content屬性設置URL。此URL調用一個腳本,該腳本記錄有關操作的詳細信息,這些操作作為URL參數進行傳遞。使用::before和::after CSS選擇器設置這個URL可以確保只在執行操作時調用URL,而不是在頁面首次加載時調用URL。
例如,下面的CSS在每次單擊#link元素時調用一次URL:
跟蹤腳本包含記錄事件和操作執行次數的代碼。它還可以用于提取用戶的IP地址、用戶代理和其他標識信息。
下面是這樣一個腳本在PHP中的示例:
檢測瀏覽器類型
用戶可以欺騙瀏覽器的用戶代理,但是 B?hmer繞過了這個問題,他使用@supports at-rule(at-rule 是CSS樣式聲明,以@開頭,緊跟著是標識符(charset),最后以分號(;)結尾。)測試瀏覽器特定的CSS屬性。例如,下面的操作通過檢測--webkit-appearance是可用的,而-ms-ime-align是不可用的來檢測Chrome瀏覽器:
檢測操作系統
B?hmer甚至使用字體檢測來識別用戶的操作系統。例如,通過檢測瀏覽器是否支持Calibri字體家族,我們可以假定瀏覽器運行在Windows中:
B?hmer關于此概念的驗證可以識別其他數據點,包括瀏覽器窗口的大小和方向、用戶是否單擊了鏈接以及用戶在一個元素上停留的時間。
這種攻擊在瀏覽器中非常難以預防。完全防止它的唯一方法就是禁用CSS,這會使網站無法使用。然而,通過使用內容安全策略(CSP),可以減少攻擊者利用此漏洞的機會。
使用內容安全策略減少CSS泄漏
CSP是一組規則,它決定瀏覽器可以執行哪些操作,不能執行哪些操作。CSP通常用于防止跨站腳本攻擊(XSS)和由瀏覽器加載不信任腳本導致的其他攻擊。雖然CSP通常用于JavaScript文件,但它也可以應用于CSS樣式和樣式表。
考慮一個使用第三方提供商托管的樣式表的網站。攻擊者破壞樣式表并將用戶跟蹤代碼添加到頁面上的鏈接:
當用戶點擊該鏈接時,他們的瀏覽器調用evil.com上托管的跟蹤腳本。由于這完全是通過瀏覽器完成的,網站所有者完全不知道這個漏洞。
Content-Security-Policy通過設置允許哪些樣式以及樣式來源等規則來防止這種情況。
禁用內聯樣式
禁用內聯樣式是CSP提供的最大安全好處之一。內聯樣式是直接在HTML文檔中聲明的樣式(或使用JavaScript設置的樣式),而不是從樣式表加載的樣式。內聯樣式——尤其是動態生成的樣式或用戶創建的樣式——非常難以保護。這就是為什么CSP通常會鎖定所有內聯腳本和樣式,并將那些已被特別批準的內聯腳本和樣式列入白名單。
以下規則將阻止所有內聯樣式以及外部托管的樣式表:
使用Hash和Nonce驗證樣式
如果阻塞內聯樣式是不可行的,你仍然可以使用hash和nonce來確保CSS的完整性。
Hash是由一個文件或字符串的內容生成的單向字符串。在樣式表或內聯樣式上執行哈希函數時,除非樣式發生改變,否則它總是返回相同的結果。這對于將某些內聯樣式和樣式表加入白名單是很有用的,只需要同時驗證樣式沒有被修改或篡改。
Nonce的功能與hash類似。使用nonce,將為每個請求生成一個新的隨機數,這使得攻擊者更難猜測它的值。這避免了hash的一個關鍵缺點,即多個輸入可能生成相同的hash值(稱為沖突)。
驗證外部托管的樣式表
樣式表通常托管在第三方服務器上,如內容交付網絡(content delivery networks, CDNs),但這帶來了新的攻擊方向。如果CDN受到威脅,如何阻止攻擊者用自己修改過的版本替換樣式表?子資源完整性,也叫SRI,試圖解決這個問題。
SRI使用hash值來驗證腳本和樣式表的內容。計算每個文件的hash值,并將其附加到HTML元素的integrity屬性中。當瀏覽器下載腳本或樣式表時,計算其hash值并將其與存儲在屬性中的值進行比較。如果匹配,瀏覽器將加載腳本或樣式。
這是在假設web頁面是從受信任的源(如源服務器)提交的情況下運行的,而當資源是從不受信任的源(如第三方)提交的時候,就無法正常運行。如果web頁面和資源都由第三方托管,攻擊者只需要簡單地修改web頁面來匹配其CSS替換文件的hash值即可。
結論
雖然通過CSS跟蹤用戶的能力并不新鮮,但它確實要求我們以不同的方式考慮網頁上的隱私和安全性。CSS是現代網頁的基本語言之一,禁用網站的CSS將使網頁的大部分內容無法使用。內容安全策略是阻止XSS攻擊和CSS泄漏的最佳方法。Templarbit創建了一個“靈活的內容-安全-策略工作流”,以便于維護CSP頭文件。如果你的團隊正在努力為你的應用程序推出CSP,請立即注冊一個免費試用版,并學習更多關于Templarbit如何解決CSS泄露的方法.
你可以在GitHub上找到B?hmer的概念驗證的源代碼。
相關連接:
網站——http://crookedss.bplaced.net/
最大的安全好處——https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src#Unsafe_inline_styles
通常鎖定所有內聯腳本——https://developers.google.com/web/fundamentals/security/csp/
加入白名單——https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
并不新鮮——https://www.smashingmagazine.com/2014/10/css-only-solution-for-ui-tracking/
現在就注冊獲取免費版——https://www.templarbit.com/signup
GitHub——https://github.com/jbtronics/CrookedStyleSheets
相關知識:
SRI,Subresource Integrity 的縮寫,中文:子資源完整性,由 Web 應用安全工作組(Web Application Security Working Group)發布。
英文原文:https://www.templarbit.com/blog/2018/03/20/tracking-users-with-css/
譯者:憂郁的紅秋褲
*請認真填寫需求信息,我們會在24小時內與您取得聯系。