如何防范SpringBoot 相關(guān)漏洞?

Spring Boot可能是習(xí)慣于用Java的小伙伴們用的最多的一種應(yīng)用框架,但是各位程序猿小伙伴知不知道Spring Boot有哪些平時不容易注意到的漏洞需要避免呢?
小編今天就給大家介紹一個GitHub上關(guān)于Spring Boot漏洞大集合的項目,不過要注意的是,這個項目的初衷可是讓大家研究和測試這些漏洞,以防自己的程序留下不安全的后門,可不要故意使用這些漏洞造成他人的損害喲~
小編先帶大家看下整個項目的目錄:
- Spring Boot Vulnerability Exploit Check List
- 零:路由和版本
- 0x01:路由知識
- 0x02:版本知識
- 組件版本的相互依賴關(guān)系:
- Spring Cloud 與 Spring Boot 版本之間的依賴關(guān)系:
- Spring Cloud 小版本號的后綴及含義:
- 一:信息泄露
- 0x01:路由地址及接口調(diào)用詳情泄漏
- 0x02:配置不當而暴露的路由
- 0x03:獲取被星號脫敏的密碼的明文 (方法一)
- 利用條件:
- 利用方法:
- 步驟一: 找到想要獲取的屬性名
- 步驟二:jolokia 調(diào)用相關(guān) Mbean 獲取明文
- 0x04:獲取被星號脫敏的密碼的明文 (方法二)
- 利用條件:
- 利用方法:
- 步驟一: 找到想要獲取的屬性名
- 步驟二: 使用 nc 監(jiān)聽 HTTP 請求
- 步驟三: 設(shè)置 eureka.client.serviceUrl.defaultZone 屬性
- 步驟四: 刷新配置
- 步驟五: 解碼屬性值
- 0x05:獲取被星號脫敏的密碼的明文 (方法三)
- 利用條件:
- 利用方法:
- 步驟一: 找到想要獲取的屬性名
- 步驟二: 使用 nc 監(jiān)聽 HTTP 請求
- 步驟三: 觸發(fā)對外 http 請求
- 步驟四: 刷新配置
- 0x06:獲取被星號脫敏的密碼的明文 (方法四)
- 利用條件:
- 利用方法:
- 步驟一: 找到想要獲取的屬性名
- 步驟二: 下載 jvm heap 信息
- 步驟三: 使用 MAT 獲得 jvm heap 中的密碼明文
- 二:遠程代碼執(zhí)行
- 0x01:whitelabel error page SpEL RCE
- 利用條件:
- 利用方法:
- 步驟一:找到一個正常傳參處
- 步驟二:執(zhí)行 SpEL 表達式
- 漏洞原理:
- 漏洞分析:
- 漏洞環(huán)境:
- 0x02:spring cloud SnakeYAML RCE
- 利用條件:
- 利用方法:
- 步驟一: 托管 yml 和 jar 文件
- 步驟二: 設(shè)置 spring.cloud.bootstrap.location 屬性
- 步驟三: 刷新配置
- 漏洞原理:
- 漏洞分析:
- 漏洞環(huán)境:
- 0x03:eureka xstream deserialization RCE
- 利用條件:
- 利用方法:
- 步驟一:架設(shè)響應(yīng)惡意 XStream payload 的網(wǎng)站
- 步驟二:監(jiān)聽反彈 shell 的端口
- 步驟三:設(shè)置 eureka.client.serviceUrl.defaultZone 屬性
- 步驟四:刷新配置
- 漏洞原理:
- 漏洞分析:
- 漏洞環(huán)境:
- 0x04:jolokia logback JNDI RCE
- 利用條件:
- 利用方法:
- 步驟一:查看已存在的 MBeans
- 步驟二:托管 xml 文件
- 步驟三:準備要執(zhí)行的 Java 代碼
- 步驟四:架設(shè)惡意 ldap 服務(wù)
- 步驟五:監(jiān)聽反彈 shell 的端口
- 步驟六:從外部 URL 地址加載日志配置文件
- 漏洞原理:
- 漏洞分析:
- 漏洞環(huán)境:
- 0x05:jolokia Realm JNDI RCE
- 利用條件:
- 利用方法:
- 步驟一:查看已存在的 MBeans
- 步驟二:準備要執(zhí)行的 Java 代碼
- 步驟三:托管 class 文件
- 步驟四:架設(shè)惡意 rmi 服務(wù)
- 步驟五:監(jiān)聽反彈 shell 的端口
- 步驟六:發(fā)送惡意 payload
- 漏洞原理:
- 漏洞分析:
- 漏洞環(huán)境:
- 0x06:restart h2 database query RCE
- 利用條件:
- 利用方法:
- 步驟一:設(shè)置 spring.datasource.hikari.connection-test-query 屬性
- 步驟二:重啟應(yīng)用
- 漏洞原理:
- 漏洞分析:
- 漏洞環(huán)境:
- 0x07:h2 database console JNDI RCE
- 利用條件:
- 利用方法:
- 步驟一:訪問路由獲得 jsessionid
- 步驟二:準備要執(zhí)行的 Java 代碼
- 步驟三:托管 class 文件
- 步驟四:架設(shè)惡意 ldap 服務(wù)
- 步驟五:監(jiān)聽反彈 shell 的端口
- 步驟六:發(fā)包觸發(fā) JNDI 注入
- 漏洞分析:
- 漏洞環(huán)境:
- 0x08:mysql jdbc deserialization RCE
- 利用條件:
- 利用方法:
- 步驟一:查看環(huán)境依賴
- 步驟二:架設(shè)惡意 rogue mysql server
- 步驟三:設(shè)置 spring.datasource.url 屬性
- 步驟四:刷新配置
- 步驟五:觸發(fā)數(shù)據(jù)庫查詢
- 步驟六:恢復(fù)正常 jdbc url
- 漏洞原理:
- 漏洞分析:
- 漏洞環(huán)境:
- 0x09:restart logging.config logback JNDI RCE
- 利用條件:
- 利用方法:
- 步驟一:托管 xml 文件
- 步驟二:托管惡意 ldap 服務(wù)及代碼
- 步驟三:設(shè)置 logging.config 屬性
- 步驟四:重啟應(yīng)用
- 漏洞原理:
- 漏洞分析:
- 漏洞環(huán)境:
- 0x0A:restart logging.config groovy RCE
- 利用條件:
- 利用方法:
- 步驟一:托管 groovy 文件
- 步驟二:設(shè)置 logging.config 屬性
- 步驟三:重啟應(yīng)用
- 漏洞原理:
- 漏洞環(huán)境:
- 0x0B:restart spring.main.sources groovy RCE
- 利用條件:
- 利用方法:
- 步驟一:托管 groovy 文件
- 步驟二:設(shè)置 spring.main.sources 屬性
- 步驟三:重啟應(yīng)用
- 漏洞原理:
- 漏洞環(huán)境:
- 0x0C:restart spring.datasource.data h2 database RCE
- 利用條件:
- 利用方法:
- 步驟一:托管 sql 文件
- 步驟二:設(shè)置 spring.datasource.data 屬性
- 步驟三:重啟應(yīng)用
- 漏洞原理:
- 漏洞環(huán)境:
以信息泄露為例,對于0x01:路由地址及接口調(diào)用詳情泄漏,項目描述到:
開發(fā)人員沒有意識到地址泄漏會導(dǎo)致安全隱患或者開發(fā)環(huán)境切換為線上生產(chǎn)環(huán)境時,相關(guān)人員沒有更改配置文件,忘記切換環(huán)境配置等
可以直接訪問以下兩個 swagger 相關(guān)路由,驗證漏洞是否存在:
/v2/api-docs
/swagger-ui.html
其他一些可能會遇到的 swagger、swagger codegen、swagger-dubbo 等相關(guān)接口路由:
/swagger
/api-docs
/api.html
/swagger-ui
/swagger/codes
/api/index.html
/api/v2/api-docs
/v2/swagger.json
/swagger-ui/html
/distv2/index.html
/swagger/index.html
/sw/swagger-ui.html
/api/swagger-ui.html
/static/swagger.json
/user/swagger-ui.html
/swagger-ui/index.html
/swagger-dubbo/api-docs
/template/swagger-ui.html
/swagger/static/index.html
/dubbo-provider/distv2/index.html
/spring-security-rest/api/swagger-ui.html
/spring-security-oauth-resource/swagger-ui.html
除此之外,下面的 spring boot actuator 相關(guān)路由有時也會包含(或推測出)一些接口地址信息,但是無法獲得參數(shù)相關(guān)信息:
/mappings
/metrics
/beans
/configprops
/actuator/metrics
/actuator/mappings
/actuator/beans
/actuator/configprops
一般來講,暴露出 spring boot 應(yīng)用的相關(guān)接口和傳參信息并不能算是漏洞,但是以 "默認安全" 來講,不暴露出這些信息更加安全。
對于攻擊者來講,一般會仔細審計暴露出的接口以增加對業(yè)務(wù)系統(tǒng)的了解,并會同時檢查應(yīng)用系統(tǒng)是否存在未授權(quán)訪問、越權(quán)等其他業(yè)務(wù)類型漏洞。
是不是淺顯易懂,一下子就講明白了整個漏洞的原理及校驗方式?看完整個項目,一定能讓大家學(xué)會如何利用方法和技巧,做到黑盒安全評估!想學(xué)習(xí)的小伙伴,趕緊跟著小編一起上車!
點擊下方卡片,關(guān)注公眾號“TJ君”
回復(fù)“漏洞”,獲取項目地址
