滲透測試之Web安全

寫在前面:

  1. 滲透測試包含但不限於Web安全
  2. 滲透測試並不相當於Web滲透
  3. Web安全學習是入門滲透測試最容易的途徑,門檻最低

Web安全入門:

  1. 基礎入門
  2. 整體框架
  3. SQL注入
  4. XSS攻擊
  5. 業務邏輯漏洞
  6. 程式碼審計
  7. 安全編程

如何學習(學習的路線):

  1. web 的基礎知識(重要)
  2. 漏洞原理
    SQL、XSS、文件上傳、CSRF、SSRF、XXE等
  3. 編程能力(重要)
  4. 實戰練習
    實戰練習是從頭貫穿到尾的

下面從幾個方面具體說明

一、基礎知識(雜/亂)

需要的基礎知識包括但不限於以下幾點:

  1. 編程基礎                      主要指腳本語言,比如PHP、Python
  2. 網路常識                      電腦網路(大學教材), 電腦網路自頂向下的方法(外國著作)
  3. 伺服器的基本使用        Linux/Windows(Linux 是重點)  ,基本命令(鳥哥的 Linux 私房菜), 部署Web伺服器
  4. 基礎軟體的使用           VMware、資料庫
  5. 電腦基礎(軟/硬體)軟體部分主要指作業系統,進程、執行緒等,硬體部分主要包括記憶體、CPU、網卡

以上五點之中,前三點很重要!

二、程式語言

  1. PHP/JSP/ASPX
  2. Python
  3. HTML
  4. JavaScript

前期推薦學 PHP、Python。HTML 和 CSS 了解、能夠看懂並寫簡單的 HTML 程式碼。JavaScript 要重點掌握。

實際應用:

  1. 程式碼審計
  2. 安全開發
  3. 安全運維

三、網路基礎

  1. OSI 七層參考模型
  2. TCP/IP 模型

把握以下重點:

  1. TCP 協議
  2. IP 協議
  3. HTTP 協議
  4. DNS 協議

學會使用工具:

  1. wireshark      主要分析基於 TCP/IP 協議底層的數據包
  2. burpsuit         主要分析 HTTP 協議的數據包
  3. nmap             埠掃描
  4. OWASP         目錄爆破

一定一定要知道原理,不然這是一個腳本小子,知識面的大小決定攻擊面的大小,原理很重要!

三、伺服器的基本使用

  1. Linux/Windows
  2. 基礎命令
  3. 環境搭建

推薦書籍: 鳥哥的 Linux 私房菜,篇幅較長可以當工具書來查閱,但是最好多翻一翻。

四、整體框架

常見的 Web 漏洞:

  1. SQL 注入
  2. 文件上傳
  3. 文件包含
  4. 命令執行
  5. XSS
  6. CSRF
  7. SSRF
  8. XXE
  9. 中間件安全
  10. 業務邏輯漏洞
  11. 常見框架漏洞

以下為幾個重點的:

 

1. SQL 注入(建議首先要掌握的漏洞)

掌握:

資料庫的增刪改查

了解:
關係型資料庫 MySQL/MSSQL/Oracle
非關係型資料庫 Redis/Memchche/MongoDb

工具:
SQLmap/NoSQLmap
SQLmap 支援12種關係型資料庫的注入
NoSQLmap 支援非關係型資料庫的注入

學完基礎的之後:

  1. 聯合注入
  2. 時間盲注
  3. 布爾盲注
  4. 報錯盲注
  5. 命令執行

針對不同資料庫的攻擊技巧是不同的,不能用工具一把梭。細節就是和大佬之間的區別!

推薦書籍: SQL注入攻擊與防禦(第二版)     sqlmap從入門到精通(簡單看一下就行)

2. XSS(跨站腳本攻擊)

  1. 反射型
  2. 存儲型(重點)
  3. DOM型

作用:

  1. cookie 竊取
  2. 鍵盤記錄
  3. 網頁截屏
  4. 網頁掛馬
  5. XSS 蠕蟲
  6. 釣魚攻擊
  7. 水坑攻擊
  8. 經緯度定位

入門書籍: XSS 跨站腳本攻擊剖析與防禦(有幾年了,略老)

3. 業務邏輯漏洞(程式碼邏輯的問題)

  1. 身份認證安全
  2. 數據篡改
  3. 未授權訪問
  4. 任意密碼找回
  5. 驗證碼突破
  6. 介面調用安全
  7. 其他邏輯漏洞

4. 程式碼審計

檢查源程式碼的安全缺陷,源程式碼是否存在安全隱患或者編寫不規範的地方。

如何進行程式碼審計(方法論):

  1. 審計環境的準備
  2. 學習審計程式碼的流程
  3. 牢記常見的危險函數以及特殊函數
  4. 細心 + 耐心 + 一點小運氣

入門書籍:《程式碼審計:企業級 Web 程式碼安全架構》

總結

Web 安全的本質

  1. 用戶能控制輸入的內容
  2. 服務端沒有對用戶輸入的內容進行檢查過濾
  3. Web 應用把用戶輸入的內容帶入到某個地方執行

滲透測試職業的後半部分應該是安全體系建設的能力,這才是價值的體現,要從實踐中獲取經驗,從經驗中抽象出事物的本質。

Tags: