激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 頻頻闖禍的 JNDI,到底是個什么垃圾玩意兒?

頻頻闖禍的 JNDI,到底是個什么垃圾玩意兒?

2021-12-13 23:11小姐姐味道小姐姐養的狗 Java教程

每次規模比較大的漏洞,JNDI好像都不會缺席。最近人盡皆知的Log4j2漏洞也和它有關,讓人 不由得懷疑,是不是作者開的后門。

每次規模比較大的漏洞,JNDI好像都不會缺席。最近人盡皆知的Log4j2漏洞也和它有關,讓人 不由得懷疑,是不是作者開的后門。

因為JNDI這個玩意,別說用過,很多人連聽都沒聽說過。這么冷門酸爽的東西,有什么理由把它放在一個日志框架里呢?恐怕只有作者想得通。

頻頻闖禍的 JNDI,到底是個什么垃圾玩意兒?

數據庫驅動

很多人接觸JNDI,是從數據庫的驅動開始的。當然,隨著SpringBoot單體發布模式的流行,現在用這種方式來獲取數據庫配置的古董公司,是越來越少了。

比如,我們可以在tomcat得server.xml里,配置一個叫做xjjdogDB的資源。

  1. <Resource name="jdbc/xjjdogDB" auth="Container" type="javax.sql.DataSource"
  2. maxTotal="100" maxIdle="30" maxWaitMillis="10000"
  3. username="xjjdog" password="123456" driverClassName="com.mysql.jdbc.Driver"
  4. url="jdbc:mysql://localhost:3306/xjjdog_db"/>

那么,我們只需要在SpringBoot中配置上JNDI這個名字,它就能加載正確的配置。前提是我們需要把SpringBoot服務打包成WAR包發布。像JBoss這樣的宣稱企業級服務器的軟件,就喜歡這么干。

  1. spring:
  2. datasource:
  3. jndi-name: jdbc/xjjdogDB

從這里,我們可以看出。JNDI到底是個神馬玩意呢?你可以認為它是一個配置中心,也可以認為它是一個命名服務。其根本功能,就是讓你可以通過一個簡短的字符串,就能獲取一系列的復雜配置和初始化后的功能。

這樣,我們就可以避免將這些配置直接寫在項目里。程序啟動起來,到底加載的什么東西,要看運行的環境配置的什么東西。

具體實現的話,不就是一個可以根據key獲取value的HashMap嘛。

危險由此而來

關鍵是這個value,它不是String,它是一個Object。要從字符串變身為一個正常的類,還要做到通用,那就不得不依靠反射。

頻頻闖禍的 JNDI,到底是個什么垃圾玩意兒?

這張圖是Oracle官方的一張關于JNDI的介紹。上面的都不是關鍵,關鍵的地方在于,JNDI通過SPI機制,可以和LDAP、RMI等各種技術,產生聯動。

任何為了追求方便而不遵守常規的便捷通道,都會產生問題。SPI是為數不多的打破Java類加載機制的技術,和Unsafe類一樣,強大但并不那么推薦使用。

頻頻闖禍的 JNDI,到底是個什么垃圾玩意兒?

如上圖,就是NamingManager類里面的方法getObjectFactoryFromReference。當它從本地加載相應類的時候,如果加載不到,它干了一件不該干但又不得不干的事情,那就是從網絡上的代碼里面構造相應的對象!

頻頻闖禍的 JNDI,到底是個什么垃圾玩意兒?

這下,在炫肌肉的同時,可完犢子了。如上圖,我們只需要在8000端口啟動一個nginx。或者直接使用python啟動一個小小的web服務器。

  1. python -m http.server 8000

能夠發起外網請求的服務器,將會乖乖的自動從我們指定的服務器上撈下非法的class文件進行加載。

制作這些攻擊性的playload也非常容易,有marshalsec這樣的工具,可以很方便的生成。

根據java的類加載機制,在static代碼塊里面,就可以干一些實際的代碼執行邏輯。我們只需要把編譯后的a.class放在該放的地方,JNDI這玩意就能夠加載它。

  1. public class a {
  2. static {
  3. try {
  4. String[] cmd = {"calc.exe"};
  5. java.lang.Runtime.getRuntime().exec(cmd).waitFor();
  6. } catch ( Exception e ) {
  7. e.printStackTrace();
  8. }
  9. }
  10. }

上面的代碼將會在你部署的服務器上啟動一個calc計算器。當然,它還可以干更多事情。

END

從上面可以看出,Java的反射很強大,但是也很危險。SPI功能繼承了這個特性,勇猛的暴露了它的弱點。我覺得功能很好啊,但它為什么要存在于日志框架呢?

這可能是因為卷吧。畢竟一個日志框架,也是要有元宇宙的夢想的!

原文地址:https://mp.weixin.qq.com/s?__biz=MzA4MTc4NTUxNQ==&mid=2650525085&idx=1&sn=38cdf800ec574d1f7990ec019b49f0a2&chksm=8780ca59b0f7434fd22831ef9be29e37976c5ba8a4b95bc3fafa3d75654dbb4596237dfeb6ce&mpshare=1&s

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
主站蜘蛛池模板: 欧美另类综合 | 成人一区二区三区四区 | 神秘电影91 | 污污网站入口 | 欧美成人小视频 | 美国av片在线观看 | 精品xxxx户外露出视频 | 欧美精品一区二区视频 | 日操操夜操操 | 亚洲成人福利在线观看 | 午夜生活理论片 | 欧美xxxxx视频 | 成人9禁啪啪无遮挡免费 | 一级做a爰片性色毛片2021 | av在线久草| 国产亚洲精久久久久久蜜臀 | 国产69精品99久久久久久宅男 | 国产亚洲网 | 欧美国产永久免费看片 | 热久久成人| 欧美一级高清片在线 | 色婷婷久久久亚洲一区二区三区 | 成人在线视频国产 | 99视频有精品视频高清 | 被玩坏了的女老师(高h np) | 国产美女爽到喷白浆的 | av电影网站在线 | 一级片观看 | 久久久婷婷 | 亚州综合一区 | 免费观看国产精品视频 | 看a级毛片 | 日韩字幕在线 | 韩国草草影院 | 日韩在线毛片 | 热99精品视频 | 久久最新网址 | 精品亚洲va在线va天堂资源站 | 有兽焉免费动画 | 热99re久久免费视精品频软件 | 国产刺激高潮av |