記一次安全漏洞處理過程CVE-2018-3252

問題描述:

部署在用戶的服務器,掃描系統服務的時候,發現服務器上有weblogic的CVE-2018-3252的漏洞。通過在公司反覆驗證和查找大量資料最後確認是端口的問題。weblogic默認是7001的端口,項目的端口默認是7001。而後掃描軟件通常會有固定的驗證方式確認是否存在該漏洞,好比3252的POC(觀點證實),就是向7001發起一個固定地址的請求若是成功了就說明有漏洞。html

解決過程:

由於這個掃描程序是第三方提供的,並且掃描的報告中並無說明CVE-2018-3252是在服務器新項目中的多少行,因此排查問題的時候一開始都是再猜是哪裏的問題。 1.由於掃描報告並無什麼有用的信息,除了知道漏洞的編號是多少,因而先去查找資料看是什麼領域的漏洞,發現是weblogic的反序列化的漏洞,官方補丁連接
2.而後就想去官網上下載補丁去修復(實際上咱們項目根本就沒用到weblogic),oralce官網的補丁下載也是一個坑,必須有oracle的support identifier的帳號才能下載,那麼這個帳號要怎麼獲取呢?簡單明瞭的方法就是你要購買oralce的產品,付費纔有這個帳號(真的坑,用個開源的java,修復補丁還要收費的帳號才能下載補丁)。因而想了一招去萬能的淘寶上看看有沒有這種帳號能夠租,搜索到淘寶能夠有幫忙下載的補丁的服務,加了商家的微信問了一下,下載一次補丁要80RMB。
3.若是不是同事提醒我,可能我還真買了下載補丁的服務了。同事說我們根本就沒用weblogic的服務,爲啥會有weblogic的漏洞,這句話把我點醒了,因而就想是否是俺們項目中引用了weblogic的jar包之類致使的。找了一圈,實在是沒找到weblogic服務的包,有幾個帶有weblogic名字的方法和類,可是應該不會致使CVE-2018-3252這種發序列化的漏洞。
4.後來又想到一個方法,就是既然有着漏洞出現的話那麼咱們用一樣的服務器,代碼應該在測試服務器上也會掃描出漏洞,因此就去網上找了下掃描weblogic的工具,在github上找到了一個python的腳本。由於代碼是開源的因此看到了python腳本是怎麼檢測有沒有CVE-2018-3252的漏洞。 在這裏插入圖片描述java

這個POC(安防領域的專有名詞,用來掃描漏洞的特定腳本,查看返回結果是否符合預期,符合的話就是由漏洞),是給服務器的7001端口發送帶有帳密信息的請求,若是返回的是401或者500就說明是有漏洞的,這裏爲啥401和500是確認是有漏洞的多是由於401未驗證,說明這個請求的路是通的,只是沒有登陸;而500說明這個路徑的請求也是通的,只是可能參數錯誤或者內部處理異常。可是隻有檢測出401或者500,攻擊者就能夠用這個路徑反覆的嘗試去攻擊服務器。因此致使這個POC返回預期的結果是由於咱們項目設置的端口剛好就是7001,而攔截器裏面也設置了沒有登陸就會返回401,因此恰好二者條件都符合就被掃描出CVE-2018-3252的漏洞了,鬧了個烏龍。python

解決方式:

1.將後端項目中的config的application.yaml裏面的端口從7001改成7003,保存退出重啓後端。
2.將nginx中映射到後端服務器的配置中的7001改成7003,保存退出文件,重啓nginx。nginx

總結:

1.解決此次漏洞收穫了不少新的知識,好比安全領域的一些名詞POC,CVE等,和掃描漏洞的方式,還知道了oracle要修復補丁是要收費的等
2.發現原來掃描漏洞就是用一組特定的方式去試驗返回結果,若是是符合預期的結果就是有漏洞。因此網上的安全工具可能也是這樣去檢索漏洞,可是實際上未必有漏洞,由於可能被檢測的電腦就有各類奇奇怪怪的組合恰好讓檢測工具誤覺得是有漏洞。若是肯定沒有漏洞卻掃描出奇怪的漏洞要具體問題具體分析,去看掃描漏洞的POC是怎麼驗證的。git

參考資料:

1.安防領域名詞解釋
2.python3的weblogic漏洞檢測腳本
3.oracle的weblogic升級補丁
4.公共漏洞庫
5.國家信息安全庫
6.CVE-2018-3252的POCgithub

相關文章
相關標籤/搜索