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