Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 日韩中文字幕视频在线观看,6080yy久久亚洲日本不卡,亚洲日本免费

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          網(wǎng)絡(luò)安全干貨分享 - 2022 年最佳 SQL 注入檢測(cè)工具(轉(zhuǎn)載)

          近整理了一些奇安信&華為大佬的課件資料+課件筆記+面試課題,想要的可以私信自取,無(wú)償贈(zèng)送給粉絲朋友~

          文章來(lái)源 :https://www.wljslmz.cn/1109.html

          SQL 注入 (SQLi) 是一種可以訪問敏感或私有數(shù)據(jù)的隱蔽攻擊形式,它們最早是在上世紀(jì)末被發(fā)現(xiàn)的,盡管它們的年齡很大,但它們經(jīng)常被用作黑客工具包中的一種有效技術(shù)。今天,給大家介紹一下頂級(jí) SQLi 檢測(cè)工具。

          頂級(jí) SQLi 檢測(cè)工具

          有很多 SQLi 檢測(cè)工具,其中許多是開源的,可在 GitHub 上找到,除了專門的 SQLi 檢測(cè)工具外,還有更大的套件和專有軟件包將 SQLi 作為其整體漏洞檢測(cè)功能的一部分。

          Netsparker

          Netsparker是一個(gè) Web 漏洞管理解決方案,其中包括 SQLi 檢測(cè)作為其眾多功能之一,還專注于可擴(kuò)展性、自動(dòng)化和集成。

          該套件圍繞 Web 漏洞掃描器構(gòu)建,并且可以與第三方工具集成,操作員不需要熟悉源代碼。該公司還提供了一個(gè)SQL 注入備忘單來(lái)幫助緩解工作。

          Netsparker 平臺(tái)使用基于證明的掃描技術(shù)來(lái)識(shí)別和確認(rèn)漏洞,指示絕對(duì)不是誤報(bào)的結(jié)果,除了 SQL 注入之外,它還可以識(shí)別 Web 應(yīng)用程序、Web 服務(wù)和 Web API 中的跨站點(diǎn)腳本 (XSS) 和其他漏洞。

          該平臺(tái)還具有安全測(cè)試工具和報(bào)告生成器,并且可以集成到 DevOps 環(huán)境中,它檢查 Apache、Nginx 和 IIS 等 Web 服務(wù)器,并支持基于 AJAX 和 JavaScript 的應(yīng)用程序。

          SQLMap

          SQLMap是 GitHub 上提供的自動(dòng) SQLi 和數(shù)據(jù)庫(kù)接管工具,這個(gè)開源滲透測(cè)試工具可以自動(dòng)檢測(cè)和利用 SQLi 漏洞或其他接管數(shù)據(jù)庫(kù)服務(wù)器的攻擊。

          它包括一個(gè)檢測(cè)引擎;進(jìn)行滲透測(cè)試的幾種方法;以及用于數(shù)據(jù)庫(kù)指紋識(shí)別、數(shù)據(jù)提取、訪問底層文件系統(tǒng)以及通過(guò)帶外連接在操作系統(tǒng) (OS) 上執(zhí)行命令的工具。

          jSQL Injection

          jSQL Injection是一種基于 Java 的工具,可幫助 IT 團(tuán)隊(duì)從遠(yuǎn)程服務(wù)器中查找數(shù)據(jù)庫(kù)信息,它是解決 SQLi 的眾多免費(fèi)、開源方法中的另一種。它支持 Windows、Linux 和 Mac 操作系統(tǒng)以及 Java 版本 11-17。

          它是如此有效的 SQLi 威懾,以至于它包含在許多其他漏洞掃描和滲透測(cè)試產(chǎn)品和發(fā)行版中。這包括Kali Linux、Pentest Box、Parrot Security OS、ArchStrike和BlackArch Linux。

          它還提供 33 個(gè)數(shù)據(jù)庫(kù)引擎的自動(dòng)注入,包括 Access、DB2、Hana、Ingres、MySQL、Oracle、PostgreSQL、SQL Server、Sybase 和 Teradata。它為用戶提供了解決多種注入策略和流程的方法,并提供了用于 SQL 和篡改的腳本沙箱。

          Havij

          Havij是由一家伊朗安全公司開發(fā)的,它提供了一個(gè)圖形用戶界面 (GUI),并且是一個(gè)自動(dòng)化的 SQLi 工具,支持多種 SQLi 技術(shù),它在支持滲透測(cè)試人員發(fā)現(xiàn)網(wǎng)頁(yè)漏洞方面具有特殊價(jià)值,雖然它主要適用于 Windows,但也有一些變通方法可以讓它在 Linux 上運(yùn)行。

          Burp

          Burp Suite中的 Web 漏洞掃描器使用 PortSwigger 的研究來(lái)幫助用戶自動(dòng)發(fā)現(xiàn) Web 應(yīng)用程序中的各種漏洞,例如,Burp Collaborator 識(shí)別其目標(biāo)和外部服務(wù)器之間的交互,以檢查傳統(tǒng)掃描程序不可見的錯(cuò)誤,例如異步 SQL 注入和盲目的服務(wù)器端請(qǐng)求偽造 (SSRF)。

          Burp Scanner 中的爬網(wǎng)引擎位于 Burp Suite Enterprise Edition 和 Burp Suite Professional 等大型套件的核心,可消除跨站點(diǎn)請(qǐng)求偽造 (CSRF) 令牌、有狀態(tài)功能以及過(guò)載或易變 URL 等障礙。其嵌入式 Chromium 瀏覽器呈現(xiàn)和抓取 JavaScript。爬行算法以與測(cè)試人員類似的方式建立其目標(biāo)的配置文件。

          Burp 還旨在處理動(dòng)態(tài)內(nèi)容、不穩(wěn)定的互聯(lián)網(wǎng)連接、API 定義和 Web 應(yīng)用程序。此外,可以單獨(dú)或按組選擇掃描檢查,并且可以保存自定義配置 - 例如僅報(bào)告出現(xiàn)在 OWASP Top 10 中的漏洞的掃描配置。

          BBQSQL

          BBQSQL是一個(gè)基于 Python 的注入利用工具,它消除了編寫自定義代碼和腳本以解決 SQLi 問題的大量乏味。它主要用于處理更復(fù)雜的 SQL 注入漏洞。由于它是半自動(dòng)的且與數(shù)據(jù)庫(kù)無(wú)關(guān),因此它簡(jiǎn)化了定制并且相對(duì)易于使用。

          它還利用基于 Python 的工具來(lái)提高性能。用戶提供數(shù)據(jù),例如受影響的 URL、HTTP 方法和其他輸入作為設(shè)置的一部分。他們還必須指定注入的去向,以及注入的語(yǔ)法。

          Blisqy

          Blisqy處理 HTTP 標(biāo)頭上基于時(shí)間的盲 SQL 注入。這種漏洞利用可通過(guò)盲 SQL 注入,對(duì)可打印的 ASCII 字符進(jìn)行按位運(yùn)算,從而從數(shù)據(jù)庫(kù)中抽取慢速數(shù)據(jù)。它支持 MySQL 和 MariaDB 數(shù)據(jù)庫(kù)。

          由于它是用 Python 編寫的,因此可以將其導(dǎo)入其他基于 Python 的腳本中。Blisqy 是一種快速有效的補(bǔ)償網(wǎng)絡(luò)延遲和其他延遲的方法,因?yàn)樗臅r(shí)間比較是動(dòng)態(tài)的,并且在每次測(cè)試的運(yùn)行時(shí)計(jì)算。

          Acunetix Web 漏洞掃描程序

          Invicti 的Acunetix將 SQL 注入測(cè)試作為其整體功能的一部分,即掃描基于 Web 的應(yīng)用程序。它的多線程掃描程序可以在 Windows 和 Linux 上快速爬取數(shù)十萬(wàn)頁(yè)。它識(shí)別常見的 Web 服務(wù)器配置問題,并且特別擅長(zhǎng)掃描 WordPress。

          它會(huì)自動(dòng)創(chuàng)建所有網(wǎng)站、應(yīng)用程序和 API 的列表,并使其保持最新狀態(tài)。該工具還可以掃描 SPA、腳本繁重的網(wǎng)站以及使用 HTML5 和 JavaScript 構(gòu)建的應(yīng)用程序,并提供宏來(lái)自動(dòng)掃描受密碼保護(hù)和難以到達(dá)的區(qū)域。

          Blind SQL Injection via Bit Shifting

          Blind SQL Injection via Bit Shifting通過(guò)使用位移方法計(jì)算字符而不是猜測(cè)字符來(lái)執(zhí)行 SQL 盲注入。位移位將位的位置向左或向右移動(dòng)。例如,00010111 可以轉(zhuǎn)換為 00101110。盲 SQL 模塊每個(gè)字符需要七個(gè)或八個(gè)請(qǐng)求,具體取決于配置。

          Damn Small SQLi Scanner

          Damn Small SQLi Scanner (DSSS) 由 SQLMap 的創(chuàng)建者之一組成,是一個(gè)緊湊的 SQLi 漏洞掃描器,由不到 100 行代碼組成。除了用作漏洞掃描器之外,該工具還強(qiáng)調(diào)其執(zhí)行某些與占用大量代碼的工具相同的任務(wù)的能力。

          但是,正如其大小所預(yù)期的那樣,它具有一定的局限性。例如,它只支持 GET 參數(shù)而不支持 POST 參數(shù)。

          Leviathan

          Leviathan的特點(diǎn)是工具的大規(guī)模審計(jì)集合。因此,它包含一系列用于服務(wù)發(fā)現(xiàn)、暴力破解、SQL 注入檢測(cè)和運(yùn)行自定義漏洞利用功能的功能。它內(nèi)部包含了幾個(gè)開源工具,包括masscan、ncrack和DSSS,可以單獨(dú)使用,也可以組合使用。

          此外,它還可以發(fā)現(xiàn)在特定國(guó)家或 IP 范圍內(nèi)運(yùn)行的 FTP、SSH、Telnet、RDP 和 MySQL 服務(wù)。然后可以通過(guò) ncrack 對(duì)發(fā)現(xiàn)的服務(wù)進(jìn)行暴力破解。命令可以在受感染的設(shè)備上遠(yuǎn)程運(yùn)行。針對(duì) SQLi 漏洞,它可以在帶有國(guó)家擴(kuò)展名的網(wǎng)站上檢測(cè)到它們。

          NoSQLMap

          NoSQLMap是一個(gè)可用于審計(jì)的 Python 工具。它通常用于 SQL 注入攻擊的自動(dòng)化,并用于發(fā)現(xiàn)NoSQL 數(shù)據(jù)庫(kù)和使用 NoSQL 從數(shù)據(jù)庫(kù)中披露或克隆數(shù)據(jù)的 Web 應(yīng)用程序中的默認(rèn)配置漏洞。

          這個(gè)開源工具維護(hù)得很好,可以看作是 SQLMap 的表親。顧名思義,NoSQL 解決了與關(guān)系數(shù)據(jù)庫(kù)中使用的表格方法不同的數(shù)據(jù)模型。但是 NoSQL 數(shù)據(jù)庫(kù)確實(shí)支持類似 SQL 的查詢語(yǔ)言,因此受制于 SQLi。NoSQLMap 主要關(guān)注 MongoDB 和 CouchDB。未來(lái)的版本將擴(kuò)大其曲目。

          Tyrant SQL

          Tyrant SQL是一個(gè)基于 Python 的 GUI SQL 注入工具,類似于 SQLMap。它的 GUI 允許更大的簡(jiǎn)單性。這使得初學(xué)者更容易分析易受攻擊的鏈接并確定弱點(diǎn)所在。

          Whitewidow

          Whitewidow是另一個(gè)開源 SQL 漏洞掃描程序。由于它是自動(dòng)化的,它可以快速運(yùn)行一個(gè)長(zhǎng)文件列表或從谷歌搜索潛在易受攻擊的網(wǎng)站。

          Whitewidow 還提供其他功能,例如自動(dòng)文件格式化、隨機(jī)用戶代理、IP 地址、服務(wù)器信息和多 SQL 注入語(yǔ)法。該工具還提供了從其中啟動(dòng) SQLMap 的能力。

          然而,Whitewidow 與其說(shuō)是一種補(bǔ)救工具,不如說(shuō)是一種教育工具。它可以幫助用戶了解漏洞是什么樣的,但它依賴于 SQLMap 來(lái)獲得更強(qiáng)大的 SQLi 檢測(cè)功能。

          Explo

          Explo是一個(gè)基本工具,旨在以人類和機(jī)器可讀的格式描述 Web 安全問題。它定義了一個(gè)請(qǐng)求/條件工作流,允許它在無(wú)需編寫腳本的情況下利用安全問題。

          因此,它可以解決復(fù)雜的漏洞,并以簡(jiǎn)單的可讀和可執(zhí)行格式共享它們。

          什么是 SQL 注入?

          結(jié)構(gòu)化查詢語(yǔ)言或 SQL 是一種在Microsoft SQL Server、Oracle、IBM DB2 和 MySQL 等關(guān)系數(shù)據(jù)庫(kù)中大量使用的語(yǔ)言。由于數(shù)據(jù)庫(kù)傾向于為企業(yè)托管敏感信息,惡意 SQL 注入可能導(dǎo)致敏感信息泄露、Web 內(nèi)容修改和數(shù)據(jù)刪除。

          然后,SQLi 會(huì)利用基于 SQL 的應(yīng)用程序中存在的漏洞。黑客將代碼注入 SQL 查詢,使他們能夠添加、修改和刪除數(shù)據(jù)庫(kù)項(xiàng)目。

          但受影響的不僅僅是數(shù)據(jù)庫(kù)。SQLi 可以傳播到連接到 SQL 數(shù)據(jù)庫(kù)的 Web 應(yīng)用程序和網(wǎng)站。根據(jù)開放 Web 應(yīng)用程序安全項(xiàng)目 (OWASP),注入是 Web 應(yīng)用程序最普遍的威脅。

          如何防止 SQL 注入?

          SQLi 攻擊執(zhí)行惡意 SQL 查詢,可用于繞過(guò)應(yīng)用程序安全性,避免授權(quán)和身份驗(yàn)證登錄和系統(tǒng)。攻擊因數(shù)據(jù)庫(kù)引擎的類型而異。最常見的變體包括基于用戶輸入的 SQLi、基于 cookie 的 SQLi、基于 HTTP 標(biāo)頭的 SQLi 和二階 SQLi。

          SQLi 的緩解和預(yù)防最初都是為了了解哪些應(yīng)用程序可能易受攻擊——這意味著任何與 SQL 數(shù)據(jù)庫(kù)交互的網(wǎng)站。漏洞掃描是評(píng)估您可能面臨風(fēng)險(xiǎn)的好方法。另一種方法是進(jìn)行滲透測(cè)試。這本質(zhì)上是試圖闖入您的系統(tǒng)并找到任何可以利用的缺陷。

          版權(quán)申明:內(nèi)容來(lái)源網(wǎng)絡(luò),版權(quán)歸原創(chuàng)者所有。除非無(wú)法確認(rèn),都會(huì)標(biāo)明作者及出處,如有侵權(quán),煩請(qǐng)告知,我們會(huì)立即刪除并致歉!

          創(chuàng): K 合天智匯

          這篇文章,將教大家基本的手工sql注入和繞過(guò)waf的知識(shí);分享一個(gè)實(shí)例,為了效果建議讀者自己去搭建環(huán)境,因?yàn)檎鎸?shí)環(huán)境都不怎么理想。

          1. sql注入的基礎(chǔ)

          2. sql注入繞過(guò)waf

          3. sql注入一個(gè)繞過(guò)實(shí)例

          手工sql注入的基礎(chǔ)

          基礎(chǔ)注入,盲注注入(時(shí)間和bool),報(bào)錯(cuò)注入,聯(lián)合注入(union)

          推薦sql-labs資源這個(gè)練習(xí)平臺(tái),推薦《mysql注入天書pdf》

          1.base(基礎(chǔ)的語(yǔ)句注入)

          我們利用該表可以進(jìn)行一次完整的注入。以下為一般的流程。

          1)猜數(shù)據(jù)庫(kù)



          2)猜某庫(kù)的數(shù)據(jù)表



          3)猜某表的所有列



          4)獲取某列的內(nèi)容



          2.union注入

          union注入和基礎(chǔ)的注入相差不大,只需將前面的數(shù)據(jù)置0,即沒有那個(gè)指定字段即可;當(dāng)然先要確定字段,下面的文章有分析

          3. 時(shí)間注入

          主要用到一些截?cái)嘧址麑?duì)數(shù)據(jù)庫(kù)的字符進(jìn)行判斷

          1)先試數(shù)據(jù)庫(kù)的長(zhǎng)度,當(dāng)數(shù)字為6時(shí)發(fā)生了延時(shí),說(shuō)明數(shù)據(jù)庫(kù)名共五個(gè)字符。



          2)開始猜數(shù)據(jù)庫(kù)的字(當(dāng)發(fā)生延時(shí),說(shuō)明當(dāng)前數(shù)據(jù)庫(kù)第一個(gè)字母為m):



          3)其他的數(shù)據(jù)只需修改查詢語(yǔ)句即可

          4. bool注入

          是根據(jù)回顯,對(duì)的查詢是一種回顯,錯(cuò)的查詢又是一種回顯

          也是字符截?cái)嗪瘮?shù)來(lái)操作的

          if(length(database())>8,1,sleep)

          其他的不多說(shuō)了

          5. 報(bào)錯(cuò)注入

          是通過(guò)報(bào)錯(cuò)函數(shù)來(lái)進(jìn)行操作的

          https://www.cnblogs.com/wocalieshenmegui/p/5917967.html 十種報(bào)錯(cuò)注入

          作者常嘗試的是這三個(gè)報(bào)錯(cuò)函數(shù)updatexml,exp,floor

          sql注入繞過(guò)waf

          ok,這是本篇的重點(diǎn)

          作者就不填寫那些網(wǎng)上普遍有的,給出幾個(gè)記得到并且常用的,但是有些簡(jiǎn)單的還是要簡(jiǎn)單試下

          1. 大小寫混寫

          2. 編碼試下 作者常用url編碼;拿到數(shù)據(jù)庫(kù)名和表名常用16進(jìn)制替換他們的名字

          3. 替換

          and &&

          or ||

          相同函數(shù)的替換(這個(gè)先要過(guò)前面的引號(hào)閉合,字符過(guò)濾;前面的如果過(guò)不了,一般作者都考慮不到這,真要用到時(shí)才換)

          4. 注釋繞過(guò)

          1)內(nèi)聯(lián)/*!50000*/,一般是被殺了的

          2)/*!50000union/*!50000/*!(select*/~1,2,3) (過(guò)安全狗寫法,親測(cè)可用,下面實(shí)際操作我們將這樣操作)

          3)句末注釋://, -- , /**/, #, --+,-- -, ;--a

          作者常用 -- -,屢試不爽(一般+是被過(guò)濾了的)

          實(shí)際運(yùn)用

          手工操作一波,我的測(cè)試過(guò)程:

          單引號(hào)走起

          這種情況gpc一般是打開了

          雙引號(hào),同樣如此:

          ok,其實(shí)我們首先應(yīng)該確定是字符型參數(shù)還是數(shù)字型

          當(dāng)id=2

          id=1+1

          這里+是被過(guò)濾了的,所以我們用-來(lái)做個(gè)運(yùn)算

          一切正常

          ok,說(shuō)明是數(shù)字型的參數(shù),那么就不用引號(hào)閉合,可以進(jìn)行接下來(lái)的注入

          (這里給大家補(bǔ)充一點(diǎn)小知識(shí):cms審計(jì)時(shí),這種id之類的都是inval函數(shù)處理的;其他的cms地方sql注入漏洞很有一些是因?yàn)閿?shù)字型參數(shù)不需要引號(hào)閉合進(jìn)行操作的)

          如果是字符型的怎么辦,字符型的gpc情況確實(shí)不好辦,作者遇到的基本是編碼繞過(guò):這里的編碼是gbk的編碼,sprint函數(shù)這類的編碼漏洞繞過(guò);編碼漏洞情況同樣適合xss漏洞,都是繞過(guò)waf。

          這里,作者是先進(jìn)行常規(guī)注入,id=2 order by 2

          id=2 order by 1 正常

          說(shuō)明只能顯示一列數(shù)據(jù)了

          OK,我們進(jìn)行union測(cè)試

          發(fā)現(xiàn)了什么,union不見了

          不急,我們有姿勢(shì)

          雙寫union(作者還真看到過(guò)只過(guò)濾一次關(guān)鍵詞的代碼)

          嗯,看來(lái)是過(guò)濾那個(gè)單詞大小寫(雖然過(guò)時(shí)了,現(xiàn)在匹配函數(shù)都直接大小通殺,不妨礙隨手試下)

          看到UNIon被ban了

          OK,不要著急,我們?cè)囅缕渌姆椒?/p>

          用過(guò)狗方法,這里就這樣過(guò)了(普通內(nèi)聯(lián)試過(guò)無(wú)法)






          但美中不足的是網(wǎng)站的數(shù)據(jù)庫(kù)系統(tǒng)配置出了問題,出現(xiàn)下面這個(gè)錯(cuò)誤

          作者這樣嘗試



          不指定庫(kù)也是查找當(dāng)前庫(kù);再嘗試用limit0,1限制,效果也是如此



          Illegal mix of collations for operation 'UNION'

          遇到了這個(gè)問題,是數(shù)據(jù)庫(kù)的編碼不一樣

          原因參考:

          https://www.cnblogs.com/google4y/p/3687901.html

          ok,我們繼續(xù),作者直接or來(lái)取數(shù)據(jù)庫(kù)

          被ban了

          || 代替or

          and呢(這比較有意思了,也是經(jīng)常遇到了情況,waf特定情況才ban字符串,繞過(guò)本來(lái)就是經(jīng)驗(yàn)和猜)

          我們看到,沒有語(yǔ)法錯(cuò)誤,是正確的,那我們?nèi)∠聰?shù)據(jù)庫(kù)呢

          按照mysql的語(yǔ)法,作者原先以為沒有錯(cuò)(其實(shí)是錯(cuò)的語(yǔ)法)


          本地測(cè)試了下

          錯(cuò)誤,再多語(yǔ)句,分號(hào)試了下,是對(duì)的

          想當(dāng)然的給網(wǎng)址來(lái)了下分號(hào)(sqlmap中根據(jù)數(shù)據(jù)庫(kù)的不同也有多語(yǔ)句測(cè)試)

          當(dāng)然是錯(cuò)誤的

          時(shí)間注入嘛,測(cè)試成功(突破口哦)

          作者一開始這樣測(cè)試

          嗯,忘記單引號(hào)被過(guò)濾

          用mysql的其他函數(shù)來(lái)解決

          附上測(cè)試代碼(sql時(shí)間盲注的代碼除了sql的語(yǔ)句不同,其他的類似;bool盲注,就是修改返回判斷條件,if “aaa” in res.content:,bool就沒有去測(cè)試了,有興趣自己試一下吧)



          報(bào)錯(cuò)注入試下:

          這么多報(bào)錯(cuò)函數(shù),就沒有一一去測(cè)試

          總結(jié)

          本篇文章較基礎(chǔ),但對(duì)于作者來(lái)說(shuō),較全面了

          手工注入知識(shí)就這些,更高級(jí)的就是各種姿勢(shì)了

          大體也是這個(gè)流程,這也是作者的所有干貨了

          文章僅用于普及網(wǎng)絡(luò)安全知識(shí),提高小伙伴的安全意識(shí)的同時(shí)介紹常見漏洞的特征等,若讀者因此做出危害網(wǎng)絡(luò)安全的行為后果自負(fù),與合天智匯以及原作者無(wú)關(guān),特此聲明!

          018年初,一個(gè)物理專業(yè)的學(xué)生Jan B?hmer創(chuàng)建了一個(gè)網(wǎng)站,用來(lái)跟蹤和記錄用戶的點(diǎn)擊、鼠標(biāo)移動(dòng)、瀏覽器類型和操作系統(tǒng)等數(shù)據(jù)。雖然用戶跟蹤并不新鮮,但他的方法不需要JavaScript、插件或外部庫(kù)。實(shí)際上,它只使用了普通HTML文本和一點(diǎn)CSS。

          它是如何工作的

          B?hmer的概念利用了CSS的兩個(gè)特性:將內(nèi)容注入HTML元素的能力,以及在用戶執(zhí)行操作后更改樣式的能力。網(wǎng)站的工作方式是在執(zhí)行操作時(shí)使用content屬性設(shè)置URL。此URL調(diào)用一個(gè)腳本,該腳本記錄有關(guān)操作的詳細(xì)信息,這些操作作為URL參數(shù)進(jìn)行傳遞。使用::before和::after CSS選擇器設(shè)置這個(gè)URL可以確保只在執(zhí)行操作時(shí)調(diào)用URL,而不是在頁(yè)面首次加載時(shí)調(diào)用URL。

          例如,下面的CSS在每次單擊#link元素時(shí)調(diào)用一次URL:

          跟蹤腳本包含記錄事件和操作執(zhí)行次數(shù)的代碼。它還可以用于提取用戶的IP地址、用戶代理和其他標(biāo)識(shí)信息。

          下面是這樣一個(gè)腳本在PHP中的示例:

          檢測(cè)瀏覽器類型

          用戶可以欺騙瀏覽器的用戶代理,但是 B?hmer繞過(guò)了這個(gè)問題,他使用@supports at-rule(at-rule 是CSS樣式聲明,以@開頭,緊跟著是標(biāo)識(shí)符(charset),最后以分號(hào)(;)結(jié)尾。)測(cè)試瀏覽器特定的CSS屬性。例如,下面的操作通過(guò)檢測(cè)--webkit-appearance是可用的,而-ms-ime-align是不可用的來(lái)檢測(cè)Chrome瀏覽器:

          檢測(cè)操作系統(tǒng)

          B?hmer甚至使用字體檢測(cè)來(lái)識(shí)別用戶的操作系統(tǒng)。例如,通過(guò)檢測(cè)瀏覽器是否支持Calibri字體家族,我們可以假定瀏覽器運(yùn)行在Windows中:

          B?hmer關(guān)于此概念的驗(yàn)證可以識(shí)別其他數(shù)據(jù)點(diǎn),包括瀏覽器窗口的大小和方向、用戶是否單擊了鏈接以及用戶在一個(gè)元素上停留的時(shí)間。

          這種攻擊在瀏覽器中非常難以預(yù)防。完全防止它的唯一方法就是禁用CSS,這會(huì)使網(wǎng)站無(wú)法使用。然而,通過(guò)使用內(nèi)容安全策略(CSP),可以減少攻擊者利用此漏洞的機(jī)會(huì)。

          使用內(nèi)容安全策略減少CSS泄漏

          CSP是一組規(guī)則,它決定瀏覽器可以執(zhí)行哪些操作,不能執(zhí)行哪些操作。CSP通常用于防止跨站腳本攻擊(XSS)和由瀏覽器加載不信任腳本導(dǎo)致的其他攻擊。雖然CSP通常用于JavaScript文件,但它也可以應(yīng)用于CSS樣式和樣式表。

          考慮一個(gè)使用第三方提供商托管的樣式表的網(wǎng)站。攻擊者破壞樣式表并將用戶跟蹤代碼添加到頁(yè)面上的鏈接:

          當(dāng)用戶點(diǎn)擊該鏈接時(shí),他們的瀏覽器調(diào)用evil.com上托管的跟蹤腳本。由于這完全是通過(guò)瀏覽器完成的,網(wǎng)站所有者完全不知道這個(gè)漏洞。

          Content-Security-Policy通過(guò)設(shè)置允許哪些樣式以及樣式來(lái)源等規(guī)則來(lái)防止這種情況。

          禁用內(nèi)聯(lián)樣式

          禁用內(nèi)聯(lián)樣式是CSP提供的最大安全好處之一。內(nèi)聯(lián)樣式是直接在HTML文檔中聲明的樣式(或使用JavaScript設(shè)置的樣式),而不是從樣式表加載的樣式。內(nèi)聯(lián)樣式——尤其是動(dòng)態(tài)生成的樣式或用戶創(chuàng)建的樣式——非常難以保護(hù)。這就是為什么CSP通常會(huì)鎖定所有內(nèi)聯(lián)腳本和樣式,并將那些已被特別批準(zhǔn)的內(nèi)聯(lián)腳本和樣式列入白名單。

          以下規(guī)則將阻止所有內(nèi)聯(lián)樣式以及外部托管的樣式表:

          使用Hash和Nonce驗(yàn)證樣式

          如果阻塞內(nèi)聯(lián)樣式是不可行的,你仍然可以使用hash和nonce來(lái)確保CSS的完整性。

          Hash是由一個(gè)文件或字符串的內(nèi)容生成的單向字符串。在樣式表或內(nèi)聯(lián)樣式上執(zhí)行哈希函數(shù)時(shí),除非樣式發(fā)生改變,否則它總是返回相同的結(jié)果。這對(duì)于將某些內(nèi)聯(lián)樣式和樣式表加入白名單是很有用的,只需要同時(shí)驗(yàn)證樣式?jīng)]有被修改或篡改。

          Nonce的功能與hash類似。使用nonce,將為每個(gè)請(qǐng)求生成一個(gè)新的隨機(jī)數(shù),這使得攻擊者更難猜測(cè)它的值。這避免了hash的一個(gè)關(guān)鍵缺點(diǎn),即多個(gè)輸入可能生成相同的hash值(稱為沖突)。

          驗(yàn)證外部托管的樣式表

          樣式表通常托管在第三方服務(wù)器上,如內(nèi)容交付網(wǎng)絡(luò)(content delivery networks, CDNs),但這帶來(lái)了新的攻擊方向。如果CDN受到威脅,如何阻止攻擊者用自己修改過(guò)的版本替換樣式表?子資源完整性,也叫SRI,試圖解決這個(gè)問題。

          SRI使用hash值來(lái)驗(yàn)證腳本和樣式表的內(nèi)容。計(jì)算每個(gè)文件的hash值,并將其附加到HTML元素的integrity屬性中。當(dāng)瀏覽器下載腳本或樣式表時(shí),計(jì)算其hash值并將其與存儲(chǔ)在屬性中的值進(jìn)行比較。如果匹配,瀏覽器將加載腳本或樣式。

          這是在假設(shè)web頁(yè)面是從受信任的源(如源服務(wù)器)提交的情況下運(yùn)行的,而當(dāng)資源是從不受信任的源(如第三方)提交的時(shí)候,就無(wú)法正常運(yùn)行。如果web頁(yè)面和資源都由第三方托管,攻擊者只需要簡(jiǎn)單地修改web頁(yè)面來(lái)匹配其CSS替換文件的hash值即可。

          結(jié)論

          雖然通過(guò)CSS跟蹤用戶的能力并不新鮮,但它確實(shí)要求我們以不同的方式考慮網(wǎng)頁(yè)上的隱私和安全性。CSS是現(xiàn)代網(wǎng)頁(yè)的基本語(yǔ)言之一,禁用網(wǎng)站的CSS將使網(wǎng)頁(yè)的大部分內(nèi)容無(wú)法使用。內(nèi)容安全策略是阻止XSS攻擊和CSS泄漏的最佳方法。Templarbit創(chuàng)建了一個(gè)“靈活的內(nèi)容-安全-策略工作流”,以便于維護(hù)CSP頭文件。如果你的團(tuán)隊(duì)正在努力為你的應(yīng)用程序推出CSP,請(qǐng)立即注冊(cè)一個(gè)免費(fèi)試用版,并學(xué)習(xí)更多關(guān)于Templarbit如何解決CSS泄露的方法.

          你可以在GitHub上找到B?hmer的概念驗(yàn)證的源代碼。

          相關(guān)連接:

          網(wǎng)站——http://crookedss.bplaced.net/

          最大的安全好處——https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src#Unsafe_inline_styles

          通常鎖定所有內(nèi)聯(lián)腳本——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/

          現(xiàn)在就注冊(cè)獲取免費(fèi)版——https://www.templarbit.com/signup

          GitHub——https://github.com/jbtronics/CrookedStyleSheets

          相關(guān)知識(shí):

          SRI,Subresource Integrity 的縮寫,中文:子資源完整性,由 Web 應(yīng)用安全工作組(Web Application Security Working Group)發(fā)布。

          英文原文:https://www.templarbit.com/blog/2018/03/20/tracking-users-with-css/
          譯者:憂郁的紅秋褲

          主站蜘蛛池模板: 成人精品一区久久久久| 91秒拍国产福利一区| 午夜影视日本亚洲欧洲精品一区| 无码人妻精品一区二区蜜桃网站| 人成精品视频三区二区一区 | 国产一区二区在线观看麻豆| 亚洲一区二区成人| 欧洲精品无码一区二区三区在线播放| 玩弄放荡人妻一区二区三区| 午夜影院一区二区| 一区高清大胆人体| 亚洲AV无码一区二区乱子伦| 国产一区二区视频在线播放| 国产精品女同一区二区久久| 青娱乐国产官网极品一区| 99国产精品欧美一区二区三区| 精品不卡一区二区| 亚洲天堂一区在线| 蜜臀Av午夜一区二区三区| 日本不卡在线一区二区三区视频| 国产亚洲情侣一区二区无码AV| 精品人妻一区二区三区四区| 美女免费视频一区二区三区| 国产AV天堂无码一区二区三区| 日韩精品电影一区| 国产在线观看91精品一区| 国产成人av一区二区三区在线| 国产情侣一区二区| 国产伦精品一区二区| 日本中文一区二区三区亚洲| 亚洲AV无码一区二三区| 中文字幕国产一区| 中文字幕一精品亚洲无线一区| 亚洲AV美女一区二区三区| 成人区精品一区二区不卡| 无码人妻精品一区二区三区夜夜嗨 | 免费在线观看一区| 亚洲av区一区二区三| 相泽亚洲一区中文字幕| 日韩欧国产精品一区综合无码| 亚洲av不卡一区二区三区|