浅谈SPF配置不当导致的任意邮件伪造漏洞
1.1前提
最開(kāi)始從其他師傅那里見(jiàn)到這個(gè)漏洞,參照一些師傅的博客學(xué)習(xí)了一下SPF記錄的相關(guān)安全問(wèn)題,今天來(lái)聊聊吧,首先要介紹一個(gè)協(xié)議和兩個(gè)記錄。
SMTP協(xié)議是簡(jiǎn)單的郵件傳輸協(xié)議,目前郵件還是使用這個(gè)協(xié)議通信,但是它本身并沒(méi)有很好的安全措施。SMTP協(xié)議本身沒(méi)有機(jī)制鑒別寄件人的真正身份,電子郵件的“寄件者”一欄可以填上任何名字,于是偽冒他人身份來(lái)網(wǎng)絡(luò)釣魚(yú)或寄出垃圾郵件便相當(dāng)容易,而真正來(lái)源卻不易追查。
MX記錄用于指定負(fù)責(zé)處理發(fā)往收件人域名的郵件服務(wù)器。MX記錄允許設(shè)置一個(gè)優(yōu)先級(jí),當(dāng)多個(gè)郵件服務(wù)器可用時(shí),會(huì)根據(jù)該值決定投遞郵件的服務(wù)器(值越小優(yōu)先級(jí)越高)。SMTP會(huì)根據(jù)MX記錄的值來(lái)決定郵件的路由過(guò)程。
SPF記錄的全稱為Sender Policy Framework,中文譯作“發(fā)件人策略框架”,它是一套電子郵件認(rèn)證機(jī)制,可以確認(rèn)電子郵件確實(shí)是由網(wǎng)域授權(quán)的郵件服務(wù)器寄出,防止有人偽冒身份網(wǎng)絡(luò)釣魚(yú)或寄出垃圾電郵。SPF允許管理員設(shè)定一個(gè)DNS TXT記錄或SPF記錄設(shè)定發(fā)送郵件服務(wù)器的IP范圍,如有任何郵件并非從上述指明授權(quán)的IP地址寄出,則很可能該郵件并非確實(shí)由真正的寄件者寄出。
這里做一個(gè)小總結(jié):配置SPF記錄的目的就是防止隨意偽造發(fā)件人
1.2語(yǔ)法
查看一個(gè)域名的SPF記錄命令:
nslookup -type=txt example.com //windows
dig -t txt example.com //linux
SPF記錄會(huì)結(jié)合“匹配機(jī)制”和“限定詞”使用,它其實(shí)就是一條有特殊語(yǔ)法的TXT記錄
匹配機(jī)制主要用于定義和指定可由該域名發(fā)送郵件的主機(jī),其定義方式包括:
all 匹配任何主機(jī),它寫在SPF記錄最后以匹配在其前面所列出的主機(jī)
ip4 匹配 IPv4 地址或網(wǎng)絡(luò)范圍
ip6 匹配 IPv6 地址或網(wǎng)絡(luò)范圍
a 匹配主機(jī)名或域名
mx 匹配域名的MX記錄,當(dāng)出站與入站郵件為同一服務(wù)器時(shí)通常采用此種機(jī)制
ptr 通過(guò)DNS反向記錄來(lái)匹配發(fā)件人IP和域名,由于會(huì)增加DNS負(fù)載,一般不采用此種機(jī)制
exists 只檢查域是否在DNS中存在
include 將發(fā)件人IP和SPF記錄指向另一個(gè)域,這種匹配機(jī)制通常用于云服務(wù),如 Exchange Online Protection
匹配機(jī)制會(huì)結(jié)合一些限定詞來(lái)使用,以告訴服務(wù)器找到一條匹配記錄時(shí)該怎么辦。常見(jiàn)的限定詞有:
+ 放行,如果沒(méi)有明確指定限定詞,則為默認(rèn)值
- 硬拒絕,直接拒絕來(lái)自未經(jīng)授權(quán)主機(jī)的郵件
~ 軟拒絕,郵件可被接受,也可被標(biāo)記為垃圾郵件
? 中性,不考慮郵件是否被接受
一些實(shí)例(v=spf1 指采用SPF1版本,現(xiàn)在它的最新版本就是第 1 版):
"v=spf1 -all" (拒絕所有,表示這個(gè)域名不會(huì)發(fā)出郵件) "v=spf1 +all" (接受所有) "v=spf1 ip4:192.168.0.1/16 -all"(只允許 192.168.0.1/16 范圍內(nèi)的IP發(fā)送郵件) "v=spf1 mx -all"(允許當(dāng)前域名的 mx 記錄對(duì)應(yīng)的IP地址發(fā)送郵件) "v=spf1 mx mx:test.example.com -all"(允許當(dāng)前域名和 test.example.com 的 mx 記錄對(duì)應(yīng)的IP地址發(fā)送郵件) "v=spf1 a mx ip4:173.194.72.103 -all"(允許當(dāng)前域名的 a 記錄和 mx 記錄和一個(gè)給定的IP地址發(fā)送郵件) "v=spf1 include:example.com -all"(采用和 example.com 一樣的SPF記錄)
1.3繞過(guò)
SPF解析不當(dāng)
語(yǔ)法錯(cuò)誤將導(dǎo)致SPF記錄完全失效,https://www.kitterman.com/spf/validate.html網(wǎng)站輸入域名和SPF記錄,可以檢查SPF記錄是否正確(SPF記錄本質(zhì)上是一個(gè)DNS記錄,所以并不是修改之后立即生效的,通常需要幾個(gè)小時(shí)的時(shí)間)
允許IP段過(guò)大,只要攻擊者拿下一臺(tái)網(wǎng)段內(nèi)的機(jī)器即可繞過(guò)
~all 軟拒絕,會(huì)接受來(lái)信,但可能被標(biāo)記為垃圾郵件(outlook 郵箱可以接收郵件,qq 郵箱不接收,163 郵箱標(biāo)記為垃圾郵件)SPF記錄設(shè)置硬拒絕,就會(huì)有大量的郵件被丟棄或者隔離,影響辦公效率,為了減少業(yè)務(wù)影響,有些管理員采用軟拒絕的策略,但也會(huì)在一定程度上造成安全風(fēng)險(xiǎn)
SPF配置不當(dāng)
域名增加了SPF記錄,但是郵件服務(wù)器不支持SPF檢查或郵件網(wǎng)關(guān)未開(kāi)啟SPF檢測(cè),無(wú)法驗(yàn)證郵件來(lái)源。這種情況下,我們聲明了自己是誰(shuí),但卻無(wú)法驗(yàn)證對(duì)方是誰(shuí),SPF檢測(cè)無(wú)效,可偽造任意用戶發(fā)送到你的域名郵箱里
SPF解析在公網(wǎng)DNS,郵件服務(wù)器配置內(nèi)部DNS,內(nèi)部DNS無(wú)法進(jìn)行SPF解析,從而導(dǎo)致繞過(guò),可從公網(wǎng)偽造任意用戶發(fā)送郵件
攻擊者在公司內(nèi)網(wǎng),內(nèi)網(wǎng)SMTP服務(wù)器開(kāi)啟匿名郵件發(fā)送或者在信任服務(wù)器IP段,就可以使用任意用戶發(fā)送郵件
高權(quán)限用戶繞過(guò)
Exchange 郵箱系統(tǒng),擁有 Domain admin 權(quán)限的域用戶,可以通過(guò) outlook 直接指定發(fā)件人,偽造任意發(fā)件人發(fā)送郵件并且郵件頭不會(huì)顯示真實(shí)IP,但是這條沒(méi)有什么實(shí)際意義,已經(jīng)擁有 Domain admin 權(quán)限就沒(méi)必要進(jìn)行郵件偽造了
郵件客戶端內(nèi)容解析差異
From 字段特殊字符填充繞過(guò)
1.4總結(jié)
上一小節(jié)只講了前三點(diǎn)進(jìn)行SPF繞過(guò)的原理,因?yàn)閷戇@篇隨筆的初衷是如何判斷郵件服務(wù)器有無(wú)配置SPF,如果沒(méi)有或配置不當(dāng)?shù)脑捒梢灾苯邮褂?swaks 偽造郵件發(fā)送,思路偏向于防守和挖洞,而后兩點(diǎn)則是運(yùn)用一些技術(shù)實(shí)踐任意郵件偽造漏洞,思路偏向于紅隊(duì),接下來(lái)會(huì)再出一篇實(shí)操任意郵件偽造的思路。
參考文章:
http://www.renfei.org/blog/introduction-to-spf.html
https://zh.wikipedia.org/wiki/%E5%8F%91%E4%BB%B6%E4%BA%BA%E7%AD%96%E7%95%A5%E6%A1%86%E6%9E%B6#cite_note-3
https://www.cnblogs.com/xiaozi/p/12906040.html
https://blog.csdn.net/qq_36119192/article/details/106452010
https://anchorety.github.io/2020/10/18/%E9%82%AE%E4%BB%B6%E5%AE%89%E5%85%A8%E4%B9%8B%E5%8F%91%E4%BB%B6%E4%BA%BA%E4%BC%AA%E9%80%A0/
總結(jié)
以上是生活随笔為你收集整理的浅谈SPF配置不当导致的任意邮件伪造漏洞的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【IT之家评测室】七彩虹 iGame G
- 下一篇: 猫眼电影票过期取票说明 电影票时间过了怎