零基础学习漏洞挖掘指南与方法
Web 漏洞挖掘
基础知识
学习 Web 漏洞挖掘首先要熟悉 Web 开发的一些基础知识,主要包括:
- 前端相关知识:HTML、CSS、JavaScript 及 PHP,能够认识基本的语句、逻辑,掌握语言的基本特性。
- 网络协议相关知识:熟悉 HTTP、TCP/IP、以及其他的应用层协议。
- 数据库相关知识:MySQL、SQL Server、Oracle、MongoDB 等主流数据库,掌握常见的数据库指令及语句。
- 编程语言:熟练掌握并使用 Java、Go、Python 等主流的编程语言,熟悉基本的编程与调试技术。
使用的工具
工欲善其事,必先利其器。Web 漏洞学习过程中借助一些工具能够提高工作效率和成功率。以下介绍几款学习 Web 安全必须掌握的工具:
-
SQLMap SQLMap 是一个自动化的 SQL 注入工具,其主要功能是扫描、发现并利用给定的 URL 的 SQL 注入漏洞,内置了很多的绕过插件,支持的数据库有:MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite 等,采用基于布尔类型的盲注、基于时间的盲注、基于报错的盲注、联合查询注入以及堆查询注入等 5 种 SQL 注入技术。
-
Nmap Nmap 是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放端口情况、操作系统与应用服务指纹识别、WAF 识别及常见的安全漏洞。
-
Burp Suite Burp Suite 是一款集成化的渗透测试工具,包含了很多的功能,可以帮助我们高效完成对 Web 应用程序的渗透测试和攻击。其由 Java 语言编写,可跨平台。
-
其他工具 Kali、漏洞扫描工具、渗透测试框架(MSF、Goby、Xray 等)、Webshell 工具,如果编程能力较强也可以在学习过程中开发自己的工具并在学习中不断积累,收集一些优秀的第三方工具。
漏洞挖掘方法
了解常见漏洞原理
Web 漏洞常见的类型主要有:XSS 攻击、文件包含、文件上传、SQL 注入、CSRF、SSRF、逻辑漏洞等。学习历史漏洞来掌握各种 Web 漏洞形成的原因、漏洞利用工具的编写技巧以及常用工具的熟练应用,是入门学习 Web 安全及漏洞挖掘的第一步。使用本地或第三方的靶场环境进行漏洞的复现验证及原理分析,编写 PoC 或 EXP 进行测试。以下是几个常见的 Web 靶场环境:
- OWASP TOP 10:开放式 Web 应用程序安全项目(OWASP)提供有关计算机和互联网应用程序的信息。其虚拟机含有各种具有已知漏洞的应用程序,可以帮助研究人员快速开展 Web 漏洞的研究。
- DVWA:Damn Vulnerable Web Application 是一个用来进行安全脆弱性鉴定的 PHP/MySQL Web 应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境。包括了 XSS、SQL 注入、文件上传等 10 多种类型的 Web 攻击,每一种类型可设置为 Low、Medium、High、Impossible 级别。
- Vulhub:基于 Docker 和 Docker Compose 的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单。
- Upload-labs:总结所有上传漏洞类型的靶场,学习上传漏洞原理,复现上传漏洞必备靶场环境。
- SQL-labs:一款学习 SQL 注入的开源平台,共有 75 种不同类型的注入。
通过实战提高
当熟悉了常见的 Web 漏洞形成的原理及漏洞利用方式之后,需要在实战中磨练技能、积累经验。比如可以参加 CTF 比赛、公益的 SRC 等互动提高实战技术水平。
漏洞挖掘技术
除了以上常规的渗透测试来挖掘漏洞之外,可以学习安全审计、白盒测试、黑盒测试、代码审计等技术来提高漏洞挖掘的效率。
书籍推荐
《Web 安全攻防》、《白帽子讲 Web 安全》、《Web 前端黑客技术揭秘》、《图解 HTTP》、《TCP/IP 详解》、《HTTP 权威指南》、《SQL 注入攻击与防御 (第 2 版)》、《Web 安全深度剖析》、《Web 应用安全权威指南》。


