OWASP 十大漏洞。這玩意兒就像咱們護(hù)網(wǎng)工程師的 "九陽真經(jīng)",不管是做滲透測試還是搞安全防護(hù),這十個漏洞都是繞不開的核心。我會用菜市場都能聽懂的大白話,搭配真實的攻擊案例,讓你一看就懂黑客的十大套路,以及咱們該怎么見招拆招。一、先搞明白:OWASP 是啥?為啥它的漏洞列表能封神?
- OWASP 就是網(wǎng)絡(luò)安全界的 "朝陽群眾"
OWASP(開放式 Web 應(yīng)用安全項目)是全球最牛的公益安全組織,專門盯著互聯(lián)網(wǎng)上那些最常見、最危險的漏洞。它每年都會更新的「十大漏洞」,相當(dāng)于給全網(wǎng)發(fā)布了一份 "黑客常用套路通緝令",把黑客最愛用、危害最大的十種攻擊手法列得明明白白,堪稱護(hù)網(wǎng)人的 "防坑指南"。
- 為啥說這是護(hù)網(wǎng)人的 "必背考點"?
- 黑客 70% 的攻擊都靠這幾招:不管是國家級的護(hù)網(wǎng)行動,還是日常的滲透測試,超過七成的攻擊都是圍繞這十大漏洞展開的。你把這些漏洞吃透了,相當(dāng)于掌握了黑客的 "常用密碼本"。
- 守住它們就能擋住大部分攻擊:這十大漏洞就像網(wǎng)絡(luò)安全的 "任督二脈",打通了就能大幅提升防御能力。舉個夸張的例子:只要把這十個漏洞防住,能讓 80% 的黑客攻擊無功而返。
1. A01:破碎的訪問控制(越權(quán)訪問)—— 小區(qū)門禁形同虛設(shè)就好比小區(qū)保安不查門禁卡,不管誰來了都放進(jìn)去。黑客利用網(wǎng)站沒做好權(quán)限控制,直接改改 URL 里的用戶 ID,就能看別人的信息、刪數(shù)據(jù),甚至冒充管理員。前兩年某電商出了個大簍子:用戶查訂單的接口沒做權(quán)限校驗,黑客把 URL 里的user=1改成user=1001,直接看到了全平臺用戶的訂單詳情,連收貨地址都沒打碼,10 萬條數(shù)據(jù)就這么泄露了。
- 手動改參數(shù):登錄后把 URL 里的用戶 ID 改成別人的(比如從1改成2),看看能不能看到對方的信息。
- 抓包改角色:用 BurpSuite 抓登錄后的請求,把用戶角色從普通用戶改成admin,看看能不能直接進(jìn)入管理員后臺。
- 每個接口都設(shè) "門衛(wèi)":用戶訪問任何功能前,服務(wù)器必須檢查權(quán)限 —— 普通用戶只能看自己的數(shù)據(jù),管理員才能刪東西,別信前端返回的角色信息(黑客分分鐘能改)。
- 權(quán)限校驗放服務(wù)器端:別把權(quán)限控制寫在前端代碼里,黑客能輕松繞過,所有校驗都要在服務(wù)器端做,比如用戶想刪數(shù)據(jù),先查數(shù)據(jù)庫確認(rèn)是不是管理員。
2. A02:加密失效(數(shù)據(jù)裸奔)—— 重要文件隨便扔桌上相當(dāng)于把存折密碼寫在紙上隨手丟桌上,黑客撿起來就能用。數(shù)據(jù)傳輸時沒加密,或者存儲時用弱加密,黑客抓包或拖庫就能拿到明文敏感信息。某銀行 APP 居然用 Base64 編碼傳輸密碼(Base64 只是編碼,不是加密!),黑客用 Wireshark 抓包,直接解碼拿到了用戶密碼,幾千個賬戶一夜之間被盜刷。
- 看網(wǎng)址有沒有小綠鎖:訪問網(wǎng)站時看 URL 是不是https,沒加密的http相當(dāng)于數(shù)據(jù)在裸奔。
- 查數(shù)據(jù)庫密碼存儲:如果數(shù)據(jù)庫里的密碼是明文,或者只用 MD5 這種弱加密(比如e10adc3949ba59abbe56e057f20f883e這種短哈希),那就是高危漏洞。
- 強制 HTTPS 加密:所有數(shù)據(jù)傳輸必須用 HTTPS,證書用 Let's Encrypt 免費申請,別用自簽名證書(瀏覽器會報錯)。
- 密碼存儲要 "加鹽":密碼不能直接存哈希,要加隨機鹽值再加密(比如 BCrypt 算法),敏感數(shù)據(jù)(身份證號、銀行卡號)必須用 AES 這種強加密算法。
3. A03:注入漏洞(輸入框下毒)—— 在湯里撒毒藥黑客在輸入框里輸入惡意代碼,就像在餐館的湯里撒毒藥,讓服務(wù)器執(zhí)行非法命令。最常見的是 SQL 注入(攻擊數(shù)據(jù)庫)和命令注入(攻擊服務(wù)器系統(tǒng))。某論壇的搜索框沒過濾特殊字符,黑客輸入' or 1=1 --,直接繞過登錄,把整個論壇的用戶數(shù)據(jù)庫都拖走了,管理員密碼也被明文泄露。
- 手動試特殊字符:在搜索框、登錄框輸入'、"、;、--,如果頁面報錯或者返回大量數(shù)據(jù),大概率存在注入漏洞。
- 用工具掃:SQL 注入用 SQLMap,命令注入用 AWVS,直接跑腳本就能檢測。
- 只允許 "白名單" 字符:比如手機號輸入框只允許數(shù)字,郵箱輸入框必須包含@,別用黑名單(永遠(yuǎn)防不住漏網(wǎng)之魚)。
- 寫代碼別拼接 SQL:用框架自帶的參數(shù)化查詢(比如 Java 的 PreparedStatement),別直接把用戶輸入拼進(jìn) SQL 語句里,比如寫成select * from user where id=?,用參數(shù)傳值。
4. A04:不安全的設(shè)計(天生缺陷)—— 建房子沒留消防通道系統(tǒng)設(shè)計時就有硬傷,比如登錄接口沒做限流,黑客能暴力破解;沒做反序列化保護(hù),黑客能遠(yuǎn)程執(zhí)行代碼,相當(dāng)于建房子時沒留消防通道,起火了沒法逃生。某物流系統(tǒng)的登錄口沒限制嘗試次數(shù),黑客寫了個腳本,每秒發(fā) 1000 次登錄請求,3 小時內(nèi)破解了 500 個員工的弱密碼,直接控制了內(nèi)部系統(tǒng),把貨物配送信息改得亂七八糟。
- 看業(yè)務(wù)邏輯是否合理:注冊時沒驗證碼、找回密碼只發(fā)短信不打電話、支付接口沒簽名校驗,這些都是設(shè)計漏洞。
- 測接口并發(fā)能力:用 BurpSuite 同時發(fā) 100 個登錄請求,看系統(tǒng)會不會觸發(fā)限流(比如返回 "請求頻繁,請稍后再試")。
- 設(shè)計時就把安全考慮進(jìn)去:登錄接口必須加驗證碼,每分鐘最多允許 5 次嘗試;重要操作(如改密碼、轉(zhuǎn)賬)必須二次驗證(短信 + 郵箱)。
- 畫數(shù)據(jù)流圖做威脅建模:開發(fā)前先畫流程圖,標(biāo)出用戶輸入、數(shù)據(jù)傳輸、權(quán)限控制這些可能被攻擊的點,提前堵上漏洞。
5. A05:安全配置錯誤(防盜門沒關(guān))—— 裝了防盜門卻沒上鎖服務(wù)器或應(yīng)用的配置沒做好,比如用默認(rèn)密碼、開放敏感端口、泄露敏感文件,相當(dāng)于家里裝了防盜門卻沒關(guān)門,黑客直接推門就進(jìn)。某公司把 Redis 服務(wù)直接暴露在公網(wǎng),還沒設(shè)密碼,黑客用工具連接后,直接寫入惡意腳本,把服務(wù)器變成了挖礦機,CPU 跑滿了一周,電費多花了好幾萬才發(fā)現(xiàn)。
- 掃端口找漏洞:用 nmap 掃 3306(MySQL)、6379(Redis)、7001(WebLogic)等端口,看是否開放且無需認(rèn)證。
- 找敏感文件泄露:訪問/robots.txt看有沒有后臺地址,/phpinfo.php看 PHP 配置,/config.php看數(shù)據(jù)庫賬號密碼。
- 關(guān)閉不必要的服務(wù)和端口:用netstat -an查開放端口,只留必要的(比如 Web 服務(wù)開 80/443,數(shù)據(jù)庫端口只允許內(nèi)網(wǎng)訪問)。
- 刪掉默認(rèn)配置和文件:Tomcat 的manager后臺、Spring Boot 的actuator端點、默認(rèn)的admin/admin賬號,這些全刪掉或改密碼。
6. A06:脆弱的和過時的組件(用十年前的老鎖)—— 鎖太舊了小偷隨便撬用了有漏洞的舊版本軟件,比如 Struts2-045、Log4j2,這些組件的漏洞早就被黑客研究透了,直接用公開的攻擊腳本就能拿下系統(tǒng)。某醫(yī)院的系統(tǒng)沒更新 Log4j2 組件,黑客利用 JNDI 注入漏洞,遠(yuǎn)程執(zhí)行代碼,把所有病歷文件都加密了,開價 10 個比特幣贖金,醫(yī)院差點癱瘓。
- 查技術(shù)棧版本:用 WhatWeb 看網(wǎng)站用了什么技術(shù)(比如 WordPress 5.8),去 CNVD 查這個版本有沒有已知漏洞。
- 用工具掃組件漏洞:Nessus 掃系統(tǒng)補丁,OWASP Dependency-Check 掃第三方庫(比如 Maven 依賴的舊版 jar 包)。
- 定期更新組件和補丁:每月跟進(jìn) CVE 漏洞庫,特別是 Log4j、Struts2、Spring 這些高危組件,發(fā)現(xiàn)漏洞 24 小時內(nèi)必須打補丁。
- 每周跑漏洞掃描工具:用 OpenVAS 掃服務(wù)器,及時發(fā)現(xiàn)過時組件(比如 Redis 4.0.11 以下版本有未授權(quán)訪問漏洞,必須升級)。
7. A07:身份認(rèn)證失敗(門禁卡被復(fù)制)—— 黑客冒充合法用戶黑客通過弱口令、會話劫持、憑證泄露等方式,拿到合法用戶的登錄憑證,相當(dāng)于復(fù)制了門禁卡,大搖大擺進(jìn)入系統(tǒng)。某政府網(wǎng)站的后臺登錄口,允許用戶名admin無限次嘗試密碼,黑客用字典攻擊,1 小時就破解了密碼admin123,直接把首頁改成了惡搞頁面,第二天才被發(fā)現(xiàn)。
- 測弱口令:用 BurpSuite 的 Intruder 模塊,加載常見密碼字典(比如admin、123456、password),暴力破解登錄口。
- 查會話安全:登錄后修改 Cookie 里的JSESSIONID為別人的會話 ID,看能不能直接登錄(會話劫持漏洞)。
- 強制強密碼策略:密碼必須 8 位以上,包含字母、數(shù)字、符號,每 3 個月強制修改,禁止使用歷史密碼。
- 會話管理要嚴(yán)格:用戶 15 分鐘不操作就自動注銷,會話 ID 用 32 位隨機字符串(別用 1、2、3 這種順序號),存在 HttpOnly 的 Cookie 里防 XSS 竊取。
8. A08:軟件和數(shù)據(jù)完整性失敗(快遞被拆封篡改)—— 中途修改包裹內(nèi)容黑客在數(shù)據(jù)傳輸或存儲過程中篡改數(shù)據(jù),比如把訂單金額從 1000 元改成 1 元,或者在安裝包植入木馬,相當(dāng)于快遞在運輸途中被拆封換貨。某電商的支付接口沒做數(shù)據(jù)簽名,黑客抓包后修改訂單金額,把 1000 元的手機訂單改成 1 元,成功下單 10 臺,公司直接損失 9990 元。
- 改包測試:用 BurpSuite 攔截請求,把價格、數(shù)量等字段改掉,看服務(wù)器是否接受(比如把price=100改成price=1)。
- 查文件哈希:下載軟件后對比官方 MD5 值,如果對不上,說明文件被篡改(可能有木馬)。
- 重要數(shù)據(jù)加簽名校驗:傳輸訂單、支付信息時,用 HMAC 算法生成簽名,服務(wù)器收到后驗證簽名是否正確,防止數(shù)據(jù)被篡改。
- 文件上傳驗哈希:用戶上傳文件后,計算 SHA-256 哈希值存起來,讀取時對比哈希,確保文件沒被修改。
9. A09:安全日志和監(jiān)控失敗(沒裝監(jiān)控的家)—— 小偷來了不知道系統(tǒng)沒記錄攻擊日志,或者監(jiān)控報警不及時,相當(dāng)于家里沒裝監(jiān)控,小偷來了偷完東西走了,你都不知道啥時候被偷的,也查不到是誰偷的。某金融機構(gòu)的服務(wù)器被植入后門,黑客每月偷一次數(shù)據(jù),但系統(tǒng)沒記錄登錄日志,直到三個月后流量異常才被發(fā)現(xiàn),此時 50GB 客戶數(shù)據(jù)已泄露,根本追不到攻擊源頭。
- 查日志是否完整:看服務(wù)器有沒有記錄登錄失敗、異常 IP 訪問、敏感操作(如刪除文件、修改權(quán)限)。
- 測報警機制:故意輸錯密碼 10 次,看會不會收到郵件 / 短信報警(很多系統(tǒng)根本沒開報警功能)。
- 記錄所有關(guān)鍵操作:登錄失敗、權(quán)限變更、敏感文件訪問等必須記錄,日志存到獨立服務(wù)器(防止被攻擊者刪除)。
- 實時監(jiān)控 + 自動報警:用 ELK 棧實時分析日志,設(shè)置報警規(guī)則(如 1 分鐘內(nèi) 50 次登錄失敗),發(fā)現(xiàn)異常立即通知管理員。
10. A10:SSRF(服務(wù)器當(dāng)中間人)—— 借刀殺人黑客讓服務(wù)器幫自己訪問內(nèi)部系統(tǒng),比如偽造服務(wù)器請求,讓它去連接內(nèi)網(wǎng)數(shù)據(jù)庫、訪問內(nèi)部 API,相當(dāng)于借服務(wù)器的 "身份" 去干壞事。某新聞網(wǎng)站的圖片獲取接口,允許輸入任意 URL,黑客輸入內(nèi)網(wǎng)數(shù)據(jù)庫地址http://192.168.1.100:3306,服務(wù)器傻乎乎地去連接,幫黑客拿到了內(nèi)部數(shù)據(jù)。
- 測 URL 輸入接口:在允許輸入 URL 的地方(比如圖片鏈接、跳轉(zhuǎn)鏈接),輸入內(nèi)網(wǎng) IP(如192.168.1.100),看服務(wù)器是否發(fā)起請求(用 Wireshark 抓包看)。
- 改包指向內(nèi)部系統(tǒng):用 BurpSuite 修改請求中的 URL,指向公司內(nèi)網(wǎng)地址,看是否能訪問。
- 白名單限制 URL:只允許訪問白名單內(nèi)的域名(如xxx.com、api.xxx.com),禁止訪問內(nèi)網(wǎng) IP 和其他可疑域名。
- 服務(wù)器端嚴(yán)格校驗:接收 URL 后,先解析域名,檢查是否在允許的范圍內(nèi),別直接用用戶輸入的 URL 發(fā)起請求。
三、護(hù)網(wǎng)實戰(zhàn):新手怎么快速排查這十大漏洞?
- 第一板:工具掃描用 Nessus、AWVS 這類自動化工具,選 OWASP Top 10 掃描策略,跑一遍就能識別大部分漏洞(注意掃描速度別太快,防止把服務(wù)器搞崩)。
- 第二板:手動驗證每個高危漏洞至少手動測一次:比如 SQL 注入用' or 1=1 --,XSS 用<script>alert(1)</script>,越權(quán)訪問改 URL 里的用戶 ID,確保工具沒漏報。
- 第三板:查配置文件打開web.xml、application.properties等配置文件,看看有沒有默認(rèn)密碼(如user=admin&password=admin)、未授權(quán)訪問配置(如allow-url-pattern=/*)。
- 按危害程度排序,優(yōu)先修復(fù)高危漏洞
- 注入漏洞(A03):能直接偷數(shù)據(jù)、拿服務(wù)器權(quán)限,發(fā)現(xiàn)后必須當(dāng)天修復(fù),否則分分鐘被拖庫。
- 破碎的訪問控制(A01):越權(quán)訪問導(dǎo)致數(shù)據(jù)泄露,危害僅次于注入,特別是金融、醫(yī)療系統(tǒng),用戶數(shù)據(jù)泄露后果嚴(yán)重。
- 身份認(rèn)證失敗(A07):弱口令、會話劫持是黑客最愛的突破口,先把登錄口加固好,能擋住一半的攻擊。
- 安全配置錯誤(A05):Redis 未授權(quán)、Tomcat 弱口令這些漏洞,黑客拿來就用,必須優(yōu)先排查服務(wù)器的端口和敏感文件。
四、給新手的「防坑指南」:護(hù)網(wǎng)要懂攻防一體
- 所有用戶輸入的地方:輸入框、搜索框、上傳接口,這些地方最容易藏注入、XSS、SSRF 漏洞,測漏洞先盯著這些位置。
- 登錄口和后臺地址:70% 的攻擊從登錄口突破,弱口令、驗證碼繞過、會話劫持是必測項,后臺地址別用/admin這種默認(rèn)路徑(黑客都知道)。
- 舊版本組件:Log4j、Struts2、WebLogic 這些老組件,只要沒打補丁,網(wǎng)上隨便搜就能找到攻擊腳本,護(hù)網(wǎng)時先查這些組件的版本。
- 不信任任何用戶輸入:用戶輸入的內(nèi)容,不管看起來多正常,都可能是惡意的,必須過濾或轉(zhuǎn)義(比如把<轉(zhuǎn)成<)。
- 最小權(quán)限原則:普通用戶別給管理員權(quán)限,數(shù)據(jù)庫用戶用專用賬號(別用root),能讀數(shù)據(jù)就別給寫權(quán)限,減少攻擊面。
- 漏洞必須閉環(huán)管理:發(fā)現(xiàn)漏洞后,記錄漏洞詳情→通知開發(fā)修復(fù)→復(fù)測是否修復(fù)→更新日志,別以為報了漏洞就完事,必須跟進(jìn)到徹底修復(fù)。
五、總結(jié):十大漏洞是護(hù)網(wǎng)的「基礎(chǔ)關(guān)卡」OWASP 十大漏洞,說白了就是 Web 安全中最常見的十個「基礎(chǔ)關(guān)卡」:
- 對黑客來說:這是他們的「常用工具包」,每個漏洞都有成熟的攻擊腳本和利用方法。
- 對咱們來說:這是護(hù)網(wǎng)的「必守關(guān)卡」,把每個漏洞的原理、檢測方法、防御措施吃透,就能構(gòu)建起基礎(chǔ)的安全防護(hù)體系。
剛?cè)胄杏洸蛔]關(guān)系,先抓住前三高漏洞:注入、訪問控制、身份認(rèn)證,這三個占了實戰(zhàn)攻擊的 60% 以上。平時多在 DVWA、BWAPP 這些靶機上練習(xí),把每個漏洞的攻擊和防御都實操一遍,慢慢就能形成條件反射 —— 看到輸入框就想測注入,看到登錄口就想測弱口令。最后送大家一句話:護(hù)網(wǎng)沒有捷徑,扎實的基礎(chǔ)比任何工具都重要。把十大漏洞研究透,再復(fù)雜的攻擊也只是這些漏洞的變種而已。加油練,下一個能在護(hù)網(wǎng)行動中拿滿分的,就是堅持把基礎(chǔ)打牢的你!
閱讀原文:https://mp.weixin.qq.com/s/kAIRIt8T72zEpKO678tsiw
該文章在 2025/4/19 10:04:14 編輯過