Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
滲透測試基本技巧與經驗分享
Search
oalieno
August 27, 2017
Programming
2
1k
滲透測試基本技巧與經驗分享
[ HITCON CMT 2017 社群議程 ]
目標觀眾 : 想入門 web security 的人
oalieno
August 27, 2017
Tweet
Share
More Decks by oalieno
See All by oalieno
[Crypto in CTF] Classical Cipher
oalieno
0
330
[Crypto in CTF] Block Cipher Mode
oalieno
0
890
[Crypto in CTF] HASH
oalieno
0
210
[Crypto in CTF] LFSR
oalieno
0
430
[Crypto in CTF] RSA
oalieno
0
610
[Crypto in CTF] Bleichenbacher RSA Signature Forgery
oalieno
0
480
[Crypto in CTF] Blockchain Security
oalieno
0
360
Other Decks in Programming
See All in Programming
RubyLSPのマルチバイト文字対応
notfounds
0
120
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
110
Macとオーディオ再生 2024/11/02
yusukeito
0
370
色々なIaCツールを実際に触って比較してみる
iriikeita
0
330
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
카카오페이는 어떻게 수천만 결제를 처리할까? 우아한 결제 분산락 노하우
kakao
PRO
0
110
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
330
CSC509 Lecture 13
javiergs
PRO
0
110
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
2
120
Jakarta EE meets AI
ivargrimstad
0
110
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
The Cult of Friendly URLs
andyhume
78
6k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Become a Pro
speakerdeck
PRO
25
5k
How STYLIGHT went responsive
nonsquared
95
5.2k
Faster Mobile Websites
deanohume
305
30k
For a Future-Friendly Web
brad_frost
175
9.4k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
We Have a Design System, Now What?
morganepeng
50
7.2k
The Language of Interfaces
destraynor
154
24k
Thoughts on Productivity
jonyablonski
67
4.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Transcript
滲透測試 基本技巧與經驗分享 講者: 趙偉捷
自我介紹 ID : OAlienO 姓名 : 趙偉捷 學校系所 : 國立交通大學
電機資訊學士班 大二升大三 社群 : Bamboofox
目錄 滲透測試 - Penetration Test ( PT ) 情境一 :
收集情報 情境二 : 資料洩漏 情境三 : SQL injection 情境四 : XSS 情境五 : XST 情境六 : CSRF 情境七 : File Upload Vulnerability Common Vulnerabilities and Exposures ( CVE ) Bug Bounty 與漏洞通報
滲透測試 Penetration Test ( PT )
滲透測試 - Penetration Test ( PT ) 簡介 : 滲透測試是企業委託駭客對系統進行入侵攻擊,並在攻擊後
回報潛在漏洞給開發人員做修補。 特性 : 以毒攻毒,針對目標網站。 有授權很重要
標準流程 很多人開始做滲透測試後,就會有人整理一些常見的步驟手法,這 邊列出幾個開源組織制定的滲透測試標準流程。 OWASP ( Open Web Application Security Project
) https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_o f_Contents OSSTMM (Open Source Security Testing Methodology Manual) http://www.isecom.org/research/osstmm.html PTES ( Penetration Testing Execution Standard ) http://www.pentest- standard.org/index.php/PTES_Technical_Guidelines
標準流程 提升權限 維持存取 偵查 掃描 漏洞利用 回報漏洞
情境一 假設今天外星人想對某個網站做滲透測試 他要從哪裡開始測呢 ? ( 切他電路 ) 收集情報
收集情報 ( Information Gathering ) 最簡單且基本的情報收集可以從看伺服器回應的 http header 開始
收集情報 ( Information Gathering ) Cookie 的名字也可以拿來辨認系統 ( 不一定正確 )
有沒有工具呢? Wappalyzer ( https://chrome.google.com/webstore/detail/wappalyzer/gp pongmhjkpfnbhagpmjfkannfbllamg?hl=zh-TW )
收集情報 ( Information Gathering ) Chrome 插件 Wappalyzer
收集情報 - Google Hacking 完整的運用 Google 的強大搜尋功能 inurl: google.com inurl:google.com
intext:"PHP Fatal error: require()" filetype:log site:google.com Google hacking database https://www.exploit-db.com/google-hacking-database/ 這裡不能有空白
收集情報 – 找旁注 一個機器可能 host 多個網站
收集情報 - 使用工具 ( nmap ) nmap <url> 掃 port
收集情報 - 使用工具 ( nikto ) 會提供相關網站
情境二 最常見安全問題 1st round – 資料洩漏 情境 : 外星人在某網站上申請東東,申請完後得到這個連結,上面顯示申 請的資料做確認和列印,會發生什麼事情呢,請待下頁分曉
https://www.xxx.com/apply_form/?id=123
機敏資料洩漏 網站權限控管沒做好,可以瀏覽其他人的申請單 並看到他填的申請表上面的個人資料 比如 : https://www.xxx.com/apply_form/?id=100
機敏資料洩漏 運用 Google hacking 的技巧,找到不小心公開的檔案 intitle:"Index of" site:nctu.edu.tw filetype:pdf
情境三 最常見安全問題 2nd round – SQL injection 情境 : 外星人在某網站上看到可以輸入的
input box 就很開心地輸入單引號…
SQL injection 發現驚人的事實,他會 SQL syntax error 說明他 87% 有 SQL
injection 漏洞
漏洞利用 – SQL injection SQL injection 簡稱 SQLi 開發者常常犯的一個錯誤的編程方式 :
將要拿去執行的程式碼用字 串串接的方式接上使用者可控的字串,統稱為注入 ( injection ) $sql = "SELECT id FROM users WHERE uid='$uid';"; $result = $conn->query($sql); 把使用者可以控制的字串串接到要執行的命令裡面 ( SQL command )
漏洞利用 – SQL injection UNION SELECT 技巧 $sql = "SELECT
name,addr FROM users WHERE uid='$uid';"; SELECT name,addr FROM users WHERE uid='0' UNION SELECT 1,2 -- '; 這裡也要兩個 這裡兩個
漏洞利用 – SQL injection 手動挖 DB 順序 schema table column
漏洞利用 – SQL injection id=0 UNION SELECT null,null,table_name FROM information_schema.tables
WHERE table_schema = 'news' -- id=0 UNION SELECT null,null,column_name FROM information_schema.columns WHERE table_schema = 'news' AND table_name = 'flag' -- id=0 UNION SELECT null,null,flag FROM flag 直接是一個數字,他 SQL 原本就沒包單引號
漏洞利用 – SQL injection Blind injection : 在沒有噴 log 的情況下,有機會可以派上會場
id=0 AND ( … ) > 49 id=0 AND ( … ) > 50 id=0 AND ( … ) > 51 … 成功 成功 失敗 他是 51 使用 binary search 的技巧提升效率
漏洞利用工具 – sqlmap sqlmap –r package –dbs sqlmap –r package
–D xxx –tables sqlmap –r package –D xxx –T yyy –columns sqlmap –r package –D xxx –T yyy –C zzz –dump sqlmap –r package –dump-all sqlmap –r package –os-shell
漏洞利用 – SQL injection 如何防禦 SQLi ? 將使用者可控的部分 參數化 (
parameterized ) 黑魔法 防禦術 $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); $stmt->bindParam(':name', $name); $stmt->bindParam(':value', $value); $name = 'one'; $value = 1; $stmt->execute(); 以 php 為例
情境四 情境 : 外星人看到有一個留言框 很開心的輸入 '<script>alert("XSS");</script>' 最常見安全問題 3rd round –
XSS
XSS 瀏覽器跳了一個提醒視窗,上面寫了 XSS 代表我們成功執行了 javascript
漏洞利用 – XSS XSS ( Cross-Site Script ) 也是 injection
的一種,HTML 代碼注入導致能執行任意 Javascript 代碼 <p>正常留言</p> <p><script>alert("XSS")</script></p>
漏洞利用 – XSS 儲存型 XSS : 被伺服器存在 DB 中,當受害者瀏覽該網站 就可以在他的瀏覽器執行你存在伺服器
DB 的惡意 javascript 代碼
漏洞利用 – XSS 反射型 XSS : 必須讓受害者點擊網址, 例如 https://xxx.com/index?q=<script>alert(1)</script>
漏洞利用 – XSS 低成本的小技巧 : 伺服器回傳時夾帶 X-XSS-Protection 這個 header 他會幫你
filter 大部分可疑字串 不保證可以阻止攻擊,但可以大幅降低發生機率 相關資料 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection 黑魔法 防禦術
漏洞利用 – XSS 高強度防禦 : 使用 htmlentity 顯示使用者的輸入的資訊 相關資料 :
https://dev.w3.org/html5/html-author/charref 黑魔法 防禦術 '<' 的 htmlentity
練習網站 – XSS xss-game : https://xss-game.appspot.com/ alert 1 to win
: https://alf.nu/alert1
情境五 情境 : 外星人成功 XSS,但發現 cookie 有 HttpOnly 拿不到 O_O
最常見安全問題 4st round – XST
漏洞利用 – XST XST ( Cross Site Tracing ) 使用目的
: 繞過 HttpOnly 什麼是 HttpOnly? 讓 javascript 無法存取 cookie Set-Cookie: my_cookie=123; HttpOnly
漏洞利用 – XST 概念介紹 : 運用 HTTP 中一個用來測試的 method –
TRACE 你傳什麼給伺服器他就回什麼
漏洞利用 – XST 猥瑣思想 : 發 request 的時候,瀏覽器會自動夾帶 cookie 用
TRACE method 發 request,伺服器會回一模一樣的內容 我們用 javascript 發 request 可以看到回傳的內容 結論 : 我們可以看到 COOKIE
範例代碼 – XST <script> var xmlhttp = new XMLHttpRequest(); var
url = 'http://xxx.com/'; xmlhttp.withCredentials = true; xmlhttp.open('TRACE', url, false); xmlhttp.send(); </script>
情境六 情境 : 外星人心血來潮想來架一個網站,順手放了一段黑黑的代碼… 別人來看他的網站後,發現他銀行的錢錢都不見了 O_O 最常見安全問題 5st round –
CSRF
漏洞利用 – CSRF 重要觀念 : 瀏覽器發 request 時會自動幫你夾帶 cookie 猥瑣思想
: 從一個網站發 request 到另一個網站 瀏覽器會幫我夾帶使用者另一個網站的 cookie
漏洞利用 – CSRF 範例 用 img 發起 GET request <img
src="https://www.xxx.com/?transferFunds=5000"> <iframe src="https://www.xxx.com/?transferFunds=5000"> 用 iframe 發起 GET request
漏洞利用 – CSRF 範例 用 javascript 發起 POST request 並把結果導向看不見的
iframe 裡面 <iframe style="display:none" name="csrf-frame"></iframe> <form method="post" action="https://xxx.com/signout" id="csrf-form" target="csrf-frame"> <input type="hidden" name="exit" value="true"></td> </form> <script>document.getElementById("csrf-form").submit()</script>
情境七 情境 : 外星人發現某個網站上可以上傳檔案,竟然沒有限制檔案型態 而且可以找到他把上傳的檔案放在哪裡… 最常見安全問題 6st round – FU
漏洞利用 – File Upload 權限問題 假設網站是跑 PHP,我們上傳一個 PHP 檔上去,然後瀏覽他所在 的路徑,我們就可以得到一個
webshell
案例分享 – File Upload 權限問題 案例分享 : 請假系統的 File Upload
權限問題 第一次修補原始碼 : if(substr( $filename , -3) == "php"){} 第一次修補 bypass : 上傳 webshell.PHP, XSS.html 第二次修補原始碼 : 用 regex 乖乖檢查 X
Common Vulnerabilities and Exposures ( CVE )
CVE 資安漏洞的資料庫,由美國非營利組織 MITRE 維護 會幫被回報的漏洞做編號 ( EX : CVE-2017-5638 )
https://cve.mitre.org/ { { 西元紀年 流水編號
第一步 : 架設環境 視情況使用 docker 或虛擬機器架設環境
第二步 : 找 POC ( Proof of Concept ) 三種方式
: 1. 去網路上找 POC 2. 使用漏洞掃描框架 nmap nse 或 metasploit 做偵測或入侵 3. 了解原理後手寫 python script
第三步 : 找目標 用 Google Hacking 的技術或是其他情資收集技巧 intitle:"Struts Problem Report"
intext:"development mode is enabled." 關鍵字 : OSINT ( Open Source Intelligence )
Bug Bounty 與漏洞通報
Bug Bounty Bug Bounty 是什麼呢? 企業懸賞獎金請駭客們幫忙滲透測試 有哪些網站呢? https://bugcrowd.com https://hackerone.com https://www.vulbox.com
漏洞通報平台 HITCON ZeroDay https://zeroday.hitcon.org
更多練習網站 線上解題網站 1. https://bamboofox.cs.nctu.edu.tw/ 2. http://www.gameofhacks.com/ 3. https://www.hackthis.co.uk/ 4. http://pwnable.kr/
5. http://pwnable.tw/ 漏洞平台 ( 自己架起來打 ) 1. WebGoat 2. DVWA 3. Mutillidae
BAMBOOFOX
社團資源 社團粉絲專頁 : https://www.facebook.com/NCTUCSC/ 社團部落格 : https://bamboofox.github.io/ 社團解題系統 : https://bamboofox.cs.nctu.edu.tw/
我們的攤位在 MOPCON 和 UCCU ( 好多鎖 ) 之間 趕快來拍打餵食~~~
Q&A