hvv藍(lán)初面試常見漏洞問(wèn)題(上)
6.ssrf
服務(wù)端偽造請(qǐng)求
原理
服務(wù)端提供了向其他服務(wù)器應(yīng)用獲取數(shù)據(jù)的功能,而沒(méi)有對(duì)目標(biāo)地址做任何過(guò)濾和限制。攻擊者進(jìn)而利用其對(duì)內(nèi)部資源進(jìn)行攻擊。(通俗來(lái)說(shuō):就是攻擊者可以偽造服務(wù)端發(fā)起請(qǐng)求,從而獲取客戶端所不能獲取的數(shù)據(jù))
常用協(xié)議
php:
- http:超文本傳輸協(xié)議
- https:安全超文本傳輸協(xié)議
- file:本地文件系統(tǒng)協(xié)議,用于在本地文件系統(tǒng)中訪問(wèn)文件
- gopher:用于在網(wǎng)絡(luò)上傳輸文本和相關(guān)信息資源
- dict:字典處查詢協(xié)議,探測(cè)內(nèi)網(wǎng)主機(jī),探測(cè)端口的開放情況和指紋信息
- ldap:用于在網(wǎng)絡(luò)上訪問(wèn)和管理目錄服務(wù)。常用于企業(yè)和組織中的用戶身份驗(yàn)證和授權(quán)管理等
- ftp:文件傳輸協(xié)議,用于網(wǎng)絡(luò)上傳文件
- ssh:安全shell協(xié)議,用于遠(yuǎn)程服務(wù)器管理
- telnet:遠(yuǎn)程控制協(xié)議,用于遠(yuǎn)程訪問(wèn)和控制計(jì)算機(jī)和網(wǎng)絡(luò)設(shè)備
java:
- http、https、file、ftp
- jar:使用 Jar 包協(xié)議訪問(wèn) Java 應(yīng)用程序的 Jar 文件資源
- rmi:// - 使用 Java 遠(yuǎn)程方法調(diào)用協(xié)議進(jìn)行遠(yuǎn)程方法調(diào)用
- mailto:用于在郵件客戶端和郵件服務(wù)器之間傳遞電子郵件的標(biāo)準(zhǔn)協(xié)議。在 SSRF 攻擊中,攻擊者可以使用 mailto 協(xié)議向指定的電子郵件地址發(fā)送惡意內(nèi)容
存在在那些功能中:
- 文章分享
- 圖片下載或加載
- 從遠(yuǎn)處服務(wù)請(qǐng)求資源
利用
- 端口掃描(可掃描內(nèi)網(wǎng),本地等設(shè)備,可通過(guò)端口banner信息進(jìn)行判斷)
- 對(duì)內(nèi)網(wǎng),本地運(yùn)行的程序進(jìn)行溢出攻擊等
- 獲取本地文件(file協(xié)議)
- 對(duì)內(nèi)網(wǎng),外網(wǎng)的web應(yīng)用進(jìn)行攻擊(get提交)
- 內(nèi)網(wǎng)應(yīng)用指紋識(shí)別(通過(guò)判斷特定文件來(lái)識(shí)別web應(yīng)用使用的框架,平臺(tái),模塊及CMS等)
繞過(guò)
- 使用ip地址代替url
- 利用dns重綁定:欺騙dns解析器,將特定域名解析為不同的ip地址
- 利用url編碼和轉(zhuǎn)義
- 利用協(xié)議的特殊性,例如file協(xié)議直接讀取本地文件
防護(hù)
- 對(duì)用戶輸入的url參數(shù)進(jìn)行白名單過(guò)濾和限制
- 對(duì)url中的協(xié)議和域名進(jìn)行驗(yàn)證,禁用不必要的字符和協(xié)議
- 對(duì)外部請(qǐng)求進(jìn)行限制過(guò)濾,限制遠(yuǎn)程服務(wù)器的端口和服務(wù)
- 限制應(yīng)用程序內(nèi)部的訪問(wèn)權(quán)限和資源訪問(wèn)范圍
Redis未授權(quán)訪問(wèn)漏洞
原理
- 配置不當(dāng)將redis服務(wù)器ip和端口暴露在公網(wǎng)
- 未配置redis的訪問(wèn)口令
防御
- 禁用root權(quán)限啟動(dòng)Redis服務(wù)
- 對(duì)Redis訪問(wèn)啟動(dòng)密碼認(rèn)證
- 添加IP訪問(wèn)限制,更改默認(rèn)端口6379
ssrf漏洞利用
weblogic的10.0.2 – 10.3.6版本存在ssrf漏洞,可以進(jìn)而攻擊Redis進(jìn)行未授權(quán)訪問(wèn)
與csrf區(qū)別
SSRF攻擊是一種通過(guò)欺騙服務(wù)器來(lái)發(fā)送惡意請(qǐng)求的攻擊技術(shù),攻擊者利用服務(wù)器上的漏洞進(jìn)行攻擊,并使服務(wù)器對(duì)指定的目標(biāo)URL發(fā)起網(wǎng)絡(luò)請(qǐng)求,從而達(dá)到惡意操作的目的。SSRF攻擊主要針對(duì)服務(wù)器端應(yīng)用程序。
而CSRF攻擊則是一種利用用戶身份驗(yàn)證信息來(lái)執(zhí)行未經(jīng)授權(quán)的操作的攻擊,攻擊者通過(guò)欺騙用戶訪問(wèn)包含惡意代碼的網(wǎng)站,來(lái)達(dá)到獲取用戶敏感信息、執(zhí)行交易等攻擊目的。CSRF攻擊主要針對(duì)客戶端瀏覽器。
另外,防御SSRF攻擊和CSRF攻擊的方法也有所不同。防御SSRF攻擊需要對(duì)所有輸入進(jìn)行嚴(yán)格的驗(yàn)證和過(guò)濾,并使用白名單技術(shù)限制應(yīng)用程序只向可信的服務(wù)器發(fā)送請(qǐng)求。而防御CSRF攻擊需要使用隨機(jī)的令牌(如CSRF Token)來(lái)驗(yàn)證每個(gè)請(qǐng)求的來(lái)源是否合法,并防止攻擊者能夠偽造請(qǐng)求或欺騙用戶進(jìn)行非法操作。
7.XXE
XML外部實(shí)體注入攻擊
原理:
外部實(shí)體注入攻擊,由于程序在解析輸入的XML數(shù)據(jù)時(shí),解析了攻擊者偽造的外部實(shí)體而產(chǎn)生的攻擊
XML語(yǔ)法規(guī)則
- 所有XML標(biāo)簽必須有關(guān)閉標(biāo)簽
- XML標(biāo)簽對(duì)大小寫敏感
- XML屬性值必須加引號(hào)
利用方式
- 任意文件讀取
a. 有回顯:直接在頁(yè)面看到執(zhí)行結(jié)果或現(xiàn)象
b. 無(wú)回顯:使用外帶數(shù)據(jù)通道提取數(shù)據(jù) - 內(nèi)網(wǎng)探測(cè)
- RCE
修復(fù):
- 使用開發(fā)語(yǔ)言提供的禁用外部實(shí)體的方法
- 過(guò)濾用戶提交的XML數(shù)據(jù)
8.邏輯漏洞
原理:
攻擊者利用應(yīng)用程序設(shè)計(jì)上的邏輯缺陷或不一致性,繞過(guò)應(yīng)用程序的訪問(wèn)控制、身份認(rèn)證、授權(quán)等保護(hù)機(jī)制,從而實(shí)現(xiàn)非授權(quán)的操作。邏輯漏洞一般不涉及任何技術(shù)上的漏洞,而是利用應(yīng)用程序設(shè)計(jì)上的漏洞
常見邏輯漏洞
- 短信轟炸漏洞
- 越權(quán)漏洞
a. 垂直越權(quán):普通用戶可以訪問(wèn)到高等級(jí)用戶下的資源
b. 水平越權(quán):可以訪問(wèn)到同等用戶下的資源 - 支付漏洞
- 注冊(cè)時(shí)繞過(guò)驗(yàn)證
防護(hù)
- 增強(qiáng)用戶輸入和校驗(yàn):例如在涉及到金額時(shí)要對(duì)金額數(shù)據(jù)進(jìn)行合理性校驗(yàn),限制最大最小金額等
- 實(shí)施權(quán)限控制,并對(duì)用戶操作進(jìn)行適當(dāng)限制
- 對(duì)代碼進(jìn)行審計(jì)
- 實(shí)現(xiàn)日志記錄
9.RCE
遠(yuǎn)程代碼執(zhí)行漏洞
原理
應(yīng)用程序?qū)τ脩舻妮斎霙](méi)有進(jìn)行充分的驗(yàn)證和過(guò)濾,導(dǎo)致攻擊者可以向應(yīng)用程序中注入惡意代碼,從而執(zhí)行任意操作
修復(fù)
- 通用的修復(fù)方案,升級(jí)插件/框架/服務(wù)最新版。
- 如若必須使用危險(xiǎn)函數(shù),那么針對(duì)危險(xiǎn)函數(shù)進(jìn)行過(guò)濾。
常見RCE漏洞
- Windows遠(yuǎn)程桌面服務(wù)漏洞(cve-2019-0708):通過(guò)遠(yuǎn)程桌面端口3389,RDP遠(yuǎn)程桌面協(xié)議進(jìn)行攻擊
- Linux破殼漏洞(CVE-2014-6271):攻擊者可以利用Shellshock漏洞向受影響的服務(wù)器發(fā)送特定構(gòu)造的請(qǐng)求,通過(guò)在HTTP頭部或環(huán)境變量中注入惡意代碼,從而在服務(wù)器上執(zhí)行任意命令。這可能導(dǎo)致攻擊者完全控制服務(wù)器,并在系統(tǒng)上執(zhí)行任何操作,如竊取敏感信息、植入后門等。
常用函數(shù)
- system()函數(shù):允許調(diào)用操作系統(tǒng)命令,例如system("ls")將列出當(dāng)前目錄下的文件
- exec(): 執(zhí)行一個(gè)系統(tǒng)命令或程序,與system()函數(shù)類似。
- popen(): 打開一個(gè)進(jìn)程,并通過(guò)管道執(zhí)行一個(gè)命令,然后讀取輸出。
- eval(): 解析并執(zhí)行字符串中的 PHP 代碼。
防范
- 輸入過(guò)濾:在Web應(yīng)用程序中,對(duì)用戶輸入進(jìn)行過(guò)濾是防御RCE的第一道防線。應(yīng)該使用白名單過(guò)濾用戶輸入,只允許特定的字符或命令。例如,禁止輸入命令分隔符,或?qū)⑺休斎朕D(zhuǎn)義為字符串形式
- 輸入驗(yàn)證:在Web應(yīng)用程序中,驗(yàn)證用戶輸入的類型和格式是防御RCE的另一個(gè)重要步驟。應(yīng)該驗(yàn)證用戶輸入的數(shù)據(jù)類型和長(zhǎng)度,并在輸入值不符合要求時(shí)拒絕提交。
- 權(quán)限控制:在Web應(yīng)用程序中,應(yīng)該實(shí)現(xiàn)最小權(quán)限原則。即每個(gè)用戶只能訪問(wèn)他需要訪問(wèn)的資源。如果用戶沒(méi)有訪問(wèn)某些敏感資源的權(quán)限,則應(yīng)該拒絕其訪問(wèn)。
- 安全編碼實(shí)踐:在Web應(yīng)用程序的開發(fā)過(guò)程中,應(yīng)該使用安全編碼實(shí)踐,如避免使用eval()函數(shù)、限制文件的讀寫權(quán)限、使用可信的庫(kù)等等。
- 安全配置:在Web服務(wù)器和操作系統(tǒng)級(jí)別上,應(yīng)該實(shí)施安全配置,如禁止執(zhí)行特定命令、關(guān)閉不必要的服務(wù)等等。
- 更新補(bǔ)丁:在Web應(yīng)用程序、Web服務(wù)器和操作系統(tǒng)上安裝及時(shí)更新補(bǔ)丁,以修補(bǔ)已知的安全漏洞,防止黑客利用已知漏洞進(jìn)行攻擊。
10.反序列化
原理:
反序列化是將序列化的數(shù)據(jù)流還原為對(duì)象的過(guò)程,序列化是將對(duì)象轉(zhuǎn)換為數(shù)據(jù)流以便于存儲(chǔ)或傳輸。反序列化常見于網(wǎng)絡(luò)傳輸或數(shù)據(jù)存儲(chǔ)中文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-464140.html
常用函數(shù)
- php:serialize()序列化和unserialize()反序列化
- java:readObject()反序列化和writeObject()序列化
魔術(shù)方法
- __wakeup(): 當(dāng)一個(gè)對(duì)象被反序列化時(shí),如果存在該方法,該方法會(huì)被調(diào)用。可以在這里進(jìn)行一些對(duì)象的重建或重置操作
- __toString(): 當(dāng)一個(gè)對(duì)象被當(dāng)作字符串使用時(shí)自動(dòng)調(diào)用的方法。
- __sleep(): 當(dāng)一個(gè)對(duì)象需要被序列化時(shí),該方法會(huì)被調(diào)用??梢栽谶@里定義哪些屬性需要被序列化。
- __isset(): 在對(duì)一個(gè)對(duì)象屬性進(jìn)行 isset() 或 empty() 操作時(shí)自動(dòng)調(diào)用的方法。在反序列化時(shí),該方法可能會(huì)被調(diào)用,可以在這里進(jìn)行一些自定義的屬性判斷操作。
- __construct(): 在實(shí)例化對(duì)象時(shí)自動(dòng)調(diào)用的方法。反序列化時(shí),該方法會(huì)被調(diào)用,可以在這里進(jìn)行一些初始化操作。
防御
防止序列化非信任數(shù)據(jù),只接受信任源的序列化
對(duì)反序列化數(shù)據(jù)進(jìn)行校驗(yàn)
避免使用不受信任的序列化庫(kù)
限制反序列化操作權(quán)限文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-464140.html
到了這里,關(guān)于hvv藍(lán)初面試常見漏洞問(wèn)題(下)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!