滲透測試之Web安全
- 2020 年 4 月 4 日
- 筆記
寫在前面:
- 滲透測試包含但不限於Web安全
- 滲透測試並不相當於Web滲透
- Web安全學習是入門滲透測試最容易的途徑,門檻最低
Web安全入門:
- 基礎入門
- 整體框架
- SQL注入
- XSS攻擊
- 業務邏輯漏洞
- 程式碼審計
- 安全編程
如何學習(學習的路線):
- web 的基礎知識(重要)
- 漏洞原理
SQL、XSS、文件上傳、CSRF、SSRF、XXE等 - 編程能力(重要)
- 實戰練習
實戰練習是從頭貫穿到尾的
下面從幾個方面具體說明
一、基礎知識(雜/亂)
需要的基礎知識包括但不限於以下幾點:
- 編程基礎 主要指腳本語言,比如PHP、Python
- 網路常識 電腦網路(大學教材), 電腦網路自頂向下的方法(外國著作)
- 伺服器的基本使用 Linux/Windows(Linux 是重點) ,基本命令(鳥哥的 Linux 私房菜), 部署Web伺服器
- 基礎軟體的使用 VMware、資料庫
- 電腦基礎(軟/硬體)軟體部分主要指作業系統,進程、執行緒等,硬體部分主要包括記憶體、CPU、網卡
以上五點之中,前三點很重要!
二、程式語言
- PHP/JSP/ASPX
- Python
- HTML
- JavaScript
前期推薦學 PHP、Python。HTML 和 CSS 了解、能夠看懂並寫簡單的 HTML 程式碼。JavaScript 要重點掌握。
實際應用:
- 程式碼審計
- 安全開發
- 安全運維
三、網路基礎
- OSI 七層參考模型
- TCP/IP 模型
把握以下重點:
- TCP 協議
- IP 協議
- HTTP 協議
- DNS 協議
學會使用工具:
- wireshark 主要分析基於 TCP/IP 協議底層的數據包
- burpsuit 主要分析 HTTP 協議的數據包
- nmap 埠掃描
- OWASP 目錄爆破
一定一定要知道原理,不然這是一個腳本小子,知識面的大小決定攻擊面的大小,原理很重要!
三、伺服器的基本使用
- Linux/Windows
- 基礎命令
- 環境搭建
推薦書籍: 鳥哥的 Linux 私房菜,篇幅較長可以當工具書來查閱,但是最好多翻一翻。
四、整體框架
常見的 Web 漏洞:
- SQL 注入
- 文件上傳
- 文件包含
- 命令執行
- XSS
- CSRF
- SSRF
- XXE
- 中間件安全
- 業務邏輯漏洞
- 常見框架漏洞
以下為幾個重點的:
1. SQL 注入(建議首先要掌握的漏洞)
掌握:
資料庫的增刪改查
了解:
關係型資料庫 MySQL/MSSQL/Oracle
非關係型資料庫 Redis/Memchche/MongoDb
工具:
SQLmap/NoSQLmap
SQLmap 支援12種關係型資料庫的注入
NoSQLmap 支援非關係型資料庫的注入
學完基礎的之後:
- 聯合注入
- 時間盲注
- 布爾盲注
- 報錯盲注
- 命令執行
針對不同資料庫的攻擊技巧是不同的,不能用工具一把梭。細節就是和大佬之間的區別!
推薦書籍: SQL注入攻擊與防禦(第二版) sqlmap從入門到精通(簡單看一下就行)
2. XSS(跨站腳本攻擊)
- 反射型
- 存儲型(重點)
- DOM型
作用:
- cookie 竊取
- 鍵盤記錄
- 網頁截屏
- 網頁掛馬
- XSS 蠕蟲
- 釣魚攻擊
- 水坑攻擊
- 經緯度定位
入門書籍: XSS 跨站腳本攻擊剖析與防禦(有幾年了,略老)
3. 業務邏輯漏洞(程式碼邏輯的問題)
- 身份認證安全
- 數據篡改
- 未授權訪問
- 任意密碼找回
- 驗證碼突破
- 介面調用安全
- 其他邏輯漏洞
4. 程式碼審計
檢查源程式碼的安全缺陷,源程式碼是否存在安全隱患或者編寫不規範的地方。
如何進行程式碼審計(方法論):
- 審計環境的準備
- 學習審計程式碼的流程
- 牢記常見的危險函數以及特殊函數
- 細心 + 耐心 + 一點小運氣
入門書籍:《程式碼審計:企業級 Web 程式碼安全架構》
總結
Web 安全的本質
- 用戶能控制輸入的內容
- 服務端沒有對用戶輸入的內容進行檢查過濾
- Web 應用把用戶輸入的內容帶入到某個地方執行
滲透測試職業的後半部分應該是安全體系建設的能力,這才是價值的體現,要從實踐中獲取經驗,從經驗中抽象出事物的本質。
