新手如何学习挖SRC漏洞?【网络安全】

news2024/9/20 15:29:50

前言

有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。

也有很多小伙伴私信问我怎么学?怎么挖漏洞?怎么渗透?

较合理的途径应该从漏洞利用入手,不妨分析一些公开的 CVE 漏洞。很多漏洞都有比较好的资料,分析研究的多了,对漏洞的认识自然就不同了,然后再去搞挖掘就会易上手一点!

俗话说:“磨刀不误砍柴工”,就是这么个理儿。

那么这篇文章就教大家怎么从零到挖漏洞一条龙学习!学到了别忘了给个赞

什么是漏洞挖掘

漏洞挖掘是指通过分析软件、系统或网络中存在的安全漏洞来发现并利用这些漏洞。漏洞挖掘是信息安全领域的一项重要工作,可以帮助企业和组织提高系统的安全性,避免黑客攻击和数据泄露。

漏洞挖掘的流程一般可以概括为以下几个步骤:

确定目标:确定要挖掘的软件或系统。这可能是一个应用程序、操作系统、网络设备或其他系统。

收集信息:收集有关目标的信息,包括架构、协议、版本和配置等。这些信息可以通过互联网搜索、手动扫描、自动化工具和其他途径获得。

分析漏洞:通过手动和自动化技术进行漏洞分析,识别潜在的漏洞类型和攻击面。漏洞类型可能包括缓冲区溢出、SQL 注入、跨站点脚本、文件包含、代码注入等等。

验证漏洞:验证已经识别的漏洞。这通常涉及到构建漏洞利用代码,并尝试在目标系统上运行以确定漏洞是否存在。

编写报告:对于已经验证的漏洞,需要编写漏洞报告。报告应该包括漏洞的描述、影响、利用难度和建议的修复方法等。

报告漏洞:将漏洞报告发送给目标系统的所有者或运营者。通常,这些信息将发送给该系统的安全团队或责任人。

跟踪漏洞:跟踪漏洞的修复进度,并监视其状态。如果漏洞得到修复,可以对修复进行验证以确保漏洞已被彻底解决。

需要注意的是,漏洞挖掘是一项需要长期持续学习和实践的工作。要成为一名优秀的漏洞挖掘者,需要不断学习新的技术和方法,并保持良好的思维习惯和创新能力。

学习漏洞挖掘的正确顺序

当然,学习漏洞挖掘之前,需要掌握以下几个方面的内容:

编程语言和计算机基础知识

在漏洞挖掘过程中,挖掘者需要编写代码来验证和利用漏洞,因此需要至少掌握一种编程语言,如 C、Python、Java 等。同时,还需要了解计算机的基础知识,例如计算机系统的组成结构、操作系统的原理、计算机网络的基本概念、数据库的工作原理等。如果没有这方面的基础知识,就很难理解漏洞挖掘中所需要的各种技术和工具。

安全基础知识

漏洞挖掘是一项安全工作,因此需要掌握一些安全基础知识,例如 Web 安全、网络安全、应用程序安全、二进制安全等。建议挖掘者先学习一些基础的安全知识,例如 OWASP Top 10 漏洞、常见的网络攻击技术和漏洞类型等,这可以帮助挖掘者更好地理解漏洞挖掘中所面临的问题和挑战。

漏洞挖掘工具

学习漏洞挖掘需要掌握一些常用的漏洞挖掘工具,例如 Burp Suite、Metasploit、Nmap、Wireshark、IDA 等。这些工具可以帮助挖掘者加速漏洞挖掘的过程,同时也能帮助挖掘者深入理解漏洞的原理和产生的原因。例如,Burp Suite 可以帮助挖掘者拦截和修改 HTTP 请求,Metasploit 可以帮助挖掘者构造攻击载荷等。

学习漏洞挖掘技巧和方法

学习漏洞挖掘需要了解一些常用的技巧和方法,如 Fuzzing、代码审计、反向工程、漏洞利用等。这些技巧和方法能够帮助挖掘者更快速地发现漏洞,并且深入理解漏洞的原理和利用方式。例如,Fuzzing 可以帮助挖掘者通过自动生成大量的输入数据,来测试程序是否存在漏洞,代码审计可以帮助挖掘者通过分析代码来发现漏洞等。

总的来说,学习漏洞挖掘需要综合掌握多方面的知识,包括编程、计算机基础知识、安全基础知识、漏洞挖掘工具以及漏洞挖掘技巧和方法。建议先从基础知识入手,逐步深入学习,不断实践,并在实践中发现和解决问题,才能逐渐成为一名优秀的漏洞挖掘者

对于有一些基础知识的初学者,应该怎样进行漏洞挖掘呢?

【一>所有资源获取,点击这里<一】

一、如何发现漏洞

从某个角度来讲,我们可以将漏洞挖掘工作比作玩迷宫游戏,不同的是,这个迷宫与我们平时所见的游戏中的迷宫略有不同:

(1)你无法立即看到它整体的外观

(2)随着漏洞挖掘工作的深入,这个迷宫的形状逐渐扩大

(3)你将会拥有多个起点及终点,但是无法确定这些点具体在哪里

(4)最终这个迷宫可能永远也无法 100%的完整,但是却能够弄清楚 A 点至 B 点的一条完整路径

具体一点地描述,我们可以将漏洞挖掘工作归结为三个步骤:

(1) 枚举程序入口点(例如:与程序交互的接口)

(2) 思考可能出现的不安全状态(即漏洞)

(3) 设法使用识别的入口点到达不安全状态

即是说,在这个过程中,迷宫是我们研究的应用程序,地图是我们对程序的理解程度,起点是我们的入口点(交互接口),终点为程序的不安全状态。

所谓入口点,既可以是 UI 界面上直观可见的交互接口,也可以是非常模糊与透明的交互接口(例如 IPC),以下是部分安全研究员较为感兴趣的关注点:

(1) 应用程序中比较古老的代码段,并且这一部分随着时间的推移并没有太大的变化。

(2) 应用程序中用于连接由不同开发团队或者开发者开发的程序模块的接口部分

(3) 应用程序中那些调试和测试的部分代码,这部分代码本应在形成 Release 版本时去除,但由于某些原因不小心遗留在程序中。

(4) C-S 模式(带客户端和服务端)的应用中客户端及服务端调用 API 的差异部分(例如网页表单中的 hide 属性字段)

(5) 不受终端用户直接影响的内部请求(如 IPC)

从攻击面上来划分,可以将漏洞分为两大类,通用漏洞(General)和上下文漏洞(Contextual)。通用型漏洞是指在我们对应用的业务逻辑不是非常熟悉的情况下能够找出的漏洞,例如一些 RCE(远程代码执行)、SQLi(sql 注入)、XSS(跨站)等。上下文漏洞是指需要在对应用的业务逻辑、认证方式等非常熟悉的情况下才能找到的漏洞,例如权限绕过等。

在漏洞挖掘的过程中,首先根据经验优先考虑研究测试那些可能会对应用产生巨大威胁的部分。一些轻量级威胁检测模型(如 STRIDE)可以辅助我们做出这样的决策。

下面我们来看一个 WEB 应用程序的漏洞示例,后面将会介绍桌面程序:

首先我们假设目标 web 应用是一个单页面应用程序(single-page-application SPA),我们已经获得合法验证去访问这个应用,但是我们没有任何关于服务端的源代码或者二进制文件。在这种情况下,当我们枚举入口点时,可以通过探寻该应用的不同功能来进一步了解其业务逻辑及功能,可以通过抓包分析看 HTTP 请求内容,也可以分析客户端的网页代码获取需要提交表单的列表,但是最终的限制还是我们无法具体知悉客户端和服务端调用的 API 之间的区别,不过通过以上方法,我们可以找到一些入口点。

接着就是操作这些入口点,以试图达到我们预期的不安全状态。由于漏洞的形态很多,我们通常需要构建一个适用于该测试应用程序的业务功能漏洞的测试集,以求达到最高效地寻找漏洞。如果不那样做的话,我们就将会在一些无用的测试集上花费大量时间,并且看不到任何效果(举个例子,当后台的数据库为 Postgres 时,我们用 xp_cmdshell去测试,测试再多次都无济于事)。所以在构造测试集时,需对应用程序的逻辑有较深的理解。下图形象地展示了低效率测试集的效果:

对于桌面应用程序,漏洞挖掘的思路本质上与 web 程序是类似的,不过也有一些区别:最大的区别在于,桌面应用的执行方式与流程与 web 程序不一样,下图展示的是桌面应用漏洞挖掘的一些内容:

与黑盒测试相比,当有源代码时(白盒测试),在寻找代码入口和程序执行路径等漏洞挖掘点时所做的猜测性的工作会大大减少,在这种情况下,将数据载荷从入口点执行到不安全的程序位置的效率低于从不安全的程序位置回溯至入口点。不过在白盒测试中,你对代码的测试的覆盖面可能会由于你自己的知识局限性而受到影响。

二、漏洞挖掘需要具备的知识

从事漏洞挖掘工作需要具备的知识是极其广泛的,并且随着时间在不断改变,也取决于你所研究的对象(web 程序、桌面程序、嵌入式等等)。不过,万变不离其宗,所需要掌握的知识领域却总可以认为是确定的,大致可以分为以下四个方面:

(1) 程序正向开发技术。这是一个开发者需要掌握的能力,包括编程语言、系统内部设计、设计模式、协议、框架等。拥有丰富编程经验与开发能力的人在漏洞挖掘过程中往往比那些只对安全相关领域有所了解的人员对目标应用能有更深入的理解,从而有更高的产出。

(2)攻防一体的理念。这些知识涵盖了从基本的安全原则到不断变换的漏洞形态及漏洞缓解措施。攻击和防御结合的理念,能够有效帮助研究者既能够发现漏洞,同时也能够快速给出有效的漏洞缓解措施和规避方法。

(3)有效使用工具。能够高效的使用工具能够快速将思路转化为实践,这需要通过花时间去学习如何配置和使用工具,将其应用于自己的任务并构建自己的工作流程来不断积累经验。更进一步,需要深入掌握所使用工具的原理,以及如何对其进行二次开发,以使得其能够更加高效的应用于当前的工作实际。事实上,面向过程的学习方法往往比面向工具的学习方法更加高效以及有价值,当自己发现一个在使用一个工具遇到瓶颈时,先不要退缩,尝试去改造它,或者通过自己动手实践去完成能够适应当前工作的工具,这往往能够帮助快速积累大量实践经验。帮助我们以后更加高效的去实践漏洞挖掘工作。

(4)对目标应用的理解。最后,也是最重要的,作为一个漏洞挖掘人员,对自己研究的应用程序在安全性方面必须要比这个程序的开发者或维护者有更深的理解。这样你才能尽可能的发现这个程序中的漏洞并修复它。

下面这张表格介绍了挖掘 web 应用程序和桌面应用程序的漏洞时所需要掌握的内容。每个类别中的条目仅用于说明目的,并非详尽无遗。

这些知识领域将会帮助你提高挖掘漏洞的能力。如果说上面一节是讲诉挖掘漏洞所需要的知识,那么下面的这一节将讲诉挖漏洞如何做。

三. 漏洞挖掘需要做什么

当分析一个应用程序时,你可以使用下图展示的四个“分析模型”,如果遇到障碍导致思路受阻时,你可以从其中一个模型切换到下一个模型,当然,这不是一个线性的切换,你也可以有自己的一套方法。

在每一个模型之中都有主动活动(active activities)与客观活动存在(passive activities),主动活动需要我们对程序的执行环境及上下文有一个比较全面的了解,而客观活动却不一定,比如它是客观存在与程序的一些技术文档之中。不过,这种划分也不一定严格,不过对于每一个活动,我们可以从以下几方面去考虑:

(1) 理解有关漏洞的相关模型

(2) 试图假设一个场景去破坏程序

(3) 尝试去破坏程序

四. 有关漏洞挖掘的其他想法

漏洞的复杂性

漏洞的复杂性分布非常广。一方面,有很多漏洞非常简单与直观,并且利用代码一目了然,比如说经典的 sql 注入。另一方面,在系统中有的看似并不相关,并且就其自身而言并非不安全,但是当这些东西以一种特定的方式结合起来的时候,就有可能引发大的漏洞,比如说条件竞争,或者一些其他的复杂的逻辑漏洞。可以尝试将这些漏洞按照复杂级别分为“一级漏洞”和“二级漏洞”,不过也有其他分类方法。引用一局来自 Project Zero 的 Ben Hawkes 说过的一句话:

Themodern exploit is not a single shot vulnerability anymore. They tend to be achain of vulnerabilities that add up to a full-system compromise.

如今想要完成一个完整的利用,只靠单一的漏洞往往行不通。很多时候我们需要靠一连串的漏洞才能完成一起完整的利用,致使系统“妥协”。

团队工作

在一个团队中工作能够有效帮助自己了解自己不知道的知识,以及提高自己已知的知识。不过在团队中要需要注意工作的方式方法,知之为知之,不知为不知,永远不要强行假装精通你不熟悉的东西,因为精通的人可以很轻易的指出你的症结。如果一个团队里面大家都不坦诚相待,那么这不是一个合格的团队,你可以尽早更换。在优秀的团队中,不要指望别人会把所有的知识交给你,要学会如何高效的学习,并在团队交流与合作中不断提高。

五. 写在最后

希望这篇文章在可以帮助你解开一些对于漏洞挖掘的谜团。在学习和研究漏洞挖掘的过程中遇到困难并感到不知所措是很正常的。不过学习的过程就是这样,只有不断的去尝试才会进步。祝你在漏洞挖掘的路上走的越来越远。

 这份完整版的网安学习资料已经上传,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/548195.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ProtoBuf】1.初识ProtoBuf

————————————每一个不曾起舞的日子都是对生命的辜负。 初识ProtoBuf 一. 序列化概念二. ProtoBuf1. 什么是ProtoBuf2. ProtoBuf的特点3. ProtoBuf进行序列化反序列化的流程 三. 本章总结 一. 序列化概念 日常生活中&#xff0c;手机上收到的语音消息在网络中不能直…

多线技术:TDI时间延迟积分

多线技术&#xff1a;TDI时间延迟积分 在比较暗的环境下拍照&#xff0c;清晰成像的条件&#xff0c;是CMOS芯片获取足够的光。而获得足够光的方法有&#xff1a; 方案1.增加单位时间的光照强度&#xff08;光源、大镜头收集光&#xff09; 方案2.增加CMOS感光时长&#xf…

国潮还能怎么玩?小红书用户画像速看!

所谓“国潮”&#xff0c;概括来说就是“国风潮流”。主要有两层含义&#xff1a;其一&#xff0c;有中国文化和传统的基因&#xff1b;其二&#xff0c;能将传统文化与时下潮流相融合&#xff0c;使产品更具时尚感。在“国潮”元年之前&#xff0c;“国潮”大多指狭义上的特定…

macOS Ventura 13.5beta (22G5027e)发布

系统介绍 黑果魏叔 5 月 20 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 更新&#xff08;内部版本号&#xff1a;22G5027e&#xff09;&#xff0c;本次更新距离上次发布隔了 17 天。 macOS Ventura 带来了台前调度、连续互通相机、Face…

四象限法进程调度

周二收到一篇推送 一次云上网络毫秒级的优化与实践&#xff0c;很有意义的实践和探索&#xff0c;建议阅读&#xff0c;文章不长&#xff0c;没有冗长的源码分析&#xff0c;结论很清晰。 谈谈我的看法。 多少有种感觉&#xff0c;Linux 越来越像个响应系统而不是服务器。 虚…

TimesNet:用于一般时间序列分析的时间二维变化模型(代码解析)

前言 TimesNet&#xff1a;用于一般时间序列分析的时间二维变化模型论文下载地址&#xff0c;Github项目地址&#xff0c;论文解读系列本文针对TimesNet模型参数与模型架构开源代码进行讲解&#xff0c;本人水平有限&#xff0c;若出现解读错误&#xff0c;欢迎指出开源代码中…

回归分析-简单线性回归推导

回归分析-简单线性回归模型 在大数据分析中&#xff0c;回归分析是一种预测性的建模技术&#xff0c;它研究的是因变量&#xff08;目标&#xff09;和自变量&#xff08;预测器&#xff09;之间的关系。这种技术通常用于预测分析&#xff0c;时间序列模型以及发现变量之间的因…

浏览器免费安装ChatGPT插件与国内免费ChatGPT分享

文章目录 一、什么是ChatGPT&#xff1f;ChatGPT的功能&#xff1a; 二、如果在Edge上安装chatgpt插件三、国内免费ChatGPT四、ChatGPT程序员的影响五、Chatgp能取代程序员吗&#xff1f; 一、什么是ChatGPT&#xff1f; ChatGPT是一种基于自然语言处理的机器学习算法&#xf…

【牛客刷题】 选择题整理day3~day4

在知识的海洋里彻底疯狂&#xff01;&#xff01;&#xff01; 文章目录 1. try-catch-finally2. 方法调用3. 接口4. 1. try-catch-finally try-catch-finally的执行机制是 try块是不能被省略的&#xff0c;用于包含可能会抛出异常的代码&#xff0c;如果没有try块&#xff0c…

Linux之DNAT策略及应用与tcpdump抓包

目录 一、DNAT的介绍 二、DNAT实验设计 三、DNAT具体实验步骤操作 第一步&#xff1a;配置好网卡与环境 第二步&#xff1a;web服务器安装httpd服务&#xff0c;且开启httpd服务 第三步&#xff1a;对网关服务器进行操作 1.设置路由转发 2.设置SNAT 四、tcpdump抓包工具…

yooasset+hybridclr在android,ios端热更新测试

Hybridclr+YooAsset+Unity Run android+iOS 这个工程是用来学习YooAsset和Hybridcl,来做unity资源和代码热更新, 实现了android 和ios 双端,跑通。 源码在文章最后。 版本 很新的版本 用到的YooAsset 1.4.13 用到的HybridCLR 2.4.2 yooAsset git网址 https://github.co…

CVTE C++软开全程面试(一面、二面、群面、HR面)

一面&#xff0c;面了一个钟&#xff0c;问了很多问题&#xff0c;大部分是计算机的基础知识&#xff0c;我也只能记录下一部分。 C的继承问题&#xff0c;protected成员被public、protected和private继承的情况。 下面是关于protected成员在不同类型继承中的访问权限&#xff…

声音合成——Foley Sound——DECASE项目——多模态智能感知与应用——论文翻译

文章目录 概述论文翻译CONDITIONAL SOUND GENERATION USING NEURAL DISCRETE TIME-FREQUENCY REPRESENTATION LEARNINGAbstractSampleRNN是啥&#xff1f; Introduction个人总结&#xff08;省流&#xff09;补充个人感想 Approach2.1 Discrete time-frequency省流总结2.1.1 Mu…

http2

HTTP: HTTP/2 - High Performance Browser Networking (OReilly) 以下内容都是上面这篇文章的一些总结&#xff08;或者说翻译hiahia&#xff09; http2是由谷歌的SPDY之上演变而来的。主要涉及的技术包括&#xff1a; 头部压缩&#xff0c;多路复用&#xff0c;请求优先级 …

使用Docker Dockerfile构建php LNMP集成开发环境,并运行Thinkphp5

宿主机环境 系统&#xff1a;MAC、Windows10 Docker版本&#xff1a;Docker version 23.0.5 Docker Desktop:Dockerdesktop官方地址 前言 这篇主要介绍如何在Mac、Windows10使用docker搭建LNMP集成开发环境。下面我会写Dockerfile编译安装Nginxphp基础环境。mysql、redis基…

多维时序 | MATLAB实现基于贝叶斯线性回归(Bayesian Regression)的多变量时间序列预测

多维时序 | MATLAB实现基于贝叶斯线性回归(Bayesian Regression)的多变量输入回归预测 目录 多维时序 | MATLAB实现基于贝叶斯线性回归(Bayesian Regression)的多变量输入回归预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 多维时序 | MATLAB实现基于贝叶斯线…

Rocky Linux 8.8 发布 - CentOS 的权威替代

Rocky Linux 8.8 发布 - CentOS 的权威替代 Rocky Linux 由 CentOS 项目的创始人 Gregory Kurtzer 领导 请访问原文链接&#xff1a;https://sysin.org/blog/rocky-linux-8/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 以…

Linux-Shell编程

一&#xff0c;shell编程的概念 1.0Shell与内核的关系 内核是Linux系统的核心&#xff0c;它是操作系统的最底层部分&#xff0c;负责管理计算机的硬件资源&#xff0c;例如CPU、内存、磁盘等。内核还提供了许多系统调用&#xff0c;供应用程序使用&#xff0c;例如打开文件、…

数字员工IN淄博:淄博烧烤火出圈,政务服务很圈粉!

“小饼烤炉加蘸料&#xff0c;灵魂烧烤三件套”&#xff0c;淄博烧烤近期在各大社交媒体平台火爆出圈&#xff0c;不少人慕名前往亲身体验人间烟火气&#xff0c;让这座传统工业城市再度名声鹊起&#xff0c;焕活了淄博文旅市场的发展潜能。淄博人民的淳朴热情造就了这一次淄博…

STM32F401RET6 LQFP64 (Nucleo-F401RE) SPI通信(主从双机SPI通信)

STM32F401RET6 LQFP64 (Nucleo-F401RE) SPI通信&#xff08;主从双机SPI通信&#xff09; 1.1 SPI总线介绍 SPI 通讯使用 3 条总线及片选线&#xff0c;3 条总线分别为 SCK、MOSI、MISO&#xff0c;片选线为NSS(CS) NSS 信号线由高变低 &#xff0c;是 SPI 通讯的起始信号 。…