[指令日記] 003 Kali Linux SSH 設定與安全性強化指南:從安裝到遠端連線

飛飛 | 2024-10-24

在進行 Kali Linux SSH 設定之前,我們需要了解完整的安裝流程、基礎配置以及安全性設定。本教學將帶您一步步建立安全的 SSH 環境,適合初學者從頭學習。

1. Kali Linux SSH 基礎設定

1.1 系統需求與準備

  • Kali Linux 作業系統(建議使用最新版本)
  • 系統管理員權限
  • 穩定的網路連線
  • 至少 100MB 的硬碟空間

1.2 OpenSSH Server 安裝步驟

  1. 檢查現有安裝
dpkg -l | grep ssh
  1. 更新套件庫並安裝
sudo apt update
sudo apt install openssh-server

2. SSH 服務設定與啟用

2.1 啟動 SSH 服務

  • 啟動 SSH 服務的標準流程
sudo systemctl start ssh

2.2 設定自動啟動

  • 設定系統開機時自動啟動 SSH
sudo systemctl enable ssh

2.3 檢查服務狀態

  • 確認 SSH 服務運作狀況
# 檢查服務狀態
sudo systemctl status ssh

# 檢查監聽端口
netstat -tulpn | grep ssh

3. SSH 安全性強化設定

3.1 修改預設連接埠

編輯 SSH 設定檔 /etc/ssh/sshd_config

# 備份原始設定檔
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# 修改設定檔
sudo nano /etc/ssh/sshd_config

# 修改以下設定
Port 2222  # 更改預設的 22 端口

3.2 設定使用者權限

  • 強化使用者存取控制
# 禁用 root 登入
PermitRootLogin no

# 限制允許的使用者
AllowUsers user1 user2

# 設定最大登入嘗試次數
MaxAuthTries 3

# 設定登入逾時時間
LoginGraceTime 30

3.3 密鑰認證設定

  1. 生成 SSH 密鑰對
# 在客戶端生成密鑰對
ssh-keygen -t rsa -b 4096
  1. 設定伺服器端
# 將公鑰複製到伺服器
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

# 禁用密碼認證
PasswordAuthentication no

4. 遠端連線與應用

4.1 基本連線指令

  • 常用的 SSH 連線指令
# 基本連線
ssh user@server -p 2222

# 使用密鑰連線
ssh -i ~/.ssh/id_rsa -p 2222 user@server

# 啟用壓縮
ssh -C user@server

4.2 檔案傳輸應用

  • 使用 SCP 進行安全檔案傳輸
# 上傳檔案
scp -P 2222 localfile.txt user@server:/remote/path

# 下載檔案
scp -P 2222 user@server:/remote/file.txt ./

# 傳輸整個目錄
scp -r -P 2222 localdir/ user@server:/remote/path

4.3 進階端口轉發

SSH 通道和端口轉發設定

# 本地端口轉發
ssh -L 8080:localhost:80 user@server

# 遠端端口轉發
ssh -R 8080:localhost:80 user@server

# 動態端口轉發 (SOCKS 代理)
ssh -D 9090 user@server

安全性建議與最佳實踐

  1. 定期更新系統和 SSH
sudo apt update && sudo apt upgrade
  1. 監控 SSH 日誌
sudo tail -f /var/log/auth.log
  1. 設定防火牆規則
sudo ufw allow 2222/tcp
sudo ufw enable
  1. 使用 fail2ban 防止暴力破解
sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

透過以上完整的設定和實作,您可以在 Kali Linux 上建立一個安全且可靠的 SSH 環境。記得定期檢查系統日誌、更新安全性設定,並保持良好的密碼管理習慣。

相關資源:

您想了解更多關於特定設定或有任何疑問,歡迎在下方留言詢問!

受保護的內容: WinDbg 001

飛飛 | 2024-05-22

這篇內容受到密碼保護。如需檢視內容,請於下方欄位輸入密碼:

[NIST] NIST SP 800-12 An Introduction to Information Security

飛飛 | 2024-01-30

閱讀版本

  • 06/22/17: SP 800-12 Rev. 1 (Final)

NIST SP 800-12 章節

  • 第一章
    • 目的
    • 目標受眾
    • 重要術語
    • 資訊安全的法律基礎
    • NIST出版物清單
  • 第二章
    • 資訊安全八大主要元素
  • 第三章
    • 組織中的多個資訊安全角色
  • 第四章
    • 威脅和弱點
    • 不同威脅來源和事件的範例
  • 第五章
    • 資訊安全政策
    • 不同類型的政策
  • 第六章
    • 風險管理
    • NIST風險管理框架(RMF)的六個步驟
  • 第七章
    • 資訊保障
    • 保護資訊和系統的措施
  • 第八章
    • 系統支援和運營
  • 第九章
    • 加密簡要概述
    • NIST 800系列出版物
  • 第十章
    • 20個資訊安全和隱私控制家族
  • 附錄A
    • 參考資料清單
  • 附錄B
    • 術語詞彙表
  • 附錄C
    • 首字母縮寫詞彙表

重點整理

NIST相關出版物

出版物 描述
FIPS 199 聯邦資訊及資訊系統安全分類的標準,列出了資訊和系統分類的標準,為表達安全性提供共同框架和理解,以促進有效管理和一致報告。
FIPS 200 聯邦資訊及資訊系統最低安全要求,指定了支援聯邦政府執行機構的資訊和系統的最低安全要求,以及選擇滿足最低安全要求所需的安全控制的基於風險的流程。
SP 800-18 系統安全計劃開發指南,描述了開發系統安全計劃的程序,提供了系統的安全要求概述,並描述了滿足這些要求的現有或計劃中的控制。
SP 800-30 風險評估指南,提供了聯邦系統和組織進行風險評估的指導。
SP 800-34 聯邦資訊系統應變計劃指南,幫助組織理解資訊系統應變計劃(ISCPs)開發的目的、過程和格式,提供實用的現實世界指南。
SP 800-37 將風險管理框架應用於系統的指南:安全生命周期方法,提供了將風險管理框架應用於聯邦系統的指南,包括進行安全分類、選擇和實施安全控制、安全控制評估、系統授權和安全控制監控的活動。
SP 800-39 管理資訊安全風險:組織、使命和資訊系統視圖,提供建立組織全面管理資訊安全風險的指南,包括組織運營(例如使命、職能、形象和聲譽)、資產、個體、其他組織和國家等因聯邦系統的操作和使用而產生的風險。
SP 800-53 系統和組織的安全和隱私控制,提供選擇和指定組織和支援聯邦政府執行機構的系統的安全控制的指南,以滿足FIPS出版物200的要求。
SP 800-53A 評估系統和組織中安全和隱私控制的有效性:建立有效的安全評估計劃的指南,以及為評估聯邦政府執行機構支持的系統和組織中使用的安全控制和隱私控制的有效性提供的一套綜合程序。
SP 800-60 資訊和資訊系統類型與安全分類的對應指南,協助機構一致將安全影響級別對應到各種類型的資訊(例如隱私、醫療、專有、財務、承包商敏感、商業機密、調查)和系統(例如使命關鍵、使命支援、行政)。
SP 800-128 資訊系統安全性重點的配置管理指南,為負責管理聯邦系統及其相關環境的安全性的機構提供指導。
SP 800-137 聯邦資訊系統和組織的資訊安全持續監控(ISCM)指南,協助組織制定ISCM策略和實施ISCM計劃,提供對威脅和弱點的警覺、對組織資產的可見性以及已部署的安全控制的有效性。

八個關於資訊安全的主要元素

  1. Information security supports the mission of the organization.(資訊安全支持組織的使命)
    • 資訊安全是為了支持組織的核心使命而存在的,它應當有助於實現組織的使命目標。
  2. Information security is an integral element of sound management.(資訊安全是健全管理的重要元素)
    • 資訊安全應當成為良好管理的不可或缺的一部分,它應當被整合到組織的管理體系中。
  3. Information security protections are implemented so as to be commensurate with risk.(資訊安全保護措施應與風險相符)
    • 資訊安全的保護措施應該根據實際風險程度來實施,以確保資源的適當分配。
  4. Information security roles and responsibilities are made explicit.(資訊安全角色和責任應明確)
    • 資訊安全的角色和責任應當被清晰地定義和指定,以確保各方了解其責任範圍。
  5. Information security responsibilities for system owners go beyond their own organization.(系統擁有者的資訊安全責任不僅限於其組織)
    • 系統擁有者的資訊安全責任應當超越其所屬組織,以確保系統的全面安全性。
  6. Information security requires a comprehensive and integrated approach.(資訊安全需要全面且整合的方法)
    • 資訊安全應當採用全面且相互整合的方法,以應對多方面的威脅和風險。
  7. Information security is assessed and monitored regularly.(資訊安全需要定期評估和監控)
    • 資訊安全應當定期接受評估和監控,以確保其有效性和持續性。
  8. Information security is constrained by societal and cultural factors.(資訊安全受社會和文化因素的制約)
    • 資訊安全受到社會和文化因素的影響和制約,這些因素可能影響安全政策和實踐的制定和執行。

資訊安全角色

角色 職責
Risk Executive Function (Senior Management) 制定跨整個組織的風險管理策略。
支援授權官員和其他高級領導人之間的資訊共享。
監督組織範圍內的風險管理活動。
Chief Executive Officer (CEO) 確保資訊安全措施與風險相符。
確保支持組織運營的資訊和系統具有適當的資訊安全防護。
確保受過培訓的人員遵守相關的資訊安全法律、政策、指令和標準。
Chief Information Officer (CIO) 將資訊安全管理流程與戰略和運營規劃流程相整合。
確保組織運營所使用的資訊和系統擁有適當的資訊安全防護。
確保組織全面實施資訊安全計劃。
Information Owner/Steward 制定管理特定資訊的政策和程序。
向系統擁有者提供有關保護特定資訊所需的安全要求和安全控制的意見。
Senior Agency Information Security Officer (SAISO) 實施組織範圍內的資訊安全計劃。
在需要時擔任授權官員指定代表或安全控制評估員的角色。
Authorizing Official (AO) 批准安全計劃、協議或諒解備忘錄、行動計劃和里程碑計劃。
確保授權官員指定代表執行與安全授權相關的所有活動和功能。
Authorizing Official Designated Representative 代表授權官員協調和執行與安全授權過程相關的日常活動。
準備最終的授權文件包,獲得授權官員的簽名,並將授權文件包提交給適當的組織官員。
Senior Agency Official for Privacy (SAOP) 確保機構實施資訊隱私保護措施,包括遵守聯邦法律、法規和政策。
監督機構的資訊隱私程序,以確保其全面和及時。
確保機構的員工和承包商接受有關資訊隱私法律、法規、政策和程序的適當培訓和教育。
Common Control Provider 開發、實施、評估和監控共同控制(由系統繼承的安全控制)。
在組織所要求的文件中記錄共同控制。
確保合格的評估員根據組織定義的適當獨立程度進行共同控制的評估。
System Owner 購置、開發、集成、修改、運營、維護和處置系統。
確保符合資訊安全要求。
制定和維護系統安全計劃,並確保系統按照約定的安全控制部署和運營。
System Security Officer (SSO) 確保系統保持適當的運營安全狀態。
協助制定安全政策和程序,並確保遵守這些政策和程序。
Information Security Architect 確保資訊安全要求在企業架構的所有方面得到充分解決,包括參考模型、段落和解決方案模型,以及支持這些任務和業務流程的系統。
在企業架構師和資訊安全工程師之間擔任聯絡人。
與系統擁有者、共同控制提供者和系統安全官員協調安全控制的分配。
System Security Engineer (SSE) 進行系統安全工程活動。
與資訊安全架構師、高級機構資訊安全官員、系統擁有者、共同控制提供者和系統安全官員協調與安全相關的活動。
Security Control Assessor 對系統內或由系統繼承的管理、運營和技術安全控制和控制增強採取全面的評估,以確定控制的總體有效性。
提供評估,識別系統和其環境中的弱點或缺陷。
建議紀錄發現的弱點的校正措施。
準備包含評估結果和發現的安全評估報告。
System Administrator 設置和維護系統或特定系統組件。
安裝、配置和更新硬體和軟體。
建立和管理使用者帳號。
監督備份和恢復任務。
實施技術安全控制。
User 遵守管理組織系統合理使用的政策。
僅為特定目的使用組織提供的IT資源。
報告異常或可疑的系統行為。
支援角色 審計師:負責檢查系統,確定系統是否滿足所述的安全要求和組織政策。
物理安全人員:負責制定和實施適當的物理安全控制,通常與資訊安全管理、程序和功能經理以及其他人協商。
災害恢復/應急計劃人員:負責應對整個組織的應急計劃,在需要時與程序和功能經理/應用程序擁有者、資訊安全人員等合作獲得額外的應急計劃支持。
品質保證人員:負責建立品質保證計劃,提高向客戶提供的產品和服務的品質。
採購辦公室人員:確保組織採購已經由相應的官員審查。
培訓辦公室人員:負責培訓使用者、操作人員和經理的資訊安全培訓。
人力資源:通常是確定特定職位是否需要安全背景調查的第一聯絡點。
風險管理/規劃人員:分析組織可能面臨的風險,通常關注組織風險問題,但也應考慮資訊安全相關的風險。
物理設施人員:負責確保提供了系統安全執行所需的服務,如電力和環境控制。
隱私辦公室人員:負責維護全面的隱私計劃,確保機構遵守適用的隱私要求,並管理隱私風險。

資訊安全風險管理

資訊安全風險管理是一個重要的過程,用來保護組織的運營、資產、個人和聲譽免受可能發生的風險威脅

步驟1:確定風險(Framing Risk)

風險管理的第一步是確定風險的上下文。這包括建立一個風險管理策略,明確組織如何評估、應對和監控風險。這也包括揭示組織在投資和運營決策中常常使用的風險看法。

步驟2:風險評估(Assessing Risk)

風險評估是分析組織風險的過程,包括威脅、弱點、潛在損害和損害發生的可能性。這有助於確定哪些風險對組織最具威脅性,以及如何優先處理它們。

步驟3:風險應對(Responding to Risk)

風險應對是根據風險評估的結果,制定應對措施的過程。這包括開發應對風險的替代方案、評估這些方案、確定符合組織風險容忍度的方案,並實施選定的方案。

步驟4:風險監控(Monitoring Risk)

風險監控是組織持續監視風險的過程,以確保風險控制措施的有效性。這包括驗證計劃的風險應對措施是否得以實施,以及確保資訊安全要求得以滿足。同時,還要識別對組織系統和環境的風險影響變化。

風險管理架構(Risk Management Framework)

為了幫助組織在系統級別管理資訊安全風險,NIST(美國國家標準與技術研究院)制定了風險管理架構(RMF)。這個架構強調實時風險管理和持續系統授權的概念,通過強大的持續監控流程來實現。RMF還提供了高級領導層必要的資訊,以便根據支持核心任務和業務功能的組織系統做出具有成本效益的、基於風險的決策,並將資訊安全整合到企業架構和系統開發生命週期(SDLC)中。

RMF的六個步驟

  1. 系統分類(System Categorization):根據影響分析,將系統和處理、儲存、傳輸的資訊進行分類。
  2. 安全控制選擇(Security Control Selection):基於安全分類,選擇初始的基本安全控制,並根據風險進行調整和補充。
  3. 安全控制實施(Security Control Implementation):實施安全控制,描述如何在系統和其操作環境中使用這些控制。
  4. 安全控制評估(Security Control Assessment):使用適當的評估程序評估安全控制,以確定控制是否正確實施、按照意圖運作,並滿足系統的安全要求。
  5. 系統授權(System Authorization):高級管理層根據安全控制評估的結果,正式授權系統運營或繼續運營,基於風險評估的風險是否可接受。
  6. 安全控制監控(Security Control Monitoring):持續監視系統中的安全控制,確保它們隨著系統和操作環境的變化而有效。包括評估控制的效能、記錄系統或操作環境的變更、進行風險影響分析以及向指定的組織官員報告安全狀態。

[問題諮詢] 007 後端工程師如何轉職攻擊型資安工作(滲透測試工程師為例)

飛飛 | 2024-01-10

滲透測試工程師

  • 初階/攻擊相關工作
  • 職位可以找滲透測試(PT)
  • 平均薪資
    • 三萬/四萬
    • 能力好五萬起跳

「從來不是工作難找 是薪水不滿意 XD」--飛

如果已經做好心理準備了,可以再往下看可以的學習路徑。

面試

  1. 通常會問你有沒有經驗
  2. 要你舉出常用的滲透測試工具

快速列舉幾個工具

  1. dirb/其他掃描系列都可以
  2. burpsuite
  3. nmap
  4. metasploit
  5. sqlmap
  6. 弱點掃描要會用+看 openvas/OWASP ZAP

關於經驗那件事情

實戰經驗最難得的是

前輩:我覺得這裡應該要這樣打、那樣打
新人:蛤~~

舉個例子

我們常常使用 nmap 但掃完之後會有沒有頭緒

但我們看到
smb 開了 3389 開了 ==> 快速知道這是 windows 電腦

再舉個例子

80 443 網頁打法
但有時候你如果把 nmap 開 -p- 或是用 rustscan
會發現 高port 會有測試網站

如何準備(免費)

準備(要錢)

  • 靶機
    • tryhackme
    • Hack the box VIP

需要知道什麼

  1. 了解滲透測試的流程
  2. 看得懂弱點掃描報告
  3. 靶機經驗也算經驗
    • 會使用工具
    • 會寫報告

case study

履歷加分-課金法

  • OSCP 原廠 1649 美金

[問題諮詢] 006 後端工程師該如何學習防禦技巧,以 SSDLC 為例

飛飛 | 2023-05-25

問題

如果想入門紅隊到進階大概要讀哪些材料的東西,我主要目的是防禦,而非入侵. 但是要會防禦,要知道如何入侵,我本身是後端開發工程師. 但這方面知識有點缺乏,之前有說想說可以透過考證照入門,但上課加考照費用太多了。

後端程式碼是 Java、框架是Spring Boot,防禦目標主要是個人設備,進階才是公開的網站。

回復

針對開發工程師,我通常建議閱讀 SSDLC 相關的內容,SSDLC 為安全的開發流程:

SSDLC(Secure Software Development Lifecycle)是一種安全的開發流程,旨在軟體開發生命周期的各個階段中,以安全為主導進行設計、開發、測試和部署。

開發工程師,如果透過 SSDLC,可以在自己開發的軟體、網站加入安全性的考量,也有助於降低被攻擊的風險。

SSDLC 的主要流程如下:

  1. 需求階段
  2. 設計階段
  3. 撰寫程式碼階段
  4. 測試階段
  5. 部署階段

每一個階段該注意的事情,我在底下分析給大家參考:

需求階段

確認軟體開發需求,"通常" PM 會告訴你需求,然後開發,但有時候隕石開發該怎麼辦?

◇ 在這裡跟大家建議,先確認整體 "資料流向" 再確認目前這些資料 "誰可以瀏覽、新增、刪除、修改",可以優先確認整體的 "權限" 問題。

為什麼這樣建議
我們在攻擊過程當中,無法被自動化弱點掃描找到的漏洞是 "程式邏輯" 相關的漏洞,最難防禦、影響最大的也是 "程式邏輯" 漏洞。

漏洞名稱包含 IDOR(權限控管相關的漏洞)、還有商業邏輯漏洞。

還需要確認什麼
你撰寫的程式,是否有【合規性的要求】:

  1. 如信用卡、金融卡,需要符合 PCI DSS 的標準,保護信用卡使用者的安全與保密需求。
  2. 金融單位合規,如《金融機構辦理電腦系統資訊安全評估辦法》
  3. 教育部委外辦理或補助建置維運伺服主機及應用系統網站資通安全及個人資料保護管理要點

設計需求

這個階段不外乎會繪製 UML 以及使用者等設計圖
也會透過透過威脅建模、風險評估,來設計安全架構。

威脅建模

  1. 哪些類型的攻擊可能對我們的系統造成危害?例如,網路攻擊、惡意軟體、內部威脅等。
  2. 哪些資產可能會被攻擊者盜取、損壞或破壞?例如,敏感客戶資料、財務資訊、知識產權等。
  3. 哪些漏洞可能被攻擊者利用來入侵系統?例如,弱密碼、未更新的軟體、網站注入漏洞等。
  4. 攻擊者可能會利用哪些方法來進入系統?例如,社交工程、網路釣魚、漏洞掃描等。
  5. 攻擊者可能會使用哪些工具或技術來發動攻擊?例如,網路滲透測試工具、惡意程式碼等。
  6. 攻擊者的能力和資源如何?例如,是否是有組織的犯罪團伙、國家支持的駭客、單一駭客等。
  7. 攻擊者的意圖是什麼?例如,竊取資訊、勒索贖金、破壞系統等。
  8. 什麼是最高風險的攻擊場景?例如,攻擊者成功取得了系統管理權限、大規模的數據洩露等。

撰寫程式碼階段

  1. 撰寫程式碼的過程
    • 根據需求撰寫安全功能
    • 紀錄所有第三方套件的版本
    • 不任意使用來路不明的工具
  2. 使用 ChatGPT 也要小心敏感資料外洩
  3. 常見的輸入輸出內容也需要注意
  4. 每一個模組都需要進行測試

測試階段

  1. 漏洞掃描(弱點掃描)
  2. 滲透測試

上線階段

  1. 部署過程要注意測試伺服器與正式伺服器
  2. 測試資料庫與正式資料庫
  3. .git 相關安全
  4. 監控上線
    • log 監控
    • 性能監控

[資安服務] 005 滲透測試報告撰寫

飛飛 | 2023-05-11

滲透測試

資安服務的一種,協助企業針對系統與網站確認是否有漏洞,並在測試之後提供一份報告。

目的

滲透測試報告的目的是總結測試過程中發現的漏洞,與提供改進建議,以幫助客戶提高網站/系統的安全性

常見大綱

  1. 封面和版權聲明
    • 包括報告的名稱、撰寫日期、版本和撰寫者資訊。
    • 客戶名稱、本次標的
  2. 摘要
    • 簡要概述測試的目的、範圍、方法和主要發現。
  3. 目的和範圍
    • 詳細說明本次滲透測試的目的、範圍和客戶的需求。
  4. 測試方法和流程
    • 描述在測試過程中使用的技術、方法和工具,例如掃描工具、依據規範、檢查項目等。
    • 時程表,何時開始掃描、開始檢測。
  5. 發現的漏洞和風險評估
    • 列出測試過程中發現的所有漏洞,並根據其嚴重性、影響範圍和風險評估對其進行分類和排序。
    • 每個漏洞應包括以下信息:
      • 漏洞名稱和描述
      • 漏洞種類
      • 嚴重性評分(如 CVSS 評分系統)
      • 影響的系統或元件
      • 測試過程中的過程與截圖
      • 潛在的風險和影響
  6. 修復建議和策略
    • 针對每個發現的漏洞,提供具體的修復建議和策略。
    • 強化的方向,如設定等。
  7. 結論
    • 總結整個滲透測試的過程和結果,強調最重要的發現和建議。
  8. 附件和參考資料
    • 提供相關的技術資料、截圖、日誌檔案等,以供客戶參考。

[資安工具] 003 SQLmap 介紹

飛飛 | 2023-05-02

SQLmap 是什麼?

SQLmap 是一個開源的滲透測試工具,可自動化檢測和利用 SQL 注入漏洞,並接管資料庫服務器。它具有強大的檢測引擎,許多特色功能,可供最終滲透測試人員使用,以及廣泛的開關範圍,從資料庫指紋識別,到從資料庫獲取資料,再到通過帶外連接存取底層檔案系統和在作業系統上執行命令。

為什麼使用SQLmap

在許多 Web 應用程式中,SQL 注入漏洞是常見的安全問題之一,因為它們使攻擊者可以通過操作資料庫中的資料進行損壞,甚至接管整個資料庫系統。SQLmap的主要目的是自動化檢測和利用這些漏洞,從而減輕滲透測試人員的工作負擔,節省時間和成本,並提高滲透測試的準確性和可靠性。

如何使用SQLmap?

SQLmap 可以在命令行中使用,根據需要添加不同的參數和選項。使用SQLmap的基本步驟如下:

a. 識別目標URL
b. 分析目標網站的漏洞和資料庫結構
c. 使用不同的技術和參數進行注入測試
d. 通過dumping和爆破等方式獲取目標資料庫中的資料
e. 利用out-of-band連接等方式進一步擴大攻擊面
f. 創建報告並整理測試結果。

SQLmap 參數 Usage 說明

英文 中文說明 中文敘述 英文原文敘述 較常使用的參數
Target 目標 至少必須提供其中一個選項來定義目標 At least one of these options has to be provided to define the target(s) -u
Request 請求 該選項可用於指定如何連接到目標URL These options can be used to specify how to connect to the target URL -r, -H, --data, --cookie
Optimization 優化 該選項可用於優化 sqlmap 的性能 These options can be used to optimize the performance of sqlmap -n, --batch, --threads, --eta, --timeout
Injection 注入 該選項可用於指定要測試的參數,提供自定義注入 payload 和可選的篡改腳本 These options can be used to specify which parameters to test for, provide custom injection payloads and optional tampering scripts -p, -D, -T, --level, --risk, --prefix, --suffix, --string, --hex
Detection 檢測 該選項可用於自定義檢測階段 These options can be used to customize the detection phase -f, --technique, --fresh-queries, --parse-errors
Techniques 技巧 該選項可用於微調特定 SQL 注入技巧的測試 These options can be used to tweak testing of specific SQL injection techniques --technique, --time-sec, --union-cols, --union-char, --udf-inject, --os-cmd, --os-shell, --tamper
Fingerprint 指紋 執行廣泛的 DBMS 版本指紋 Perform an extensive DBMS version fingerprint --fingerprint
Enumeration 列舉 該選項可用於列舉後端資料庫管理系統資訊,結構和包含在表中的資料 These options can be used to enumerate the back-end database management system information, structure and data contained in the tables -D, -T, -C, --exclude-sysdbs, --sql-query, --sql-shell, --sql-file
Brute force 暴力破解 該選項可用於運行暴力破解檢查 These options can be used to run brute force checks --common-tables, --common-columns, --common-file-read, --common-hashes, --privileges, --users, --passwords
User-defined function injection 自定義函數注入 該選項可用於創建自定義的用戶定義函數 These options can be used to create custom user-defined functions --udf-inject
File system access 檔案系統存取 該選項可用於存取後端資料庫管理系統底層檔案系統 These options can be used to access the back-end database management system underlying file system --file-read, --file-write, --file-dest, --file-filter, --file-dump
Operating system access 作業系統存取 該選項可用於存取後端資料庫管理系統底層作業系統 These options can be used to access the back-end database management system underlying operating system --os-shell, --os-pwn
Windows registry access Windows 註冊表存取 該選項可用於存取後端資料庫管理系統 Windows 註冊表 These options can be used to access the back-end database management system Windows registry --reg-read, --reg-write, --reg-del, --reg-key, --reg-value
General 一般設置 該選項可用於設置一些常規工作參數 These options can be used to set some general working parameters --batch, --time-sec, --delay, --level, --risk
Miscellaneous 其他 該選項不適用於任何其他類別 These options do not fit into any other category --update, --wizard, --alert, --beep, --tmp-dir

Options

參數 中文說明 英文原文 舉例
-h, --help 顯示基本幫助資訊並退出 Show basic help message and exit sqlmap -h
-hh 顯示進階幫助資訊並退出 Show advanced help message and exit sqlmap -hh
--version 顯示程式版本並退出 Show program's version number and exit sqlmap --version
-v VERBOSE 設定冗長度,0-6 級別 (預設為 1) Verbosity level: 0-6 (default 1) sqlmap -v 3

Target

參數 中文說明 英文原文 舉例
-u URL, --url=URL 指定目標 URL (例如 "https://blog.feifei.tw/vuln.php?id=1") Target URL (e.g. "https://blog.feifei.tw/vuln.php?id=1") sqlmap -u "https://blog.feifei.tw/vuln.php?id=1"
-d DIRECT 指定直接連線至資料庫的連線字串 Connection string for direct database connection sqlmap -d "mysql://root:password@localhost/testdb"
-l LOGFILE 從 Burp 或 WebScarab proxy 的日誌檔解析目標 Parse target(s) from Burp or WebScarab proxy log file sqlmap -l /path/to/proxy.log
-m BULKFILE 從文字檔案中掃描多個目標 Scan multiple targets given in a textual file sqlmap -m /path/to/targets.txt
-r REQUESTFILE 從檔案中載入 HTTP 請求 Load HTTP request from a file sqlmap -r /path/to/request.txt
-g GOOGLEDORK 將 Google Dork 結果作為目標 URL 處理 Process Google dork results as target URLs sqlmap -g "inurl:php?id="
-c CONFIGFILE 從 INI 設定檔載入選項 Load options from a configuration INI file sqlmap -c /path/to/config.ini

Request

參數 中文說明 英文原文 舉例
-A, --user-agent=AGENT 指定 HTTP User-Agent 標頭值 HTTP User-Agent header value --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0"
-H, --header=HEADER 指定額外的標頭 (例如 "X-Forwarded-For: 127.0.0.1") Extra header (e.g. "X-Forwarded-For: 127.0.0.1") --header="X-Forwarded-For: 127.0.0.1"
--method=METHOD 強制使用指定的 HTTP 方法 (例如 PUT) Force usage of given HTTP method (e.g. PUT) --method=PUT
--data=DATA 設定要通過 POST 送出的資料字串 (例如 "id=1") Data string to be sent through POST (e.g. "id=1") --data="id=1 and 1=1"
--param-del=PARAM_DELIM 指定用於分割參數值的字元 (例如 &) Character used for splitting parameter values (e.g. &) --param-del='&'
--cookie=COOKIE 指定 HTTP Cookie 標頭值 (例如 "PHPSESSID=a8d127e52ecb6a0d60f03c86a29a9d2a") HTTP Cookie header value (e.g. "PHPSESSID=a8d127e52ecb6a0d60f03c86a29a9d2a") --cookie="PHPSESSID=a8d127e52ecb6a0d60f03c86a29a9d2a"
--cookie-del=COOKIE_DELIM 指定用於分割 Cookie 值的字元 (例如 ; ) Character used for splitting cookie values (e.g. ; ) --cookie-del=';'
--live-cookies=LIVE_COOKIES 指定用於載入最新 Cookie 值的 Live cookies 檔案 Live cookies file used for loading up-to-date values --live-cookies=/path/to/live_cookies.txt
--load-cookies=LOAD_COOKIES 從 Netscape/wget 格式的檔案載入 Cookie File containing cookies in Netscape/wget format --load-cookies=/path/to/cookies.txt
--drop-set-cookie 忽略回應中的 Set-Cookie 標頭 Ignore Set-Cookie header from response --drop-set-cookie
--mobile 模擬智慧型手機的 HTTP User-Agent 標頭 Imitate smartphone through HTTP User-Agent header --mobile
--random-agent 隨機選擇 HTTP User-Agent 標頭值 Use randomly selected HTTP User-Agent header value --random-agent
--host=HOST 指定 HTTP Host 標頭值 HTTP Host header value --host=www.feifei.tw
--referer=REFERER 指定 HTTP Referer 標頭值 HTTP Referer header value --referer=https://www.google.com/
--headers=HEADERS 指定額外的標頭 (例如 "Accept-Language: fr\nETag: 123") Extra headers (e.g. "Accept-Language: fr\nETag: 123") --headers="Accept-Language: fr\nETag: 123"
--auth-type=AUTH_TYPE 指定 HTTP 驗證類型 (Basic、Digest、NTLM 或 PKI) HTTP authentication type (Basic, Digest, NTLM or PKI) --auth-type=Digest
--auth-cred=AUTH_CRED 指定 HTTP 認證類型 (Basic、Digest、NTLM 或 PKI) HTTP authentication type (Basic, Digest, NTLM or PKI) --auth-cred=Digest
--auth-cred=AUTH_CRED HTTP 認證帳號密碼 (帳號:密碼) HTTP authentication credentials (name:password) --auth-cred=admin:password
--auth-file=AUTH_FILE HTTP 認證 PEM 憑證/私鑰檔案 HTTP authentication PEM cert/private key file --auth-file=/path/to/auth.pem
--ignore-code=IGNORE_CODE 忽略 (有問題的) HTTP 錯誤碼 (例如 401) Ignore (problematic) HTTP error code (e.g. 401) --ignore-code=401
--ignore-proxy 忽略系統預設代理伺服器設定 Ignore system default proxy settings --ignore-proxy
--ignore-redirects 忽略重新導向嘗試 Ignore redirection attempts --ignore-redirects
--ignore-timeouts 忽略連線逾時 Ignore connection timeouts --ignore-timeouts
--proxy=PROXY 使用代理伺服器連線到目標 URL Use a proxy to connect to the target URL --proxy=https://localhost:8080
--proxy-cred=PROXY_CRED 代理伺服器認證帳號密碼 (帳號:密碼) Proxy authentication credentials (name:password) --proxy-cred=username:password
--proxy-file=PROXY_FILE 從檔案載入代理伺服器清單 Load proxy list from a file --proxy-file=proxies.txt
--proxy-freq=PROXY_FREQ 從指定清單中更改代理伺服器的間隔請求次數 Requests between change of proxy from a given list --proxy-freq=10
--tor 使用 Tor 匿名網路 Use Tor anonymity network --tor
--tor-port=TOR_PORT 設定 Tor 代理伺服器連接埠,非預設值 Set Tor proxy port other than default --tor-port=9050
--tor-type=TOR_TYPE 設定 Tor 代理伺服器類型 (HTTP、SOCKS4 或 SOCKS5 (預設值)) Set Tor proxy type (HTTP, SOCKS4 or SOCKS5 (default)) --tor-type=SOCKS5
--check-tor 檢查是否正確使用 Tor Check to see if Tor is used properly --check-tor
--delay=DELAY 每個 HTTP 請求之間的延遲秒數 Delay in seconds between each HTTP request --delay=5
--timeout=TIMEOUT 等待連接超時的秒數 (預設為 30 秒) Seconds to wait before timeout connection (default 30) --timeout=60
--retries=RETRIES 連線逾時時的重試次數 (預設為 3 次) Retries when the connection timeouts (default 3) --retries=5
--randomize=RPARAM 隨機變更指定參數的值 Randomly change value for given parameter(s) --randomize=param1,param2
--safe-url=SAFEURL 在測試期間經常存取的 URL 地址 URL address to visit frequently during testing --safe-url=https://www.feifei.tw
--safe-post=SAFE_POST_DATA 發送到安全 URL 的 POST 資料 POST data to send to a safe URL --safe-post='username=admin&password=password123'
--safe-req=SAFE_REQUEST_FILE 從檔中加載安全 HTTP 請求 Load safe HTTP request from a file --safe-req=/path/to/safe_request.txt
--safe-freq=SAFE_REQUEST_INTERVAL 存取安全 URL 之間的常規請求 Regular requests between visits to a safe URL --safe-freq=10
--skip-urlencode 跳過有效 payload 資料的 URL 編碼 Skip URL encoding of payload data --skip-urlencode
--csrf-token=CSRFPARAM 用於保存防 CSRF 權杖(token)的參數 Parameter used to hold anti-CSRF token --csrf-token=csrf_token
--csrf-url=CSRFURL 用於提取防 CSRF 權杖(token)的 URL 地址 URL address to visit for extraction of anti-CSRF token --csrf-url=https://www.feifei.tw/csrf
--csrf-method=CSRFPARAM 防 CSRF 權杖(token)頁面存取時使用的 HTTP 方法 HTTP method to use during anti-CSRF token page visit --csrf-method=POST
--csrf-retries=CSRFRETRIES 擷取防 CSRF 權杖(token)時的重試次數 (預設為 0 次) Retries for anti-CSRF token retrieval (default 0) --csrf-retries=3
--force-ssl 強制使用 SSL/HTTPS Force usage of SSL/HTTPS --force-ssl
--chunked 使用 HTTP 分塊傳輸編碼 (POST) 請求 Use HTTP chunked transfer encoded (POST) requests --chunked
--hpp 使用 HTTP 參數污染方法 Use HTTP parameter pollution method --hpp
--eval=EVALCODE 在請求之前評估提供的 Python 程式碼 (例如 "import hashlib;id2=hashlib.md5(id).hexdigest()") Evaluate provided Python code before the request (e.g. "import hashlib;id2=hashlib.md5(id).hexdigest()") --eval="import hashlib;id2=hashlib.md5(id).hexdigest()"

Optimization

參數 中文說明 英文原文 舉例
-o 啟用所有優化開關 Turn on all optimization switches -o
--predict-output 預測常見的查詢輸出 Predict common queries output --predict-output
--keep-alive 使用持久化的 HTTP(s) 連線 Use persistent HTTP(s) connections --keep-alive
--null-connection 不回傳實際 HTTP 回應體的頁面長度 Retrieve page length without actual HTTP response body --null-connection
--threads=THREADS 最大同時執行的 HTTP(s) 請求數 (預設為 1) Max number of concurrent HTTP(s) requests (default 1) --threads=10

Injection

參數 中文說明 英文原文 舉例
-p TESTPARAMETER 指定測試的參數 Testable parameter(s) -p id
--skip=SKIP 跳過指定的參數 Skip testing for given parameter(s) --skip=password
--skip-static 跳過看起來不是動態的參數 Skip testing parameters that not appear to be dynamic --skip-static
--param-exclude=REGEX 排除不測試的參數的正則表達式 Regexp to exclude parameters from testing (e.g. "ses") --param-exclude="(PHPSESSID|JSESSIONID)"
--param-filter=PARAMETER_FILTER 選擇測試的參數類型 (GET, POST, COOKIE 等) Select testable parameter(s) by place (e.g. "POST") --param-filter=GET
--dbms=DBMS 強制指定後端資料庫管理系統 Force back-end DBMS to provided value --dbms=mysql
--dbms-cred=DBMS_CREDENTIALS 資料庫管理系統認證憑證 (使用者:密碼) DBMS authentication credentials (user:password) --dbms-cred=root:toor
--os=OS 強制指定後端資料庫管理系統的作業系統 Force back-end DBMS operating system to provided value --os=Linux
--invalid-bignum 使用大數字來無效化值 Use big numbers for invalidating values --invalid-bignum
--invalid-logical 使用邏輯運算來無效化值 Use logical operations for invalidating values --invalid-logical
--invalid-string 使用隨機字串來無效化值 Use random strings for invalidating values --invalid-string
--no-cast 關閉有效 payload 資料轉換機制 Turn off payload casting mechanism --no-cast
--no-escape 關閉字串轉義機制 Turn off string escaping mechanism --no-escape
--prefix=PREFIX 注入有效 payload 的前綴字串 Injection payload prefix string --prefix="'
--suffix=SUFFIX 注入有效 payload 的後綴字串 Injection payload suffix string --suffix=#
--tamper=TAMPER 在注入資料前使用指定的 Python 程式碼 Use given script(s) for tampering injection data --tamper=apostrophemask.py
--technique=TECHNIQUES 要使用的 SQL 注入技術 (預設為 "BEUSTQ") SQL injection techniques to use (default "BEUSTQ") --technique=BEUST
--time-sec=TIMESEC 延遲 DBMS 回應的秒數 (預設為 5 秒) Seconds to delay the DBMS response (default 5) --time-sec=10
--union-cols=UCOLS 要測試 UNION 查詢 SQL 注入的欄位範圍 Range of columns to test for UNION query SQL injection --union-cols=1-5
--union-char=UCHAR 用於猜解欄位元數的字元 Character to use for bruteforcing number of columns `--

Detection

參數 中文說明 英文原文 舉例
--level=LEVEL 指定測試級別 (1-5, 預設為 1) Level of tests to perform (1-5, default 1) --level=5
--risk=RISK 指定測試風險等級 (1-3, 預設為 1) Risk of tests to perform (1-3, default 1) --risk=2
--string=STRING 當 SQL 語句執行結果為真時,要匹配的字串 String to match when query is evaluated to True --string="Welcome admin"
--not-string=NOTSTRING 當 SQL 語句執行結果為假時,要匹配的字串 String to match when query is evaluated to False --not-string="Access denied"
--regexp=REGEXP 當 SQL 語句執行結果為真時,要匹配的正則表達式 Regexp to match when query is evaluated to True --regexp="(true|1)"
--code=CODE 當 SQL 語句執行結果為真時,要匹配的 HTTP 狀態碼 HTTP code to match when query is evaluated to True --code=200
--smart 只在存在正向啟發時執行徹底的測試 Perform thorough tests only if positive heuristic(s) --smart
--text-only 僅基於文字內容比較頁面 Compare pages based only on the textual content --text-only
--titles 僅比較頁面標題 Compare pages based only on their titles --titles

Techniques

參數 中文說明 英文原文 舉例
--technique=TECH 指定使用的 SQL 注入技術(預設為 "BEUSTQ") SQL injection techniques to use (default "BEUSTQ") --technique=U
--time-sec=TIMESEC 設定 DBMS 回應延遲的秒數(預設為 5 秒) Seconds to delay the DBMS response (default 5) --time-sec=10
--union-cols=UCOLS 設定在 UNION 查詢中測試的欄位範圍 Range of columns to test for UNION query SQL injection --union-cols=1-5
--union-char=UCHAR 設定用於測試欄位數的字元 Character to use for bruteforcing number of columns --union-char=^
--union-from=UFROM 設定在 UNION 查詢中使用的表格名稱 Table to use in FROM part of UNION query SQL injection --union-from=users
--dns-domain=DNS 設定在 DNS 洩漏攻擊中使用的功能變數名稱 Domain name used for DNS exfiltration attack --dns-domain=attacker.com
--second-url=SECURL 設定在二次注入攻擊中搜索的結果頁面 URL Resulting page URL searched for second-order response --second-url=https://blog.feifei.tw/dashboard.php
--second-req=SECREQ 從檔案載入二次注入攻擊的 HTTP 請求 Load second-order HTTP request from file --second-req=second-order-request.txt

Enumeration

參數 中文說明 英文原文 舉例
-a, --all 擷取所有資料 Retrieve everything -a
-b, --banner 擷取 DBMS 標語 Retrieve DBMS banner -b
--current-user 擷取目前使用者 Retrieve DBMS current user --current-user
--current-db 擷取目前資料庫 Retrieve DBMS current database --current-db
--hostname 擷取 DBMS 主機名稱 Retrieve DBMS server hostname --hostname
--is-dba 檢測目前使用者是否為 DBA Detect if the DBMS current user is DBA --is-dba
--users 列舉 DBMS 使用者 Enumerate DBMS users --users
--passwords 列舉 DBMS 使用者密碼雜湊 Enumerate DBMS users password hashes --passwords
--privileges 列舉 DBMS 使用者權限 Enumerate DBMS users privileges --privileges
--roles 列舉 DBMS 使用者角色 Enumerate DBMS users roles --roles
--dbs 列舉 DBMS 資料庫 Enumerate DBMS databases --dbs
--tables 列舉 DBMS 資料庫表格 Enumerate DBMS database tables --tables
--columns 列舉 DBMS 資料庫表格欄位元 Enumerate DBMS database table columns --columns
--schema 列舉 DBMS schema Enumerate DBMS schema --schema
--count 擷取表格中的資料筆數 Retrieve number of entries for table(s) --count
--dump 列出 DBMS 資料庫表格內容 Dump DBMS database table entries --dump
--dump-all 列出所有 DBMS 資料庫表格內容 Dump all DBMS databases tables entries --dump-all
--search 搜尋欄位元、表格或資料庫名稱 Search column(s), table(s) and/or database name(s) --search
--comments 列舉資料庫註解 Check for DBMS comments during enumeration --comments
--statements 擷取 DBMS 所執行的 SQL 陳述式 Retrieve SQL statements being run on DBMS --statements
-D DB 指定 DBMS 要枚舉的資料庫 DBMS database to enumerate -D database_name
-T TBL 指定要枚舉的資料表 DBMS database table(s) to enumerate -T table_name
-C COL 指定要枚舉的資料表欄位 DBMS database table column(s) to enumerate -C column_name
-X EXCLUDE 指定不要枚舉的資料庫標識符 DBMS database identifier(s) to not enumerate -X database_identifier
-U USER 指定要枚舉的使用者 DBMS user to enumerate -U user_name
--exclude-sysdbs 枚舉資料表時排除 DBMS 系統資料庫 Exclude DBMS system databases when enumerating tables --exclude-sysdbs
--pivot-column=PNAME 指定當進行資料表樞紐分析時要使用的欄位 Pivot column name --pivot-column=column_name
--where=DUMPWHERE 在列出資料表時使用 WHERE 條件式 Use WHERE condition while table dumping --where="column_name='value'"
--start=LIMITSTART 設定要列出的第一個資料表項目 First dump table entry to retrieve --start=10
--stop=LIMITSTOP 設定要列出的最後一個資料表項目 Last dump table entry to retrieve --stop=20
--first=FIRSTCHAR 設定要列出的查詢輸出的第一個單詞的字元 First query output word character to retrieve --first=1
--last=LASTCHAR 設定要列出的查詢輸出的最後一個單詞的字元 Last query output word character to retrieve --last=10
--sql-query=SQLQUERY 指定要執行的 SQL 查詢語句 SQL statement to be executed --sql-query="SELECT * FROM table_name"
--sql-shell 使用互動式 SQL shell Prompt for an interactive SQL shell --sql-shell
--sql-file=SQLFILE 從指定的檔執行 SQL 查詢語句 Execute SQL statements from given file(s) --sql-file=query_file.sql

Brute force

參數 中文說明 英文原文 舉例
--common-tables 檢查常見的資料表是否存在 Check existence of common tables --common-tables
--common-columns 檢查常見的欄位是否存在 Check existence of common columns --common-columns
--common-files 檢查常見的檔案是否存在 Check existence of common files --common-files

User-defined function injection

參數 中文說明 英文原文 舉例
--udf-inject 注入自訂的使用者定義函數 Inject custom user-defined functions --udf-inject=udf_lib.so
--shared-lib=SHLIB 載入共用庫文件 Local path of the shared library --shared-lib=/tmp/udf_lib.so

File system acces

參數 中文說明 英文原文 舉例
--file-read=FILEPATH 從資料庫檔案系統中讀取文件 Read a file from the back-end DBMS file system --file-read=/etc/passwd
--file-write=FILEPATH 將本地檔寫入資料庫檔系統中 Write a local file on the back-end DBMS file system --file-write=local_file.txt
--file-dest=FILEPATH 設定在資料庫檔系統中寫入檔的目標位置 Back-end DBMS absolute filepath to write to --file-dest=/var/www/html/shell.php

Operating system access

參數 中文說明 英文原文 舉例
--os-cmd=COMMAND 在資料庫伺服器上執行系統命令 Execute an operating system command --os-cmd="ls -la"
--os-shell 在資料庫伺服器上啟動一個互動式 shell Prompt for an interactive operating system shell --os-shell
--os-pwn 啟動一個 Out-Of-Band (OOB) shell 或 Meterpreter Prompt for an OOB shell, Meterpreter or VNC --os-pwn
--os-smbrelay 啟動一個 Out-Of-Band (OOB) shell 或 Meterpreter,並透過 SMB Relay One click prompt for an OOB shell, Meterpreter or VNC --os-smbrelay
--os-bof 將資料庫上的 Stored Procedure Buffer Overflow 漏洞利用 Stored procedure buffer overflow exploitation --os-bof
--priv-esc 提升資料庫進程的使用者權限 Database process user privilege escalation --priv-esc
--msf-path=MSFPATH 指定 Metasploit 框架的路徑 Local path where Metasploit Framework is installed --msf-path=/opt/metasploit
--tmp-path=TMPPATH 指定遠端系統的臨時檔目錄 Remote absolute path of temporary files directory --tmp-path=/var/tmp/

Windows registry access

參數 中文說明 英文原文 舉例
--reg-read 讀取 Windows 註冊表鍵值 Read a Windows registry key value --reg-read
--reg-add 寫入 Windows 註冊表鍵值資料 Write a Windows registry key value data --reg-add
--reg-del 刪除 Windows 註冊表鍵值 Delete a Windows registry key value --reg-del
--reg-key=REGKEY Windows 註冊表鍵 Windows registry key --reg-key="HKLM\SOFTWARE\Microsoft"
--reg-value=REGVAL Windows 註冊表鍵值 Windows registry key value --reg-value=Version
--reg-data=REGDATA Windows 註冊表鍵值資料 Windows registry key value data --reg-data=12
--reg-type=REGTYPE Windows 註冊表鍵值類型 Windows registry key value type --reg-type=REG_DWORD

General

參數 中文說明 英文原文 舉例
-s SESSIONFILE 從已存的 (.sqlite) 檔案載入 session Load session from a stored (.sqlite) file -s session.sqlite
-t TRAFFICFILE 將所有 HTTP 流量記錄到文字檔案 Log all HTTP traffic into a textual file -t traffic.txt
--answers=ANSWERS 設定預先定義的回答 (e.g. "quit=N,follow=N") Set predefined answers (e.g. "quit=N,follow=N") --answers=quit=N,follow=Y
--base64=BASE64PARAMETER 包含 Base64 編碼資料的參數 Parameter(s) containing Base64 encoded data --base64=auth=bG9naW46cGFzc3dvcmQ=
--base64-safe 使用 URL 和檔案名稱安全的 Base64 字母表 (RFC 4648) Use URL and filename safe Base64 alphabet (RFC 4648) --base64-safe
--batch 永遠不要詢問使用者輸入,使用預設行為 Never ask for user input, use the default behavior --batch
--binary-fields=BINARYFIELDS 有二進位值的結果欄位 (e.g. "digest") Result fields having binary values (e.g. "digest") --binary-fields=digest,cookie
--check-internet 評估目標之前,檢查網路連線 Check Internet connection before assessing the target --check-internet
--cleanup 從資料庫中刪除 sqlmap 特定的 UDF 和表格 Clean up the DBMS from sqlmap specific UDF and tables --cleanup
--crawl=CRAWLDEPTH 從目標 URL 開始爬網站 Crawl the website starting from the target URL --crawl=3
--crawl-exclude=CRAWLEXCLUDE 排除某些網頁不要爬 Regexp to exclude pages from crawling (e.g. "logout") --crawl-exclude=logout
--csv-del=CSVDEL CSV 輸出時使用的分隔符號號 (預設為 ",") Delimiting character used in CSV output (default ",") --csv-del=";"
--charset=CHARSET Blind SQL injection 字元集 (e.g. "0123456789abcdef") Blind SQL injection charset (e.g. "0123456789abcdef") --charset=utf8
--dump-format=DUMPFORMAT 列出資料的格式 (CSV (預設), HTML 或 SQLITE) Format of dumped data (CSV (default), HTML or SQLITE) --dump-format=HTML
--encoding=ENCODING 取回資料時使用的字元編碼 (e.g. GBK) Character encoding used for data retrieval (e.g. GBK
--eta 每個輸出顯示預計到達時間 Display for each output the estimated time of arrival --eta
--flush-session 刷新當前目標的 session 文件 Flush session files for current target --flush-session
--forms 解析和測試目標 URL 上的表單 Parse and test forms on target URL --forms
--fresh-queries 忽略已儲存在會話文件中的查詢結果 Ignore query results stored in session file --fresh-queries
--gpage=GOOGLEPAGE 從指定頁面使用 Google dork 結果 Use Google dork results from specified page number --gpage=2
--har=HARFILE 將所有 HTTP 流量記錄到 HAR 檔中 Log all HTTP traffic into a HAR file --har=/path/to/file.har
--hex 使用 16 進制轉換來檢索資料 Use hex conversion during data retrieval --hex
--output-dir=OUTPUT_DIR 自定義輸出目錄路徑 Custom output directory path --output-dir=/path/to/directory
--parse-errors 解析並顯示來自回應的 DBMS 錯誤消息 Parse and display DBMS error messages from responses --parse-errors
--preprocess=PREPROCESS 使用給定的腳本進行預處理(請求) Use given script(s) for preprocessing (request) --preprocess=/path/to/script
--postprocess=POSTPROCESS 使用給定的腳本進行後處理(回應) Use given script(s) for postprocessing (response) --postprocess=/path/to/script
--repair 重新 dump 具有未知字元標記(?)的條目 Redump entries having unknown character marker (?) --repair
--save=SAVECONFIG 將選項保存到配置 INI 檔 Save options to a configuration INI file --save=/path/to/file.ini
--scope=SCOPE 正則表達式篩選目標 Regexp for filtering targets --scope=https://blog.feifei.tw
--skip-heuristics 跳過啟發式偵測 SQLi/XSS 漏洞 Skip heuristic detection of SQLi/XSS vulnerabilities --skip-heuristics
--skip-waf 跳過啟發式偵測 WAF/IPS 保護 Skip heuristic detection of WAF/IPS protection --skip-waf
--table-prefix=TABLE_PREFIX 設置暫存表的前綴 Prefix used for temporary tables (default: "sqlmap") --table-prefix=myapp_
--test-filter=TEST_FILTER 通過 payload 和/或標題選擇測試 Select tests by payloads and/or titles (e.g. ROW) --test-filter="AND(SELECT 1 FROM DBMS_RANDOM)='"
--test-skip=TEST_SKIP 通過 payload 和/或標題跳過測試 Skip tests by payloads and/or titles (e.g. BENCHMARK) --test-skip="AND (SELECT * FROM mytable)='"
--web-root=WEB_ROOT 設置網站根目錄 Web server document root directory (e.g. "/var/www") --web-root=/var/www/html/

Miscellaneous

參數 中文說明 英文原文 舉例
-z MNEMONICS 使用短記憶體技巧 (e.g. "flu,bat,ban,tec=EU") Use short mnemonics (e.g. "flu,bat,ban,tec=EU") -z flu,bat,ban,tec=EU
--alert=ALERT 在發現 SQL 注入時執行主機 OS 命令 Run host OS command(s) when SQL injection is found --alert="ls -la"
--beep 當發現 SQLi/XSS/FI 時發出嗶聲 Beep on question and/or when SQLi/XSS/FI is found --beep
--dependencies 檢查是否缺少 (選用的) sqlmap 依賴項 Check for missing (optional) sqlmap dependencies --dependencies
--disable-coloring 禁用控制台輸出顏色 Disable console output coloring --disable-coloring
--list-tampers 顯示可用的篡改腳本列表 Display list of available tamper scripts --list-tampers
--offline 在離線模式下工作 (僅使用會話資料) Work in offline mode (only use session data) --offline
--purge 安全地從 sqlmap 資料目錄中刪除所有內容 Safely remove all content from sqlmap data directory --purge
--results-file=RESULTS_FILE CSV 結果檔在多目標模式下的位置 Location of CSV results file in multiple targets mode --results-file=/path/to/results.csv
--shell 提示進入互動式 sqlmap shell Prompt for an interactive sqlmap shell --shell
--tmp-dir=TMPDIR 儲存臨時檔的本地目錄 Local directory for storing temporary files --tmp-dir=/path/to/tmpdir
--unstable 調整不穩定連接的選項 Adjust options for unstable connections --unstable
--update 更新 sqlmap Update sqlmap --update
--wizard 簡單的向導介面供初學者使用 Simple wizard interface for beginner users --wizard

[安裝教學] 007 安裝 XAMPP (Windows、MAC)

飛飛 | 2023-04-29

環境安裝 - Windows 安裝 XAMPP 的注意事項

  • XAMPP 是一個 PHP 的集合開發環境,會選擇 XAMPP 作為這次的練習環境是因為其中已經包含了 Apache + MySQL + PHP
  • 下載 XAMPP: XAMPP
  • 安裝 XAMPP:
    • 只保留 Apache、MySQL、PHP、phpMyadmin,其他的都不要勾選:

      Windows XAMPP install

  • 看到控制介面及代表 XAMPP 安裝成功:

    Windows XAMPP control panel

  • 開啟 Apache 跟 MySQL 的服務:

    Windows XAMPP start Apache and MySQL

  • 開啟瀏覽器,輸入網址: http://localhost,如果看到以下畫面,就代表 Apache 啟動成功:

    Windows XAMPP index

For Mac

  • 雖然我們可以直接安裝課程會需要的 Apache2, MySQL, PHP,但由於課程需求,會希望可以一樣有 XAMPP 的環境,好在 XAMPP 本來就有 Mac 的版本,而且已經有支援 Aarm 的 M1, M2 CPU 了,因此可以直接安裝。

  • 下載之後直接點會拿到 Mac 的 .dmg 安裝檔,點擊裡面的 installer 就會看到 xampp 的安裝畫面了。


  • MacOS 的 XAMPP 的選項中並沒有如 Windows 中的套件選擇,基本上就是如圖所示一個 XAMPP core files 一個 XAMPP developer files,其中 core files 裡面包含了我們需要的 Apache2, MySQL, PHP 等等檔案,而 developer files 則是常見的開發輔助套件,基本上兩個都勾選就好。

  • 之後就是一路往下一步就對了,直到最後安裝完成,Launch XAMPP 之後,如果看到如下畫面就代表安裝成功了。

  • 管理服務的畫面則是在 Manage Servers 裡面,可以看到有 Apache Web Server 等等服務的編輯畫面,並且可以看到 Apache 已經在運作了,因此我們查看 localhost 有沒有看到 Apache 的預設頁面,如果也看到了,就代表環境跟安裝都沒有問題了。


  • 今天的課程還會用到 phpmyadmin,但 Mac 版本的 XAMPP 沒有安裝,因此要另外安裝 phpmyadmin,先去 phpMyAdmin 的官網 https://www.phpmyadmin.net/ 下載最新的 phpMyAdmin,並且解壓縮。

  • 打開熟悉的 Terminal 並且使用下面 sudo mv ~/Downloads/phpMyAdmin-5.2.0-all-languages/ /Library/WebServer/Documents/phpmyadmin/ 將 phpmyadmin 將資料複製到 /Library/WebServer/Documents/ 底下,在瀏覽器中輸入 http://localhost/phpmyadmin/ 就會看到 phpmyadmin 的畫面了。

Ref

補充知識

  • MariaDB 是 MySQL 的分支,可以想像成以 MySQL 為基礎,再加上一些功能的社群開發版本,因此 MariaDB 的 API 和 協定 都是相容 MySQL。

[問題諮詢] 005 如何學習數位鑑識、事件調查(DFIR)

飛飛 | 2023-03-31

前言

雖然仍然不是數位鑑識與事件調查的專家,但偶而還是會看一下相關的書籍,或是在求學過程中有幸可以參加相關的課程,真的很感謝這些講師提供課程。

本文簡單介紹 DFIR 範疇與相關的資源與學習方向。

關鍵字

  • 數位鑑識(Digital Forensics, DF)
    • 數位鑑識是 forensic science 的範疇,forensic science 鑑識科學是一種利用科學手段處理、解決與司法體系利益相關問題的科學。其主要針對刑事及民事案件。[1]
  • 事件調查(Incident Response,IR)
    • NIST SP800-61 R2
      • Computer Security Incident Handling Guide
      • 提供資安事件回應的指導方針,如何分析事件數據和確定每個事件的適當回應。
      • 幫助企業建立資安事件回應能力,並有效地處理事件。
      • 指導方針不限於特定的硬體平台、作業系統、協定或應用程式。

IR 學習流程[2]

  1. 時間軸分析:在資安事件發生後,調查入侵過程的時間軸,將事件串連成線,以得到完整的攻擊過程,快速判定可用於後續分析的資訊。
  2. 關鍵字搜尋:利用關鍵字快速搜尋與過濾,從大量記錄中找出可疑的記錄,再進行前後比對或分析,找出資安攻擊的源頭。
  3. 統計及頻率分析:透過統計分析的方法,找出系統運作的正常平均值,再比對資安事件發生時各系統的數值,判定是否異常,以找出被入侵的系統源頭。
  4. 方向性分析:分析資安攻擊的方向性,由外而內或由內而外,以確定調查方向。

相關資源

參考資料

[新手入門] 004 學習網路概論的技巧

飛飛 | 2023-03-29

前言

網路概論是網路安全與網站安全最重要的基礎內容,但有時候拿起學校的「網路概論」的課程就覺得非常難懂,甚至不想讀下去。

在這裡建議新手閱讀這些書籍的時候,可以帶著「問題」去找答案。

當然,你還是可以從一本網路基礎概論裡面下手去把所有的知識補完。

新手可以嘗試的問題

一、使用一台電腦到可以透過瀏覽器需要哪一些設備或流程

雖然看起來很很硬核的題目,但可以分隔出來目前自己有哪些基礎知識尚未補齊。

使用筆電 > 開啟 WiFi > 手機開啟基地台 > 連到該基地台 > 可以正常上網

假設你說出以上的內容,那你可以開始深度挖掘裡面的內容:

  1. WiFi 是什麼
  2. 為什麼手機網路開基地台,就可以使用網路
  3. 基地台的原理是什麼

家裡有中華電信的網路 > 會連到一台黑色的盒子 > 從盒子插了一條網路線 > 網路線連到我的桌電

以上面為例子,

  1. 中華電信的網路是什麼?
  2. 黑色的盒子是什麼?他做了什麼事情?
  3. 網路線是什麼,裡面有很多顏色
  4. 網路線連到我的電腦,那個孔是什麼?

二、為什麼開瀏覽器,輸入網址可以看到,網頁的內容

  1. 瀏覽器是什麼
  2. 網頁是什麼
  3. 網址是什麼

規劃

原本希望可以設計出 52 個問題,利用一年把網路概論打好基礎,但偷偷說,其實上述的第二題就可以把一整個網路世界慢慢摸清楚了。

正常的網路入門

不外乎就是從什麼是協定、OSI 模型、TCP/IP 模型,到網路封包、每一層的細節以及網路建置等內容。