点击蓝字 关注我们
本栏目收录了【中国电信研究院安全技术研究所】在知乎平台关于安全问题的部分优质回答。
在开始学习、研究漏洞之前,务必熟读
《中华人民共和国网络安全法》!!!
研究漏洞首先要对漏洞类型有一个大致的了解,根据工作需要或个人兴趣先选择一个方向深入学习,而不是面面俱到。因为针对不同类型的漏洞,其学习方法、技术栈和工具等有着巨大差异。选择好一个方向后,通过大量的实战不断积累经验、总结提高,终会有所成就。
一
漏洞的分类
目前一般将漏洞大致分为以下两类:
(一) web漏洞
以网页为主,主要研究包括web服务器(如 Apache、Tomcat、IIS、Nginx等)、中间件(Weblogic、Webshere、Glasshfish等)及web应用程序的漏洞。
常见的web漏洞主要有:XSS攻击、文件包含、文件上传、SQL注入、CSRF、SSRF、逻辑漏洞、敏感信息泄露、弱口令等。
(二) 二进制漏洞
主要研究操作系统(如Windows漏洞、Linux)、以及操作系统上的各种应用软件的漏洞(如office、WPS等办公软件、VPN客户端、浏览器等),偏重硬件底层。
常见的二进制漏洞主要有:栈溢出漏洞、堆溢出、整数溢出、格式化字符串、双重释放漏洞、释放后重引用漏洞(Use After Free)、内核漏洞、数组越界漏洞等。
以下从基础知识、使用的工具、学习方法与路线、学习资料几个方面谈谈以上两种不同类型漏洞学习方法和思路。
二
Web漏洞挖掘
(一) 基础知识
学习web漏洞挖掘首先要熟悉Web开发的一些基础知识,主要包括:
-
**前端相关知识:**HTML、CSS、JavaScript及PHP,能够认识基本的语句、逻辑,掌握语言的基本特性。
-
**网络协议相关知识:**熟悉HTTP、TCP/IP、以及其他的应用层协议。
-
**数据库相关知识:**MySQL,SQL server,Oracle、mongodb等主流数据库,掌握常见的数据库指令及语句。
-
**编程语言:**熟练掌握并使用java、go、python等主流的编程语言,熟悉基本的编程与调试技术。
(二)使用的工具
工欲善其事,必先利其器。web漏洞学习过程中借助一些工具能够提高工作效率和成功率。以下介绍几款学习web安全必须掌握的工具:
1. SQLMap
SQLMap使用一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定的URL的SQL注入漏洞,内置了很多的绕过插件,支持的数据库有:MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite等,采用基于布尔类型的盲注、基于时间的盲注、基于报错的盲注、联合查询注入以及堆查询注入等5种SQL注入技术。
2. Namp
Namp是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放端口情况、操作系统与应用服务指纹识别、WAF识别及常见的安全漏洞。
3. Burpsuit
Burpsuit是一款集成化的渗透测试工具,包含了很多的功能,可以帮助我们高效完成对web应用程序的渗透测试和攻击。其由Java语言编写,可跨平台。
4. 其他工具
kali、漏洞扫描工具、渗透测试框架(MSF、Goby、Xray等)、webshell工具,如果编程能力较强也可以在学习过程中开发自己的工具并在学习中不断积累,收集一些优秀的第三方工具。
(三)漏洞挖掘方法
1. 了解常见漏洞原理
web漏洞常见的类型主要有:XSS攻击、文件包含、文件上传、SQL注入、CSRF、SSRF、逻辑漏洞等。学习历史漏洞来掌握各种web漏洞形成的原因、漏洞利用工具的编写技巧以及常用工具的熟练应用,是入门学习web安全及漏洞挖掘的第一步。使用本地或第三方的靶场环境进行漏洞的复现验证及原理分析,编写PoC或EXP进行测试。以下是几个常见的web靶场环境:
-
OWASP TOP 10:
开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个非营利组织,不附属于任何企业或财团,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。
其目的是协助个人、企业和机构来发现和使用可信赖软件。OWASP虚拟机,里面含有各种具有已知漏洞的应用程序,可以帮助研究人员快速开展web漏洞的研究。
-
DVWA
:DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web 应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。包括了XSS、SQL注入、文件上传等10多种类型的web攻击,每一种类型可设置为:Low,Medium,High,Impossible,级别越高,安全防护越严格,渗透难度越大。
-
Vulhub
:
Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。
-
Upload-lab:
Upload-labs是一个帮你总结所有上传漏洞类型的靶场,学习上传漏洞原理,复现上传漏洞必备靶场环境。
-
SQL-lab:
sqli-labs是一款学习SQL注入的开源平台,共有75种不同类型的注入。
2. 通过实战提高
当熟悉了常见的web漏洞形成的原理及漏洞利用方式之后,需要在实战中磨练技能、积累经验。比如可以参加CTF比赛、公益的SRC等互动提高实战技术水平。
3. 漏洞挖掘技术
除了以上常规的渗透测试来挖掘漏洞之外,可以学习安全审计、白盒测试、黑盒测试、代码审计等技术来提高漏洞挖掘的效率。
(四)书籍推荐
《Web 安全攻防》、《白帽子讲web安全》、《web前端黑客技术揭秘》、《图解HTTP》、《TCP/IP详解》、《HTTP权威指南》、《SQL注入攻击与防御(第2版)》、Web安全深度剖析》、《Web应用安全权威指南》。
三
二进制漏洞挖掘
二进制漏洞挖掘的对象一般是操作系统如Windows、Linux等,以及常见的客户端软件如办公软件类office、浏览器chrome/edge/Firefox等为主。
(一)基础知识
-
**汇编:**汇编是进行软件逆向分析的基石,需要掌握基本指令,如寻址方式、跳转及条件判断、循环等。
-
C/C++基础**:**掌握指针、虚函数、继承等概念以及函数传参的方式,内存管理,能够开发。
-
**操作系统:**了解系统架构、关键组件、PE/ELF文件格式、DLL机机制、中断与异常、内存管理等知识,以及操作系统系统的安全机制,如Windows中的GS、DEP、ASLP、SE和等。
-
**软件逆向:**认识数据在内存中的表现形式、认识常见变成语言的启动函数,能够找到程序的入口点、观察表达式、流程控制语句,认识变量、数组、指针、结构体、类等数据类型在内存中的形式。以及加壳、混淆等、反调试等技术。
(二)使用的工具
在研究二进制漏洞时需要分析软件运行机理,主要以逆向技术和调试技术为主。软件逆向分析技术成为二进制漏洞学习之路上最大的障碍,这也使得二进制漏洞挖掘学习成本增加。以下是一些常用的逆向及调试工具:
-
IDA pro:
一款交互式反汇编工具,它功能强大、操作复杂。
需要熟练其快捷键、常用的插件等。
-
Ollydbg:
OllyDbg是一种具有可视化界面的32位汇编分析调试器,是一个Ring3级调试器,非常容易上手。
同时还支持插件扩展功能,是目前最强大的调试工具。
-
X64dbg:
x64_dbg是一款windows系统下非常优秀的64位调试器,与“OllyDbg”十分相似。
软件具有简洁的界面以及强大的功能,提供了类似C的表达式解析器、全功能的DLL和EXE文件调试、IDA般的侧边栏与跳跃箭头、动态识别模块和串、快反汇编、可调试的脚本语言自动化等多项实用功能。
-
WinDbg
**:**WinDbg是微软发布的一款免费而十分强大的调试工具。Windows 调试器可用于调试内核模式和用户模式代码,来分析故障转储,并检查代码时 CPU 寄存器执行,同时也是一款相当优秀的源码级调试工具。
-
GDB:
GDB(GNU Debugger)是UNIX及UNIX-like下的强大调试工具,可以调试ada, c, c++, asm, minimal, d, fortran, objective-c, go, java,pascal等语言。
本文以C程序为例,介绍GDB启动调试的多种方式。
-
其他工具:
PE/ELF文件格式解析工具、PE文件解析工具、查壳/脱壳工具、 进程监控工具、流量检测工具等 。
(三)漏洞挖掘的方法
1. 明确目标
明确目标即你将要选择什么作为你漏洞挖掘的对象,是操作系统还是应用软件?根据工作的需求及个人偏好先确定目标,然后进行大量分析训练,不断积累经验。比如,可以选择Windows内核漏洞、office漏洞或者chrome、edge等浏览器的漏洞。
2. 信息收集
勿在浮沙筑高台。想要挖掘某软件的漏洞,首先第一步是对该软件在历史上出现过哪些重大的漏洞有清晰的认识。因此当明确了目标之后就开始对该目标的历史漏洞信息进行梳理,包括:软件的安装版本、漏洞复现的环境限制、漏洞详细信息、他人复现的漏洞分析报告,以及最主要的是收集漏洞的POC、EXP及漏洞利用样本。
3. 漏洞分析
当具备了分析漏洞所需的基本条件之后,开始搭建漏洞复现环境,利用POC/EXP对漏洞进行复现;然后对漏洞进行调试,详细分析漏洞形成原因,并尝试编写漏洞利用的程序。务必做到对每个漏洞的原理、利用方式都如数家珍。
4. 漏洞挖掘
经过一段时间的训练,对某类软件的漏洞成因等有了深刻的认识之后,就可以进行此类软件的漏洞挖掘,掌握一些常用的漏洞挖掘方法:补丁比较、污点追踪、模糊测试等提高效率。
(四)书籍推荐
《IDA Pro权威指南》、《C++反汇编与逆向技术揭秘》、《漏洞战争:软件漏洞分析精要》、《0day安全:软件漏洞分析技术》、《加密与解密》。
为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]
标签:web,入门,基础,就够,学习,漏洞,SQL,工具,调试 From: https://blog.csdn.net/Javachichi/article/details/142376493