# Kali
## 目錄
1. [架設](#架設)
2. [nslookup](#nslookup)
3. [John the Ripper](#John_the_Ripper)
4. [Wireshark](#Wireshark)
5. [nmap](#nmap)
6. [ARP Spoofing](#ARP_Spoofing)
7. [Metasploit Framework](#Metasploit_Framework)
8. [Burp Suite](#Burp_Suite)
9. [ExploitDB](#ExploitDB)
10. [smtp](#smtp)
11. [OWASP(2021:A1) - Broken Access Control(無效的訪問控制)](#OWASP(2021:A1))
12. [參考文獻](#參考文獻)
## 架設
參考別人寫的這篇 https://ithelp.ithome.com.tw/articles/10298620
下方的實作也是參考這篇之後寫的(他的圖文並茂但我的只有字)
## nslookup
用來找到一個網站的 IP 位置
直接在 kali 的終端機當中輸入就可以使用
`nslookup <網站>`
這樣就會返回此網站的 IP 位置
## John_the_Ripper
一個破解密碼的工具,幾乎所有封包都能辨識,而且擁有過濾的功能,所以可以選擇針對特定 IP 或通訊協定進行分析
### 執行流程
先打開 kali 的終端機,然後依序執行以下步驟
* 前置作業 :
```
cd /usr/share/wordlists # 先進到這個目錄底下
ll # 可以檢查這個目錄下包含哪些東西(包含隱藏檔案,外加詳細資訊)(ls -al的縮寫)
sudo gunzip rockyou.txt.gz # 解壓縮這個檔案
ls # 查看目前目錄的文件
more rockyou.txt # 顯示更多這個檔案的內容
cd ~ # 返回家目錄
sudo adduser test1 # 增加一個使用者名叫 test1
# 密碼請設 rockyou.txt 包含的
# 之後就一直按 <enter> 直到問 y/n 的時候選 y
sudo adduser test2 # 再增加一個使用者名叫 test2(步驟跟上面一樣)
cat /etc/passwd # 查看使用者列表(確認是否有成功建立 test1, test2)
```
* 開始搞解密的東東 :
```
sudo -i # 進入root模式
cd /home/kali # 到/home/kali這個目錄底下
unshadow /etc/passwd /etc/shadow > mypasswd.txt # 使用 unshadow 取出使用者、密碼檔案
```
因為shadow檔存著使用者的密碼,所以必須進到 root 才能對其進行操作
前面我們使用過 `cat /etc/passwd` 查看過使用者了,但密碼被分開儲存到 `/etc/shadow` 之中
而 `/etc/passwd /etc/shadow > mypasswd.txt` 是代表將使用者列表和密碼合併,存到 mypasswd.txt 這個檔案中
* 執行 John the Ripper :
```
john --wordlist=/usr/share/wordlists/rockyou.txt --format="crypt" mypasswd.txt
```
`--wordlist=` 後面接設定要遍歷的密碼檔
`--format="<解什麼樣的加密法>"` Linux 是使用 crypt,而 windows 則是 LR
## Wireshark
一個即時捕獲網路封包的工具,可以用來封包解析,查看封包的詳細資訊,而且支援好幾百種的通訊協定,幾乎所有封包都能辨識,並且擁有過濾的功能,所以可以選擇針對特定 IP 或通訊協定進行分析
### 執行流程
* 前置作業
先進入 kali 並且點擊左上角的 kali icon,搜索 wireshark 並且打開
進入之後會詢問我們想捕獲的封包對象,我們選擇 `eth0` (乙太網路)
進到頁面我們可以看到上面有一排列表,這些代表的資訊分別是 :
* No. : 捕獲到的封包編號(順序)
* Time : 封包被捕獲到的時間
* Source : 封包的來源端 IP
* Destination : 封包的目的端 IP
* Protocol : 封包的通訊協定
* Length : 封包的長度
* Info : 封包的簡略內容
* 了解如何看裡面的內容
接著我們可以試試在終端機 `ping` 我們的靶機(OWB)的 ip 位置,這時就能發現 wireshark 開始捕獲到封包,並且通訊協定為ICMP,主要是用來確定封包是否及時到達目的地
然後我們可以打開瀏覽器,可以發現我們捕獲到許多封包以及不同的通訊協定
其中我們可以看到有通訊協定是 `[SYN]` , `[SYN, ACK]` , `[ACK]`,這是代表正在進行 TCP 三向交握
* 補充 : TCP 三向交握
用來看指定的 port 服務是否有啟動
- 如果有,則執行以下步驟:
1. Source(來源端) 指定一個 port 號,並傳送一個 `[SYN]` 給 Destination(目的端)
2. Destination(目的端)回傳 `[SYN、ACK]`
3. Source(來源端)再將 `[ACK]` 回傳給 Destination(目的端),表示連線確認
- 如果沒有
則步驟2的 Destination(目的端)會回傳 `[RST]`,表示放棄連線或重連
* 實際運用
回到瀏覽器在網址列的地方打上 owb 的 IP 位址就可以進入到 owaspbwa 的畫面,之後點擊「Damn Vulnerable Web Application,簡稱DVWA」,這是用 PHP/MySQL 為基礎的網頁,進行網頁檢測的練習和測試
因為這個 DVWA 的登入沒有使用加密,所以能直接在通訊封包裡看到輸入的帳密明文,所以這裡我們要故意登入失敗,才能捕獲到它的封包
這邊帳密可以隨便輸入,然後按下「Login」
之後就可以回到 wireshark
在過濾器輸入 `http` 並且找到一個有使用 POST 的封包(在 info),且來源端為 `kali 的 IP`,目的端為 `owb 靶機的 IP`
點開來就能在下面發現更多詳細內容,在內容部分找到 `HTML Form URL Encoded: application/x-www-form-urlecoded` 就可以看到帳密的明文
如果還想看更多資訊可以對該封包 `按右鍵 --> Follow --> TCP Stream`
## nmap
Network Mapper (網絡映射器)的簡稱,主要用來進行網路探測,可以檢測目標主機是否啟動、哪些 port 號開著、其服務為何、OS版本、裝置類型等,常被網路管理員用來進行網路監控管理,以評估網路安全。而 hacker 也很喜歡使用,因為可以搜集到該目標主機目前的狀態及資訊,較好計劃該如何進行攻擊
### 執行流程
* 前置作業
在 kali 打開終端機以及 wireshark
* 實際運用
然後在終端機輸入 `sudo nmap <meta 靶機的IP>` 可以偵查 meta 靶機有哪些 port 號是開著的
這時會看到 wireshark 突然捕獲到一堆封包,因為 nmap 會對所有常見的 port 號進行TCP三向交握,只要看封包回傳的狀態為何,就可以得知有哪些 port 號是開著的(預設是偵查 1000 個常見的 port 號)
- 如果要同時偵查多個 IP,只要在 IP 的位置用空格隔開就好,像這樣 :
`sudo nmap <IP-1> <IP-2> ...`
- 如果想偵查某個特定範圍的IP,就使用 `-`,代表 `從...到...` ,像這樣是偵查 `10.0.2.5~10.0.2.15` 這個範圍的IP :
`sudo nmap 10.0.2.5-15`
- 另外除了可以指定 IP,我們也可以指定 port,只需帶入參數 `-p`,像這樣是指定偵查 port 號 80(只會列出 port 號 80 的偵查結果) :
`sudo nmap -p 80 <IP>`
- 我們也可以指定要偵查的 port 號範圍,像這邊指定偵查 80~150 的 port 號 :
`sudo nmap -p 80-150 <IP>`
- 或是帶參數`-F`,快速偵查目前最常見的 100 個 port 號 :
`sudo nmap -F <IP>`
- 如果只想偵查前 10 個最常見的 port 號,你可以放入參數 `-top <偵查數量>` :
`sudo nmap -top 10 <IP>`
- 如果想一次偵查所有 port 號(1~65535),可以放入參數 `-p-`,代表從1~65535的 port 號 :
`sudo nmap -p- <IP>`
- 也可以帶參數`-v`,顯示偵查的詳細資訊 :
`sudo nmap -v <IP>`
- 也可以放入參數 `-O`,用來顯示作業系統資訊
- 或是可以放入參數 `-sV` 來列出提供的服務版本
- 重要的是,也可以放入 `-sS`,為了不讓偵測過程中,**不完成** TCP 三向交握
- 而`-A` 是偵測 port 所運行的服務版本與作業系統
- 最後,也可以放入參數 `-oA` 把掃描的結果輸出為純文字檔、grep格式或XML
* 補充 -- 目前常用的 port 號 :
- 20 -- FTP : 檔案傳輸協定,用於傳輸數據
- 21 -- FTP : 檔案傳輸協定,用於傳輸命令
- 22 -- SSH : 加密過的遠程連線
- 23 -- Telnet : 簡易的遠端連線協定,不安全,不推薦使用
- 25 -- SMTP : 未加密的 mail 協定,不安全
- 53 -- DNS : 域名服務
- 80 -- HTTP : 未經加密的傳輸協定,不安全
- 110 -- POP3 : 未加密的 mail 協定,不安全
- 123 -- NTP : 網絡時間協定
- 143 -- IMAP : 未加密的 mail 協定,不安全
- 443 -- HTTPS : 有加密的傳輸協定
- 465 -- SMTPS : 有加密的 mail 協定
- 631 -- CUPS : 印刷服務器
- 993 -- IMAPS : 有加密的 mail 協定
- 995 -- POP3 : 有加密的 mail 協定
## ARP_Spoofing
也就是 ARP 欺騙
透過發送大量的 ARP 通訊封包進行誤導,將原本指定傳送封包的 IP MAC 位址竄改成 hacker 所在的 IP MAC 位址,使受害主機相信某個 IP 與某個 MAC 位址相關聯。執行過程中,hacker 可以取得這個封包的資訊,並對其進行竄改,再轉送回正確的 IP 位址,也可以什麼都不做將服務阻斷
### 執行流程
有 2 種方法 : 指令、GUI(ettercap)
1. 指令版
* 前置作業
首先,一樣打開終端機,並且更新以及下載這些套件
`sudo apt-get update` : 將套件庫進行更新
`sudo apt install dsniff -y` : 安裝dsniff,這是一套橋接欺騙工具,可以製造封包進行注入
接著打開 meta 靶機,輸入 `arp -a`,查看遭攻擊前的 ARP 緩存為何
然後打開 kali 中的 `wireshark` 查看接收到的封包
* 實際運用
輸入以下指令進行攻擊
`sudo arpspoof -i eth0 -t <meta 靶機的IP> <要取代的IP>`
meta 靶機的 IP 就是在 meta 靶機輸入 `ifconfig` 得到的 IP
要取代的 IP 就是用 `arp -a` 看到的 IP
這樣當我們在 meta 靶機 `ping` 要取代的 IP 時就會先傳送封包給我們的攻擊機(kali 那台)
我們可以透過 `wireshark` 看到我們一直對 meta 靶機發送訊息,告訴她錯誤的資訊
然後回到 meta 靶機,一樣輸入 `arp -a` 可以看到 <被取代的 IP> 後面的 MAC 位置被替換為 kali 終端機的 MAC 位置
這就代表當 meta 靶機要對 <被取代的 IP> 傳送封包時,會先經過我們的kali VM,才會傳送到 <被取代的 IP>
* 確認是否真的攻擊成功
在 meta 靶機上輸入 `ping <被取代的 IP>`
然後我們應該要在 wireshark 上看到從 meta 靶機截獲的 ICMP 封包
* 補充
如果要攻擊成功就必須一直執行攻擊程式碼,不能中斷發送
2. GUI(也就是使用 ettercap)
ettercap,一個專門用來執行中間人攻擊(MITM)的工具,有許多攻擊手法,但我們現在先用裡面的 ARP Spoofing
* 實際運用
先進入 kali 並且點擊左上角的 kali icon,搜索 ettercap-graphical 並且打開
這時應該會需要輸入密碼,就輸入 kali 的密碼就可以了
接著進到介面,點擊右上角的 `accept` 才會進到可以執行的地方
然後點擊左上角的放大鏡,搜索有哪些 IP 可以使用的
跑完之後按旁邊的`列表 Hosts List)`,查看有哪些 IP 開著
接著點擊 `<要取代的 IP>` 並且點擊中下方的 `Add to Target 1`
然後點擊 `<meta 靶機的 IP>` 並且點擊中右下方的 `Add to Target 2`
正常來說我們可以在下方的執行表看到 `Host... added to Target...`
最後點擊右上角的地球符號,裡面可以選擇不同攻擊方式,這裡我們使用 ARP
這樣就攻擊完成了
* 確認是否真的攻擊成功
在 meta 靶機上輸入 `telnet <被取代的 IP>` 或是 `ftp <被取代的 IP>`
然後我們應該要在 wireshark 上看到從 meta 靶機截獲的 TCP 封包
同時我們也可以在 ettercap 當中查看 :
點擊右上角的 三個點 --> View --> connections
## Metasploit_Framework
一個開源、知名、強大的滲透測試工具,常被用來驗證系統上的安全漏洞。並且除了可以使用現有的 *模組(modules)* 和 *有效負載(payloads)* 進行測試,也可以自己用 Ruby 編寫一個,再放到其對應的資料夾
小補充 :
可以先在 kali 終端機用 `cd /usr/share/metasploit-framework/modules` 查看有甚麼模組可以使用(會用藍色字顯示)
### 執行流程
* 前置作業-1
有 2 種方法開啟 metasploit framework : 點擊左上角的 kali icon,搜尋 metasploit framework 或是在終端機輸入 `msfconsole`
開啟成功時會出現一張可愛的圖片(每次都不太一樣),然後會出現 `msf6 >` 開頭
* 了解我們要做甚麼
使用 meta 靶機的 Samba usermap script 漏洞進行攻擊,取得對它終端機進行操作的權限。Samba 就是網路芳鄰的概念,讓你在區域網路內共享主機資料,這是利用 Samba 版本 3.0.20 到 3.0.25rc3 中的終端機漏洞,讓 hacker 拿到受害者本機的最高權限,藉此竊取一些機密文件,也因為他在身分驗證之前映射用戶名,所以不需要進行身分驗證就可以使用這個漏洞
* 前置作業-2
在 kali 終端機輸入 `sudo nmap -sV -sS -A <你meta靶機的IP>` ,這是使用 nmap 偵查 meta 靶機的 Samba 版本為何
執行之後可以往上滑到大約 139&445 左右的地方看到該主機的 Samba 版本是3.0.20,所以可以執行上述漏洞
* 補充--介紹 *模組*
- Payloads : 攻擊成功後,指定進行的下一步動作
- Auxiliary : 用來執行特定的工作(eg : 資料蒐集、網路掃描等)
- Encoders : 加密 payloads 以及 attack vectors,避免被防毒軟體和防火牆偵測到
- NOPs : 使 payloads 穩定
- Exploits : 真正進行攻擊的程式碼
* 補充--介紹 *常見基本指令* (使用時可以透過路徑或是列表中的編號)
- searsh : 尋找特定模組
- info : 列出特定模組的相關資訊
- use : 選擇一個特定模組並開始操作
- show : 顯示指定的內容
- set : 設定一個值
- run / exploit : 開始執行模組的攻擊
- back : 取消使用模組,回到msf >
* 實際運用
先輸入 `search usermap` 搜尋要運行的模組
可以發現有個編號 0,那就是我們要執行的模組
接著使用 `info`, 查看這個模組的詳細內容,輸入 `info 0`
再使用 `use`,選擇使用這個模組,輸入 `use 0`
如果使用成功,在 `msf6` 後面會多出模組的路徑
大概會長這樣(`msf6 exploit(multi/samba/usermap_script)`)
接著使用 `show` 查看執行所需的參數有哪些,輸入 `show options`
然後就可以看到,已經有些是已經設定好的,但 `RHOSTS` 需要自己設定
所以我們就使用 `set` 把 `RHOSTS` 的參數補上,這裡我們的攻擊對象為meta靶機,輸入 `set RHOSTS <meta 靶機的 IP>`
(`set` 的格式是 `set <欲設定的參數名稱> <欲設定的值>`)
之後可以再輸入一次 `show options` 確認是否有補上所有參數
當所有參數都設定好之後可以使用 `run` 或 `exploit` 來針對此漏洞進行攻擊,輸入 `run` 或 `exploit`
* 補充-- `show` 之後的不同參數
- RHOSTS : 想攻擊的主機 IP 位址
- RPORT : 想對哪個 port 號進行攻擊
- LHOST : 本機的 IP 位址
- LPORT : 想使用哪個 port 號發動攻擊
* 確認是否攻擊成功
在上述流程執行好之後應該就能對 meta 靶機的終端機進行操作
可以藉由輸入 `whoami`(who am i 的縮寫)查看是否顯示 `root`,如果有則代表攻擊成功,或者也可以用 `ifconfig` 查看目前的 `IP` 位置確認攻擊目標是否正確
* 接續動作
確認沒問題之後就可以竊取機密資料(畢竟都拿到最高權限了),像這裡示範的是印出 `/etc/shadow`,這個檔案存的是經雜湊(hash)過的使用者密碼,我們可以複製回 kali 裡使用 `Ophrack` 進行暴力破解
輸入 `cat /etc/shadow` 就可以了
* 重要補充
`Metasploit Framework` 上現有的模組都是已經被發現,並解決的漏洞,但其實也可以自己用 `Ruby` 編寫一個模組,驗證發現到的問題是不是一個還沒被發現的漏洞
## Burp_Suite
一個能攔截封包、對 web 進行滲透測試的工具,透過中間人的方式,對使用 `http` 和 `https` 協定的封包進行操作(如暫停、查看、分析、修改等),以發現潛在的 *意外問題* 及 *崩潰的錯誤訊息* 。集結許多滲透測試工具,使用 Java 編寫並提供 GUI 介面方便操作
* 了解我們要做甚麼
使用 `owb 靶機` 中的 `OWASP Mutillidae II 靶場` 進行攻擊。這個靶場提供了 `OWASP TOP 10` 裡的漏洞,並分成三種安全等級,讓我們初學者可以循序漸進進行攻防練習
現在我們要用的是 `SQL Injection(2013:A1)` 的 `Bypass Authentication/Login` 攻擊,並使用 `Burp Suite Proxy` 進行封包攔截,再使用 `Intruder` 進行字典檔遍歷,找出可以登入的帳號密碼
### 執行流程
* 前置作業 & 實際攻擊
點擊左上角的 kali icon,搜尋 burpsuite 並且開啟
因為只是練習不需要儲存結果,所以接著點擊 `temporary project` 並按右下角的 `Next`
接著選擇 `Use Burp defaults`,再按右下角的 `Start Burp`
就會看到 `Burp Suite` 的主畫面
開啟 `OWASPBWA 靶機`,登入後輸入 `ifconfig`,確認 IP 位址(之後就不會用到了,但也不能關閉)
之後回到 `kali` 開啟 `firefox`
在網址列的地方輸入 `<owb 靶機的 IP 位址>` 就會進到 `owaspbwa` 的畫面,點擊 `OWASP Mutillidae II`(應該是右列第 2 個)
接著點擊左上方的 `OWASP 2013 > A1 - Injection(SQL) > SQLi - Bypass Authentication > Login`
因為 `Burp Suite proxy` 預設的連接端口為 `127.0.0.1:8080`,所以要在 `Firefox` 設定一個 `proxy`
所以在 `Firefox` 中我們按右上角的三橫線(工具列),下面會出現 `settings`
進去之後滑到最下面,會看到 `Network Settings`,點擊 `Settings...`
勾選 `Manual proxy configuration`,並在 `HTTP Proxy` 的地方輸入 `127.0.0.1`,右方的 `port 號`為 `8080`,這樣就設定完成了
接著回到 `Burp Suite`,點擊上方第二列的 `proxy` 接著按下方一列的 `intercept` 然後再點擊下方一列的 `Intercept is off` 把它變成 `Intercept is on`
然後就可以回到剛剛 `Firefox` 當中的 `Login` 畫面,並將 `username` 和 `password` 輸入任意值並且按下 `Login`
這時 `Burp Suite` 會收到剛剛按下 `Login` 的封包,而瀏覽器的部分不會跳轉,會一直在 *等待這個封包*
此時再對左側那一大片區域(封包畫面)按右鍵,點擊 `Send to Intruder`,將封包資訊傳到 `Intruder` 執行動作
這時點擊上方第二列的 `Intruder` 然後再按下方的 `positions`,就會看到剛剛的封包資訊
先按 `clear §`,取消所有被 `§` 標記的地方
接著再把封包資訊最後面的 `username` 以及 `password` 後方的訊息用 `add §` ,代表將我們剛剛輸入的名稱以及密碼用 `§` 標記起來
然後在上方的 `attack type` 中選擇 `cluster bomb`
再點進第四行的 `Payloads` 裡(上面最靠近單元格的地方),將 `Payload Sets` 設為 `1`,代表 `username`,也就是剛剛第一個用 `§` 包起來的部分
並在 `Payload Options` 使用 `add` 新增可能是 `username` 的值
再將 `Payload set` 設為 `2`,指的是 `password`,也就是第二個被 `§` 包起來的部分
一樣在 `Payload Options` 裡新增可能是 `password` 的值。
最後點擊右上角的 `Start attack` 開始攻擊
* 補充-- 查找 `Burp Suite proxy` 預設的連接端口
在 `Burp Suite` 當中點擊上方第二列的 `proxy` 接著按下方一列的 `proxy settings` 就會看到 `proxy listeners` 這欄裡出現預設的連接端口為 `127.0.0.1:8080`
* 補充--`Payload Options`
輸入值的時候可以手動輸入,也可以用 `load` 匯入字典檔(網路上下載應該很多),但如果是使用字典檔可能會跑比較久
關於手動輸入,在 `username` 的部分可以輸入 : `admin`、 `Admin`、 `user`、 `User` 等
而在 `password` 的部分可以輸入 : `admin`、 `Admin`、 `user`、 `User`、 `123456789`、 `00000000` 之類的
* 確認是否攻擊成功
攻擊結束後,`Status` 為 `302` 的皆是可以成功 `Login` 的帳號,可以點擊任意一個看他的 `Response`
接著再回到 Proxy(點擊上方第二列的 `proxy`),按單元格上方一列的 `Forward` 進行封包傳送
回到瀏覽器,就可以看到已經用 `user` 的身分登入
## ExploitDB
也就是弱點資料庫
這就是它的網頁 : https://www.exploit-db.com/
運用 search 結合使用 nmap 找到的版本就能找到搜尋結果
並且還能看到破解漏洞的腳本
## smtp
這是針對 port 25 的滲透測試
通常會先進到 msf 當中(參考上述的 [msfconsole](#Metasploit_Framework) )
接著輸入 `search smtp_version` 找到之後可以直接用 `use 0` 來使用
然後輸入 `show options` 來查看有哪些參數
可以看到只需要使用到 IP 就可以了
因此我們輸入我們要的 IP 位置 : `set RHOSTS <IP>`
之後就可以輸入 `run` 來執行
可以發現 *目標郵箱* 之類的訊息
---
另外,也可以使用 `smtp_enum` 來爆破目標郵箱的用戶名
首先一樣使用 `search smtp_enum` 來找到這個模組,並且用 `use 0` 來使用
然後一樣用 `show options` 來看有哪些參數
一樣可以發現只需要用到 IP 而已
所以輸入我們要的 IP 位置 : `set RHOSTS <IP>`
但因為默認的 file 不一定有辦法執行,所以也可以用 `set USER_FILE` 來使用
輸入 `set USER_FILE /usr/share/wordlists/seclists/Usernames/top-usernames-shortlist.txt`
設置好 IP 以及執行檔案之後,就可以輸入 `run` 來運作
可能就會發現一些用戶名,比較隱私的像是 *root, administrator* 之類的
接著就會使用 `hydra` 之類的來爆破 `SSH` 的密碼(通常是 port 22,但也可以用 nmap 來搜尋)
以下是 2 種方式
使用終端機或 UI
* 終端機
`hydra -I <用戶名> -P /usr/share/wordlists/rockyou.txt ssh://<IP> -t 20`
接著使用 `ssh` 來登入
`ssh <用戶名>@<IP 位置>`
再輸入密碼即可登入
* UI
在 kali icon 中搜尋 Hydra 就能看到第一個 `hydra-graphical`
可以在 hydra 上方的工具列看到有 5 個選項
首先看到上方工具列的第 1 項 *Target*
主要是選擇目標
最上面 single target 的部分需要填入目標的 `IP`(這是針對單一目標)
如果要針對多個目標需要填寫 target list(需要以檔案形式匯入)
接著往下,會有 port 可以填寫
然後 port 下方會有 protocol(協定) 可以填寫
然後再往下看,可以勾選 show attempts,這是顯示攻擊的過程
接著看到上方工具列的第 2 項 *passwords*
主要是決定怎麼破解
username 的部分就是要針對哪個單一使用者來破解
而 username list 的部分就是提供多個使用者名稱,一樣是只能匯入檔案
接著下方的 password 可以填寫單一密碼來試試看
而 password list 就是進行多次密碼猜測攻擊
通常都會使用 list,但一樣要匯入檔案
然後看到上方工具列的第 3 項 *tuning*
主要是設定運行資源
重要的就是 exit after first .....
這是找到一個符合的帳號密碼就會停止攻擊
要記得勾選
然後看到上方工具列的第 4 項 *specific*
主要是設定客製化的攻擊
像是特定網站,特定設備之類的
最後看到上方工具列的第 5 項 *start*
主要就是開始執行
start 就是依照我們設定的開始攻擊
stop 就是停止
save 就是儲存執行過程 & 結果
clear 就是清除
接著我們就可以實際測試
使用 kali 作為攻擊端
metasploitable 做為測試端
先把 2 個都打開
meta 的帳密是 : msfadmin
kali 的帳密是 : kali
接著先看 meta 的 IP 位置
輸入 : ifconfig 就可以看到
接著就可以開始使用 kali 攻擊了
首先使用 nmap 掃描這個 IP 的不同端口
`nmap -sS -A -p- <IP>`
可能會需要等一段時間(2~3分鐘左右)
接著就能看到掃描結果
前方的數字就是 port
然後我們用 telnet(port 23) 當作測試
首先進入 kali icon 輸入 hydra 就會看到 hydra-graphical
點開來,在 single target 輸入我們 meta 的 IP
接著在下方的 port 輸入 23(因為要攻擊的是 port 23)
並且把 protocol 改成 telnet
然後也要把下方的 show attempts 勾起來,才會顯示攻擊過程
接著就到 passwords 在 username list 以及 password list 中都放入我們建立好的字典(rockyou.txt)(已經是建立好的)
位置在 : `file system/usr/share/wordlists/rockyou.txt`
(其實也可以使用其他的字典檔案)
然後 tuning 的部分需要勾選 exit after first .....
最後就到 start 點選 start 就會開始攻擊
最後應該就會顯示破解的結果
包含 login 以及 password
---
除此之外,也可以使用 `telnet`(可能會在 port 23) 來看是否能偽造釣魚郵件
輸入 `telnet <IP位置 或 網址> <25(也就是smtp 的 port)>`
假設此時返回的訊息為 `220` 則代表成功連接
接下來就能使用 smtp 的協議來做事了
* 首先,連接成功時,必須提供連接的域名,也就是郵件是從哪個服務器來的
所以輸入 `EHLO <IP 或 網址>`
如果此時返回 `250` 代表成功
並且因為是使用 `EHLO`,所以也會返回自己支持的各種擴展的列表
* 接著需要使用 `MAIL FROM` 來向郵件服務器提供郵件的來源信箱
`MAIL FROM:admin@xxx.com` 代表偽造管理員的身分來發送郵件
如果此時返回 `250` 代表成功
* 還可以使用 `RCPT TO` 來看郵件地址是否存在,如果存在的話還可以對這個郵箱發送郵件
如果返回的是 `250` 或 `251` 代表存在,但如果是 `5xx` 代表不存在
* 另外,也可以使用 `DATA` 來偽造郵件內容,假設返回 `354` 代表已經準備好可以對這個郵箱發送郵件了
* 正文的部分,使用 `""` 來包住正文,結束正文後需要另外發送 `.` 表示正文結束
如果成功的話會返回 `250`
* 最後使用 `QUIT` 退出 TCP 協定,如果返回 `211` 代表成功斷連
## OWASP(2021:A1)
也就是 Broken Access Control(無效的訪問控制)
說明 : https://hackmd.io/@asd0713/ByVDgyqRh
常見的漏洞有 :
1. URL ID
有些 URL 後面會加上 `id=XXX`,而這 ID 可能是一串數字、亂碼、雜湊值等,指的可能是使用者 ID,也有可能是指某筆資料的 ID
```
eg:
https://www.testweb.com/profile?id=1234 # 使用者
https://www.testweb.com/profile?id=c14123-255d-8c1w-q82134te32 # 某筆資料
```
而 URL 在網址列是可以手動做更改的,所以如果沒做好權限的控制,hacker 就可以經由更改 ID,取得其他使用者的權限和資訊
2. 路徑遍歷
對系統預設目錄的熟悉程度非常重要。如果沒有做好系統的權限控制,hacker 就能透過更改 URL,自由訪問系統目錄中預設擺放的文件內容
```
ex:
https://www.testweb.com/profile?file=dog.png
改成
https://www.testweb.com/profile?file=../../etc/passwd
```
3. 文件權限
跟上述的路徑遍歷有點類似,但又有點差異。路徑遍歷是指 : 對 **目錄** 的權限,而文件權限是 : 對 **文件** 的權限
因為 Linux 的權限簡單來說就是你可以訪問 **這個目錄**,但不一定可以訪問 **其他目錄內的文件**,和它的權限 `-r` 有關
* 了解我們要做甚麼
這次要做的是 **目錄遍歷**
使用 `OWB靶機` 中的 `OWASP Mutillidae II 靶場` 練習,這靶場提供了`OWASP TOP10` 裡的漏洞,並分成 3 種安全等級,讓初學者可以循序漸進進行攻防練習
這邊使用 `OWB靶機`(使用 2013 的漏洞)
### 執行流程
* 前置作業 & 實際攻擊
**(跟上面那個差不多--因為都是使用 burpsuite)**
點擊左上角的 kali icon,搜尋 burpsuite 並且開啟
因為只是練習不需要儲存結果,所以接著點擊 `temporary project` 並按右下角的 `Next`
接著選擇 `Use Burp defaults`,再按右下角的 `Start Burp`
就會看到 `Burp Suite` 的主畫面
開啟 `OWASPBWA 靶機`,登入後輸入 `ifconfig`,確認 IP 位址(之後就不會用到了,但也不能關閉)
之後回到 `kali` 開啟 `firefox`
在網址列的地方輸入 `<owb 靶機的 IP 位址>` 就會進到 `owaspbwa` 的畫面,點擊 `OWASP Mutillidae II`(應該是右列第 2 個)
接著點擊左上方的 `OWASP 2013 > A4 - Insecure Direct Object References > Text File Viewer\`
因為 `Burp Suite proxy` 預設的連接端口為 `127.0.0.1:8080`,所以要在 `Firefox` 設定一個 `proxy`
所以在 `Firefox` 中我們按右上角的三橫線(工具列),下面會出現 `settings`
進去之後滑到最下面,會看到 `Network Settings`,點擊 `Settings...`
勾選 `Manual proxy configuration`,並在 `HTTP Proxy` 的地方輸入 `127.0.0.1`,右方的 `port 號`為 `8080`,這樣就設定完成了
接著回到 `Burp Suite`,點擊上方第二列的 `proxy` 接著按下方一列的 `intercept` 然後再點擊下方一列的 `Intercept is off` 把它變成 `Intercept is on`
然後就可以回到剛剛 `Firefox` 中,我們可以會看到左上角有個 `Security Level: 0`
在頁面中間可以在 `Text File Name` 選取任意一個檔案,之後點擊 `View File`
這時 `Burp Suite` 會收到剛剛按下 `View File` 的封包,而瀏覽器的部分不會跳轉,會一直在 *等待這個封包*
然後在 `Burp Suite` 會看到一串 URL,是剛剛選擇的 File 的所在位置,因為它是用 textfile 來控制要顯示的文件
所以我們可以將它改成 `../../etc/passwd`,並點擊 `Forward` 進行封包傳送
回到 `FireFox` 中我們就可以看到 `OWB靶機` 的 `/etc/passwd` 內容
* 補充(更改網名)
../../ 代表 : 從家目錄退到 home,再退到根目錄
* 確認是否攻擊成功
可以到 `OWB靶機` 輸入 `cat /etc/passwd`,對照一下內容是否一樣
* 進階
如果要測試更高等級的內容我們可以先將 Proxy 的 `Intercept is on` 關閉
接著回到 `FireFox` 中點擊 `Toggle Security` 2 次把 `Level` 升到 5
然後就可以重複上述的動作,這時我們回到 `FireFox` 當中會看到錯誤訊息
因為在 `level 5` 當中有設下一些防護機制
詳細查看的部分可以參考原文 : https://ithelp.ithome.com.tw/articles/10304631
主要是需要有 `php` 的基礎,但因為我目前也還沒有所以解不出來 QQ
## 參考文獻
原文網址 : https://ithelp.ithome.com.tw/users/20141088/ironman/5548
系列文章中的 Day 11 ~ Day 20
smtp :
https://www.sqlsec.com/2017/08/smtp.html#RCPT-TO-%E5%91%BD%E4%BB%A4
nmap :
https://minmin0625.medium.com/%E6%BB%B2%E9%80%8F%E6%B8%AC%E8%A9%A6lab-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8hydra-nmap-%E5%9F%B7%E8%A1%8C%E9%81%A0%E7%AB%AF%E6%9A%B4%E5%8A%9B%E7%A0%B4%E8%A7%A3-a21d9b8149e0
hydra :
https://minmin0625.medium.com/%E6%BB%B2%E9%80%8F%E6%B8%AC%E8%A9%A6lab-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8hydra-nmap-%E5%9F%B7%E8%A1%8C%E9%81%A0%E7%AB%AF%E6%9A%B4%E5%8A%9B%E7%A0%B4%E8%A7%A3-a21d9b8149e0