安全见闻笔记

安全见闻包含了网络安全,网络技术,拓展知识面

“不识庐山真面目,只缘身在此山中”

编程语言:

C 语言:一种通用的、面向过程的编程语言,广泛应用于系统软件和嵌入式开发。

C++:在 C 语言基础上发展而来,支持面向对象编程,常用于游戏开发、高性能计算等领域。

Java:一种广泛使用的面向对象编程语言,具有跨平台性,应用于企业级应用开发等。

Python:简洁易学,拥有丰富的库,适用于数据分析、人工智能、Web 开发等。利用python做数据处理,可以自己写工具脚本

JavaScript:主要用于网页前端开发,也可用于服务器端开发(Node.js)。XSS漏洞和JS语言有关

C#:由微软开发,主要用于 Windows 平台上的应用开发。

Ruby:一种简洁而富有表现力的编程语言,常用于 Web 开发。

PHP:主要用于 Web 开发,尤其适合服务器端脚本编程。

Go:一种高效、简洁的编程语言,适用于网络编程和云计算等领域。

Swift:苹果公司开发的编程语言,用于 iOS 和 macOS 应用开发。

Kotlin:可与 Java 互操作,主要用于 Android 开发。

函数式编程语言:

Haskell:纯函数式编程语言,以强大的类型系统和数学上的严谨性著称。

Lisp(包括 Common Lisp、Scheme 等):历史悠久的编程语言家族,以其高度的灵活性和宏系统闻名。

Clojure:运行在 Java 虚拟机上的 Lisp 方言,结合了函数式编程和 Java 平台的优势。

数据科学和机器学习领域:

R:在统计分析和数据可视化方面应用广泛。

Julia:设计用于高性能科学计算和数据分析。

Web 全栈开发:

TypeScript:是 JavaScript 的超集,增加了静态类型检查等特性,提高了大型项目的开发效率。

移动开发:

Objective-C:曾经是 iOS 开发的主要语言,现在逐渐被 Swift 取代。

嵌入式系统开发:

Assembly Language(汇编语言):不同的处理器架构有不同的汇编语言,用于对硬件进行底层控制。

其他:

Pascal:曾经在教学和早期软件开发中有广泛应用。

Delphi(基于 Object Pascal):用于快速应用开发。

Scala:融合了面向对象编程和函数式编程,运行在 Java 虚拟机上。

Elixir:基于 Erlang 虚拟机,具有高并发和容错性,适合构建分布式系统。

红队中级主要需要学习python

软件程序:

web程序 (Web程序作为现代网络应用的核心,渗透测试则是评估和提升Web程序安全性的有效手段)

Web程序是一种可以通过Web访问的应用程序,用户只需拥有浏览器即可使用,无需安装其他软件3。

前端开发:主要使用HTML、CSS、JavaScript等Web技术构建用户界面,展示数据和交互行为2。

后端开发:通过服务器端语言(如PHP、Python、Java等)处理业务逻辑和数据存储,并与前端进行交互

二进制程序 ( 主要是逆向分析,和渗透测试没有太大关系)

二进制程序是指计算机中使用二进制代码编写的程序,也称为机器码程序。计算机中的所有程序都必须被转化成机器码才能被处理器执行。因为计算机只能理解0和1这两个二进制数字,所以所有的程序和数据都必须转化为二进制码才能被计算机识别和执行

驱动程序

驱动程序是一种特殊类型的软件,它充当了计算机操作系统和硬件设备之间的桥梁。驱动程序的主要作用是使操作系统能够控制和操作硬件设备,确保它们能够正常工作并发挥预期的功能。驱动程序通常由硬件制造商开发,并且需要与特定的操作系统版本相匹配,本质也是二进制程序,以Windows为例后缀为sys结尾的都属于驱动程序范围内

脚本程序

脚本程序,通常简称为脚本,是一种编程语言,主要用于控制软件应用程序。脚本通常以文本形式(如ASCII)保存,并在被调用时进行解释或编译。脚本程序的编写使用特定的编程语言,如Scala、JavaScript、VBScript、ActionScript、MAXScript、ASP、JSP、PHP、SQL、Perl、Shell、Python、Ruby、JavaFX、Lua、AutoIt等

易学易用:脚本语言的语法相对简单,易于学习和掌握

与应用程序紧密相关:脚本程序通常与特定的应用程序相关,包含了应用程序自身的功能

通用性有限:脚本程序一般不具备广泛的通用性,所能处理的问题范围相对有限

解释执行:脚本程序在执行时通常需要通过解释器进行翻译,而不是直接由计算机硬件执行

操作系统(Operating System,简称OS)

管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。现代操作系统主要有Android、BSD、iOS、Linux、MacOSX、Windows、WindowsPhone和z/OS等,除了Windows和z/OS等少数操作系统,大部分操作系统都为类Unix操作系统

实时操作系统(RTOS)是一种能够在外界事件或数据产生时,迅速接受并处理这些信息,并在规定时间内控制生产过程或对处理系统作出快速响应的操作系统。它的主要特点是提供及时响应和高可靠性,这对于需要精确时间控制的任务至关重要

Windows,mac,ios,linux 这种是非实时操作系统,实时操作系统vxworks,RT-Thread,wince。区分实时与非实时:就是说我们在操作过程中,比如我们反键刷新,点一下立马弹出来了,但是电脑cpu在执行的时候并没有立马执行你的指令,它可能先执行了其他的在执行你的指令,这就是非实时的

非实时操作系统主要致力于在各种情况下提供良好的整体性能、用户体验和多任务处理能力,但不能保证在严格的时间限制内对事件做出响应。

与之相对的是实时操作系统(RTOS),实时操作系统能够在确定的时间内对外部事件作出响应并完成特定的任务,具有严格的时间确定性和可预测性,常用于对时间要求极为严格的嵌入式系统、工业控制等领域

裸板程序

还有一种程序也就是裸板程序,直接在stm32上写代码,或者单片机上写一个代码,这就是裸板程序。

裸板程序开发是指在没有操作系统或其他软件支持的情况下,直接在硬件设备上编写和运行程序的过程。这种开发方式需要对硬件设备有深入的了解,需要手动管理内存和处理器资源,具有更高的灵活性和控制力,但同时也需要更高的技术要求和经验

裸板程序是没有操作系统的概念的,也没有进程这种概念,所以有些东西需要程序员去模拟才行,有操作系统就特别方便,裸板程序也是软件程序的一种,它就是代码组成的

在网络安全领域,可能会有多个安全漏洞同时存在于一个系统或网络中。这种情况可能会增加系统的脆弱性,因为攻击者可以利用这些漏洞组合起来,实施更复杂的攻击。现在很多漏洞都是漏洞+漏洞杂糅在一起的,纠结如何命名其实并不重要,只要懂得原理就足够

量子计算:

量子计算是一种利用量子比特(qubit)来进行计算的方法,它充分利用了量子态的叠加和纠缠等特性。与传统的比特(bit)只能表示0或1不同,量子比特可以同时处于多个状态,这使得量子计算机在处理某些问题时拥有比经典计算机更强大的能力2。

量子计算的工作原理:

量子计算的原理实际上分为两部分:一部分是量子计算机的物理原理和物理实现;另一部分是量子算法。量子计算机的存储器可以同时存储2^N个数,而且随着N的增加,其存储信息的能力将指数上升。由于数学操作可以同时对存储器中全部的数据进行,因此,量子计算机在实施一次的运算中可以同时对2^N个输入数进行数学运算。这相当于经典计算机要重复实施2^N次操作,或者采用2^N个不同处理器实行并行操作。可见,量子计算机可以节省大量的运算资源(如时间、记忆单元等)

工控程序

工控程序是支持工业自动化控制和监控的核心,包括操作系统、驱动程序、中间件、应用软件等。工控一体机通常采用嵌入式操作系统,例如Linux、VxWorks等,这些操作系统经过裁剪和优化,以适应工业环境的需求

BIOS程序概述

BIOS,全称为Basic Input/Output System,即基本输入/输出系统,是计算机中非常基础且重要的程序。它存储在一个不需要电源的内存(芯片)中,被称为BIOS。BIOS为计算机提供最低级、最直接的硬件控制,计算机的原始操作都是依照固化在BIOS里的内容来完成的。准确地说,BIOS是硬件与软件程序之间的一个“转换器”或者说是接口,它负责开机时对系统的各项硬件进行初始化设置和测试,以确保系统能够正常工作3。

BIOS的主要功能

BIOS的主要功能包括:

  1. 硬件初始化:在对工控主机进行加电自检和初始化完毕后,需要利用BIOS引导DOS或其他操作系统。若找到引导记录会把工控机的控制权转给引导记录,由引导记录把操作系统装入,在工控机启动成功后,BIOS的这部分任务就完成了3。
  2. 程序服务处理:程序服务处理指令主要是为应用程序和操作系统服务,为了完成这些服务,工控机BIOS设置必须直接与工控机的I/O设备打交道,通过端口发出命令,向各种外部设备传送数据以及从它们那里接收数据,使程序能够脱离具体的硬件操作3。
  3. 硬件中断处理:在开机时,BIOS会通过自检程序对工控机硬件系统进行检测,同时会告诉CUP各硬件设备的中断号,例如视频服务,中断号为10H。屏幕打印,中断号为05H。磁盘及串行口服务,中断号为14H等。当用户发出使用某个设备的指令后,CUP就根据中断号使用相应的硬件完成工作,再根据中断号跳回原来的工作

计算机硬件

中央处理器(CPU):计算机的核心部件,负责执行指令和处理数据。它的性能决定了计算机的运行速度。

内存:用于存储正在运行的程序和数据,它的容量和速度对计算机的性能有很大影响。

硬盘:用于长期存储数据,包括操作系统、应用程序、文件等。硬盘的容量和读写速度也是影响计算机性能的重要因素。

显卡:用于处理图形和图像数据,它的性能决定了计算机的图形处理能力。对于游戏玩家和图形设计师来说,显卡的性能非常重要。

主板:是计算机的核心电路板,连接着各种硬件设备,如 CPU、内存、硬盘、显卡等。主板的质量和性能对计算机的稳定性和扩展性有很大影响。

网络硬件

网络服务器:提供网络服务,如文件存储、电子邮件、Web 服务等。网络服务器通常具有较高的性能和可靠性,以满足大量用户的需求。

网络存储设备:用于存储网络中的数据,如网络附加存储(NAS)和存储区域网络(SAN)。它们提供了大容量、高可靠性的数据存储解决方案。

网络打印机:可以通过网络连接被多台计算机共享,方便用户打印文件。

网络摄像头:用于视频监控和远程会议等应用。它可以通过网络将视频信号传输到其他设备上。

移动设备硬件

智能手机:集成了多种功能,如通信、拍照、娱乐、办公等。智能手机的硬件包括处理器、内存、存储、屏幕、摄像头等。

平板电脑:类似于智能手机,但屏幕更大,适合阅读、浏览网页、观看视频等。平板电脑的硬件也包括处理器、内存、存储、屏幕、摄像头等。

可穿戴设备:如智能手表、智能手环等,它们可以监测用户的健康数据、运动数据等,并与智能手机等设备进行连接和交互。可穿戴设备的硬件包括传感器、处理器、内存、存储、屏幕等。

硬件发展趋势

小型化:硬件设备越来越小型化,便于携带和使用。例如,智能手机、平板电脑等移动设备的体积越来越小,性能却越来越强。

高性能:随着技术的不断进步,硬件设备的性能不断提高。例如,CPU 的处理速度越来越快,内存和存储的容量越来越大,显卡的图形处理能力越来越强。

智能化:硬件设备越来越智能化,能够自动适应不同的环境和用户需求。例如,智能手机可以根据用户的使用习惯自动调整屏幕亮度、音量等设置。

互联互通:硬件设备之间的互联互通越来越紧密,形成了一个庞大的物联网。例如,智能家居设备可以通过网络连接实现自动化控制,智能汽车可以与其他车辆和交通设施进行通信。

网络类型

局域网(LAN):覆盖范围较小,一般在一个建筑物或一个校园内。例如,公司办公室内的网络就是一个局域网,用于员工之间共享文件、打印机等资源。

城域网(MAN):覆盖范围较大,一般在一个城市内。例如,城市的有线电视网络、宽带网络等。

广域网(WAN):覆盖范围非常大,可以跨越国家和地区。例如,互联网就是一个广域网,连接了全球各地的计算机和网络设备。

网络协议

TCP/IP 协议:是互联网的基础协议,包括传输控制协议(TCP)和网际协议(IP)。TCP 负责数据的可靠传输,IP 负责数据的路由和寻址。

HTTP 协议:超文本传输协议,用于在 Web 浏览器和 Web 服务器之间传输超文本数据,如网页、图片、视频等。

FTP 协议:文件传输协议,用于在计算机之间传输文件。

SMTP、POP3 和 IMAP 协议:用于电子邮件的发送和接收。

网络设备

路由器:连接不同的网络,实现网络之间的数据转发。它根据 IP 地址和路由表来确定数据的传输路径。

交换机:在局域网中连接多台计算机,实现数据的快速交换。它根据 MAC 地址来转发数据帧。

网卡:安装在计算机上,用于连接网络。它将计算机的数据转换为网络信号进行传输,并接收网络信号转换为计算机可识别的数据。

无线接入点(AP):提供无线网络连接,使无线设备能够接入局域网或广域网。

网络安全

防火墙:用于保护网络免受外部攻击,它可以根据预设的规则过滤网络流量。

加密技术:对数据进行加密,防止数据被窃取或篡改。例如,SSL/TLS 协议用于在 Web 浏览器和 Web 服务器之间进行加密通信。

软件程序

软件程序是一系列指令和数据,它们告诉计算机如何执行特定任务或操作。程序可以是简单的计算器应用,也可以是复杂的操作系统或大型企业软件。程序设计是创建这些软件程序的过程,它涉及选择合适的编程语言、设计算法、编写代码、测试和维护程序

常见的高级语言包括Fortran、COBOL、Pascal、C、C++、C#、Java等。每种语言都有其特定的应用场景和优势

无论是网页设计、前端开发、后端开发还是底层逻辑,它们都是由代码构成的。我们不需要刻意 区分这些领域,而应该选择最快捷、最实用的编程语言来完成任务。例如,如果Python能够满足需求,就没有必要使用C++。简单的编程语言往往更实用,因为它们都能让计算机完成相同的任 务,我们不应该将事情复杂化

通讯协议

通讯协议是一套规则,它定义了电子设备间通信的标准格式和方法。这些协议允许不同的设备之间进行有效的数据交换,无论它们的制造商、操作系统或硬件平台如何。通讯协议可以分为不同的层次,每个层次都负责特定的功能,从物理层的信号传输到应用层的数据解释2。

通讯协议的分类

通讯协议可以根据其应用领域和功能进行分类。例如,接入协议通常负责子网内设备间的组网及通信,而通讯协议则主要运行在传统互联网TCP/IP协议之上,负责设备通过互联网进行数据交换及通信

如tcp,udp

人工智能

机器学习

机器学习(Machine Learning,ML)是一种计算机科学技术,它允许计算机系统在没有明确编程的情况下通过从数据中学习和推断模式来改进其表现。机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它专门研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构,从而不断改善自身的性能。机器学习是人工智能的核心,是实现计算机智能化的根本途径

一般用python去编写,但是像go之类的编程语言都是可以写的,但是归根结底它也就是个程序。

工作流程:

数据收集

来源:可以从各种渠道获取数据,如数据库、文件、传感器、网络等。

类型:包括结构化数据(如表格数据)、半结构化数据(如 XML、JSON 格式的数据)和非结构化数据(如文本、图像、音频等)。

数据预处理

1,数据清洗:去除噪声数据、处理缺失值、纠正错误数据等。例如,对于包含缺失值的数据集,可以采用均值填充、中位数填充等方法进行处理。

2,数据归一化:将数据的特征值缩放到一个特定的范围内,以提高算法的性能和稳定性。常见的归一化方法有最小 - 最大归一化、Z-score 标准化等。

 3,特征提取:从原始数据中提取出有用的特征,以便机器学习算法能够更好地处理和理解数据。例如,在图像识别中,可以提取图像的颜色、纹理、形状等特征。

模型选择与训练

    根据任务类型和数据特点选择合适的机器学习算法。例如,对于分类问题可以选择决策树、支持向量机等算法;对于回归问题可以选择线性回归、随机森林等算法。

    将预处理后的数据分为训练集和测试集。训练集用于训练模型,测试集用于评估模型的性能。

    使用训练集对模型进行训练,通过调整模型的参数使得模型在训练集上的损失函数最小化。

模型评估与优化

    使用测试集对训练好的模型进行评估,常用的评估指标有准确率、精确率、召回率、F1 值、均方误差等。

    根据评估结果对模型进行优化,可以调整模型的参数、更换算法、增加数据量等。例如,如果模型在测试集上的准确率较低,可以尝试增加训练数据的数量或调整模型的超参数。

模型应用

将优化后的模型应用到实际问题中,进行预测、分类、聚类等任务。

对模型的应用结果进行监控和评估,不断改进模型以提高性能。

深度学习

深度学习的基本原理主要包括以下几个方面:

一、神经网络基础

神经元模型

    度学习的基础是人工神经网络,其灵感来源于生物神经系统。神经网络中的基本单元是神经元,它接收多个输入信号,对这些信号进行加权求和,然后通过一个激活函数处理得到输出。

    例如,典型的神经元接收来自其他神经元或输入层的数据,每个输入都有一个对应的权重。假设输入为,对应的权重为,则神经元的加权输入总和为,其中是偏置项。然后,通过激活函数得到神经元的输出。

多层神经网络

    深度学习中的神经网络通常由多个层次组成,包括输入层、隐藏层和输出层。

    输入层接收原始数据,隐藏层对数据进行多层次的特征提取和变换,输出层产生最终的预测结果。

例如,在图像识别任务中,输入层接收图像的像素值,隐藏层逐步提取图像的边缘、纹理、形状等特征,最后输出层给出图像所属的类别

web程序

Web程序的基本构成

Web程序通常由以下几个部分组成:

1. 前端:html,css写出展示给用户的页面,一般通过URL向服务器发送请求。

2. 后端:服务器端通过php,java,python等做数据处理,处理前端请求并执行相应的操作,如用户登录,下载请求。

3. 数据库:存储数据的地方,后端会调用数据库中的数据来处理请求。因为存储着用户数据,数据库安全十分重要

4. 服务器:一台性能强大的电脑,存放数据库和运行后端程序的硬件设备。 通常是Linux操作系统

WEB服务的工作流程

1. 用户通过前端(如浏览器)输入URL,发送请求到后端。

2. 后端接收到请求后,根据请求的类型(例如登录请求),调用数据库中的数据。

3. 数据库部署在服务器上,后端按照正确请求取出数据库中的数据。

4. 后端处理完请求后,将结果返回给前端,一般在页面展示给用户

web语言

1. HTML(Hyper Text Mark Language超文本标记语言):提到了点击劫持(Clickjacking)的问题,这是一种安全漏洞,攻击者可以利用它来

诱导用户在不知情的情况下与网页进行交互。

2. CSS:虽然CSS主要用于样式设计,但也存在注入问题。有时会被误认为是跨站脚本攻击

(XSS),尤其是对于新手来说。

3. JavaScript:涉及多种安全问题,包括:

XSS(跨站脚本攻击):分为DOM型、反射型和存储型。

点击劫持:与HTML中的点击劫持类似,是另一种诱导用户进行非自愿操作的攻击手

段。

请求走私(Request Smuggling):一种攻击技术,可以导致服务器解析请求时出现混

淆,从而执行恶意代码。

即使掌握了这些语言,仍然有很多知识需要学习。特别是在Web安全领域,只有掌握了这些语言,才能学习掌握XSS、点击劫持、Web缓存漏洞、请求走私和跨域等安全问题。因此,要进行Web渗透测试和安全防护,必须学习这些知识

代码库概述

代码库,也称为源代码库或版本控制系统,是一个用于存储和管理项目源代码的系统。它不仅保存了项目的源代码,还包括了各种功能模块,如集成持续集成(CI)、容器编排(如Kubernetes)、持续部署(CD)、仓库分组管理、版本管理、API接口、webhook等。代码库在DevOps流程中扮演着关键角色,它支持代码的提交、拉取、分支管理和版本控制等功能

代码库的关键功能

代码提交和拉取:开发者可以提交新的代码变更,并从代码库中拉取最新的代码更新。

分支管理:支持创建和管理不同的代码分支,以便进行特性开发、版本发布和问题修复。

版本控制:记录每次代码变更的历史,支持回滚到之前的版本。

权限管理:提供细粒度的权限控制,确保只有授权人员可以访问和修改代码库

常用的代码库如下

Git

Git是最流行的分布式版本控制系统,它由Linus Torvalds最初为Linux内核开发而创建。Git支持非线性开发,这意味着开发者可以自由地创建和合并分支,这对于团队协作和并行开发非常有用。Git还拥有强大的社区支持和丰富的插件生态系统,使得它成为了现代软件开发的标准工具

Subversion (SVN)

Subversion是一个集中式的版本控制系统,它由CollabNet公司开发。尽管SVN不像Git那样流行,但它仍然是许多组织和项目中使用的代码库工具。SVN的优点包括易于理解和使用,以及良好的性能

Mercurial

Mercurial是另一个分布式版本控制系统,它的设计理念是简单和易用。Mercurial提供了与Git类似的功能,但在某些方面更加简洁。它也被广泛用于开源项目和企业环境中

Perforce Helix Core

Perforce Helix Core是一个专业的版本控制系统,特别适合大型企业和游戏开发团队。它支持大规模的文件和大二进制文件的管理,以及高效的分支和合并操作。Perforce还提供了强大的权限管理和审核功能

Microsoft Team Foundation Version Control (TFVC)

Microsoft Team Foundation Version Control是Visual Studio Team Services的一部分,它是一个集中式的版本控制系统。TFVC与Git相比,更适合传统的瀑布式开发模型,它提供了详细的变更跟踪和工作项集成

框架

框架(Framework)是一个提供特定功能和结构的软件基础结构。它为开发者提供了一个基础的架构和模板,使得他们能够更加方便和快速地开发应用程序。框架通常包含预先编写的代码库、API和工具,以及定义应用程序架构和组件交互的约定和规则

框架的主要特征和优势

预先编写的代码库:框架通常包含大量预先编写的代码库,为开发者提供常见任务的解决方案,例如数据库访问、网络通信、用户界面设计等。

约定和模板:框架提供了一组约定和模板,以指导应用程序的结构和设计。这有助于保持代码的组织和一致性,也使得开发团队能够更容易地协作。

可重用性:框架的组件和代码通常是可重用的,这意味着开发者可以在不同的项目中重复使用相同的代码和模块,从而提高开发效率。

扩展性:许多框架设计为可扩展的,允许开发者添加新的功能和模块,以满足特定项目的需求。

工具和集成开发环境(IDE):框架通常伴随着一套工具和集成开发环境(IDE),这些工具可以帮助开发者更快更有效地开发和测试应用程序。

社区支持:热门的框架通常有活跃的开发社区,提供文档、教程、示例项目和第三方库,以帮助开发者学习和使用框架。

标准化:框架提供了标准化的方法来处理常见的编程任务和问题,有助于保持代码的清晰和易于维护1。

框架与库的区别

库是一组功能的集合,开发者可以根据需要在应用程序中调用库中的函数和类来完成特定的任务。而框架则是一种更加全面的开发工具,它提供了整个应用程序的基础架构,包括应用程序的设计、架构、组件之间的交互、消息传递等。框架为开发者提供了一种基础的应用程序结构,开发者需要按照框架的规范来编写应用程序的代码,才能与框架进行交互

框架不论怎么写都是基于最本质的的三种语言写的html,css,javascript,如果单纯从纯粹的Javascript去分析很费时间,一般都是通过框架去分析xss

前端漏洞概述

前端漏洞是指在网页浏览器端执行的代码中存在的安全缺陷,这些缺陷可能被恶意攻击者利用,从而对用户造成损失或对网站造成损害

常见前端漏洞类型

跨站脚本(XSS)

攻击者在网页中注入恶意脚本,当用户浏览该页面时,脚本被执行,可能导致用户信息泄露等。

跨站请求伪造(CSRF)

攻击者诱导用户在已登录的网站上执行非本意的操作,如转账等。

HTTP头部注入

攻击者通过注入恶意代码到HTTP响应头中,实现攻击目的。

目标遍历

攻击者通过构造特殊的文件路径,绕过服务器的安全限制,访问受限文件或执行系统命令。

SQL注入

攻击者通过输入恶意的SQL代码,绕过数据库的安全机制,获取或修改数据库中的数据。

文件下载漏洞

攻击者利用网站的文件下载功能,下载服务器上的其他文件甚至任意文件。

文件上传漏洞

攻击者上传恶意文件到网站服务器,如WebShell,以获取服务器控制权。

信息泄露

攻击者利用网站无意间向用户泄露敏感信息

点击劫持

攻击者利用了用户的信任和浏览器的特性,通过视觉欺骗手段诱使用户在不知情的情况下点击特定的按钮或链接

访问控制

系统中的访问权限设置存在缺陷,导致攻击者访问、修改或删除受保护的资源

Web缓存漏洞

利攻击者可以利用Web缓存机制这种方法提取web用户的私人及敏感信息

跨域漏洞

例如跨站脚本(XSS)攻击,跨源资源共享(CORS)绕过,JSONP漏洞,跨站请求伪造(CSRF)

请求走私漏洞

攻击者利用了HTTP协议中请求和响应的解析和处理方式的不一致性。攻击者通过构造特定的恶意请求,以欺骗服务器和代理服务器,从而绕过安全机制,执行未经授权的操作

防范前端漏洞

防范前端漏洞的关键在于对用户输入进行严格的验证和过滤,以及对敏感操作进行额外的验证和保护。例如,对于XSS漏洞,可以通过对用户输入进行HTML转义过滤来预防;对于CSRF漏洞,可以使用随机生成的token来验证请求的真实性;对于SQL注入漏洞,应该使用参数化查询接口来防止恶意SQL代码的注入

以上是对前端漏洞的一些基本介绍和防范措施。需要注意的是,随着技术的发展,新的漏洞类型和攻击手段也在不断出现,因此开发者需要持续关注最新的安全动态,及时更新和改进安全措施

后端漏洞概述

后端漏洞是指在软件的后端部分存在的安全缺陷,这些缺陷可能被恶意用户利用来进行未授权的访问、数据窃取、服务中断等攻击。后端通常负责处理业务逻辑、数据存储和管理,因此其安全性对于整个系统的稳定性至关重要。

常见后端漏洞类型

1. SQL注入漏洞

SQL注入漏洞是由于Web应用程序没有对用户输入的数据进行适当的验证和转义,导致攻击者可以通过输入恶意的SQL代码来操纵数据库查询。这可能导致敏感数据泄露、数据篡改或删除等严重后果。

2. 命令注入漏洞

命令注入漏洞发生在应用程序使用用户输入来构建操作系统命令时,如果未对输入进行适当过滤,攻击者可以注入恶意命令,从而在服务器上执行任意命令。

3. 文件包含漏洞

文件包含漏洞允许攻击者通过操纵应用程序的文件包含功能来加载和执行任意文件,这可能包括服务器上的敏感文件或远程恶意代码。

4. 不安全的直接对象引用

不安全的直接对象引用发生在应用程序没有正确验证用户对特定资源的访问权限时,攻击者可以通过猜测或枚举来访问其他用户的资源。

5. 安全配置错误

安全配置错误包括使用默认用户名和密码、启用不必要的服务和端口、弱加密算法等,这些都可能被攻击者利用来入侵系统。

6,反序列化漏洞

攻击者将恶意代码注入到应用程序中。这种漏洞通常发生在应用程序从不安全的来源反序列化数据时。当应用程序反序列化数据时,它将数据从一种格式(例如JSON或XML)转换为另一种格式(例如对象或列表)

7,服务端模板注入(Server-Side Template Injection,简称SSTI)

攻击者利用了公共Web框架的服务器端模板作为攻击媒介。这种攻击方式利用了嵌入模板的用户输入方式的弱点,攻击者可以通过注入恶意内容来操纵模板引擎,从而可能完全控制服务器

语言:.php,.java,.python,.golang,.c/c++,.lua,.nodejs,.ruby

后端语言有很多,比如php 就会有反序列化漏洞,sql注入漏洞,命令注入漏洞等问题,所以语言是很重要的如果你连后端语言都没写过怎么知道啥叫反序列化呢要想搞这些漏洞  以上语言必须学一种,比如请求走私就是涉及到协议问题了.

数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。它通常被定义为存储在计算机硬件上的相互有关联的数据集合

潜在漏洞

SQL注入漏洞

攻击者通过构造特殊的SQL语句,绕过身份验证,执行非授权操作

跨站脚本攻击(XSS)漏洞

利用恶意脚本攻击Web服务器,进而影响数据库

数据库缓冲区溢出漏洞

利用数据库缓冲区溢出,可能导致数据库不可用或数据泄露

数据库索引损坏漏洞

损坏数据库索引,破坏数据库完整性和一致性

数据库日志注入漏洞

注入恶意日志代码,导致数据库被攻击和监听

数据库分类:

1.关系型数据库

mysql,sqlsever,access,postgresql

非关系型数据库

mongodb,couchdb,neo4j,redis              

服务器程序

服务器程序是指运行在服务器上的软件,负责处理客户端请求并提供相应的服务。服务器程序通常需要具备高并发处理能力、稳定性、安全性等特点。

服务器程序的主要功能

  1. 请求处理:接收并解析客户端发送的请求。
  2. 数据处理:根据请求执行相应的业务逻辑,如数据库查询、数据计算等。
  3. 响应生成:将处理结果封装成响应消息,发送回客户端。
  4. 资源管理:管理服务器资源,如内存、CPU、网络带宽等。
  5. 安全管理:确保数据传输的安全性,防止恶意攻击。

常见的服务器程序类型

  1. Web服务器:如Apache、Nginx,主要用于处理HTTP请求,提供静态和动态网页服务。
  2. 应用服务器:如Tomcat、JBoss,用于部署和运行Java EE应用。
  3. 数据库服务器:如MySQL、PostgreSQL,提供数据存储和查询服务。
  4. 文件服务器:如FTP服务器,用于文件的上传和下载。
  5. 邮件服务器:如Postfix、Sendmail,用于电子邮件的收发。

服务器程序的开发语言

  1. Java:适合开发大型企业级应用,具有良好的跨平台性和丰富的框架支持。
  2. Python:适合快速开发原型和小型应用,有强大的Web框架如Django和Flask。
  3. Node.js :基于JavaScript,适合开发高并发的实时应用。
  4. C/C++:适合开发高性能的服务器程序,但开发难度较大。
  5. Go:适合开发高并发的网络服务,具有简洁的语法和高效的性能。

服务器程序潜在漏洞

操作系统漏洞

由操作系统本身或其组件的缺陷引起,可能被利用进行未授权访问或执行恶意代码

数据库漏洞

包括SQL注入、弱密码等,可能导致数据泄露或数据库被控制

网络服务漏洞

如FTP、SSH服务的配置不当或存在安全漏洞,可能被黑客利用进行非法访问

Web服务器漏洞

包括目录遍历、缓冲区溢出等,可能被利用来执行恶意代码或导致服务崩溃

应用程序漏洞

存在于具体应用层面上的漏洞,如跨站脚本攻击(XSS)、文件上传漏洞等

web程序 这个我这么一列出来就感觉很多是吧,前端语言就三种  但是他的库很多啊,框架也多,后端语言就更多了,很多人说要进红队 比如Java代码审计首先你得会Java呀  这个是避不开的,

再比如反序列化漏洞  Java php python都有反序列化漏洞你得想好搞哪一个 你还得会编程语言啊,web程序大致就是这些希望大家理解我讲的这些。

懂进攻,知防守。就是这样

脚本语言

常见的脚本语言,包括Lua、PHP、Go、Python和JavaScript。

解释了脚本语言的特性,即它们的源代码通常是可见的,可复制性高,例如通过浏览器的开

发者工具(F12)可以查看前端代码。

脚本语言的安全性

脚本语言可以被用来编写恶意软件,如病毒和木马。

具体的恶意软件示例,如beefxss(用JavaScript编写的木马)和PHP一句话木马。

编写恶意软件的要求

编写任何恶意软件之前,需要对编程语言的基本语法、代码库的调用有

深入的了解。

学会了编程语言也不一定能编写恶意软 件,还需要了解病毒的原理和构成。

总结

编写恶意软件需要对编程语言有深入的理解,并且需要了解病毒的工作原理。

如果连基本的编程语言都不会,就无法理解和编写恶意软件。

宏病毒概述

宏病毒是一种特殊的计算机病毒,它主要寄生在文档或模板的宏中。宏病毒的传播方式与其他病毒有所不同,它通常隐藏在宏代码中,当用户打开被感染的文档时,宏病毒就会悄悄地传播和操控系统。宏病毒的危害性不容忽视,它可以窃取用户的个人信息,如账号、密码等,导致用户隐私泄露。同时,宏病毒还可以操控系统进行远程攻击、破坏文件和操作系统,给用户带来严重的经济和数据损失。

宏病毒的传播途径

宏病毒可以通过多种途径传播,包括电子邮件附件、共享文档等。由于宏病毒具有很高的传播性和隐蔽性,用户往往在不知不觉中就被感染。例如,梅丽莎病毒就是通过Microsoft Word文档传播的,用户只需打开含有病毒的文档,计算机就会受到感染。

防范宏病毒的措施

为了保护计算机安全,用户需要采取一些防范措施来预防宏病毒的感染。首先,应保持操作系统和应用程序的及时更新,修补已知的安全漏洞。其次,谨慎打开未知来源的文档和附件,尤其是来自不可靠的电子邮件或网络来源。此外,使用安全的网络防火墙和杀毒软件也是必要的,可以帮助检测和拦截潜在的宏病毒

编写宏病毒的要求

编写宏病毒需要了解宏的代码构成,即病毒是由代码构成的。

宏代码通常是用特定的编程语言编写的,如VB(Visual Basic)或C#(C Sharp)。

总结

了解宏的代码构成和使用的编程语言对于编写宏病毒至关重要。

宏病毒的编写和理解需要对相关编程语言有一定的知识

批处理文件(bat)和PowerShell

批处理文件(bat)和PowerShell, 这两个工具都是微软开发的,用于Windows操作系统。

它们的主要作用是用于内网渗透,即在组织的内部网络中进行安全测试和攻击模拟。

内网渗透

内网渗透不仅仅是指域渗透,域渗透只是内网渗透的一部分。

内网渗透和公网渗透的主要区别在于内网渗透涉及到域的控制和利用。

学习要求

为了理解内网渗透的概念和方法,需要对批处理文件和PowerShell有一定的了解。

学习者应该具备基础的编程知识,如VB(Visual Basic)语法,以便能够理解和应用在内网渗 透中使用的技术。

CAD LISP 病毒概述

CAD LISP 病毒是一种专门针对 AutoCAD 软件的病毒,它利用 AutoCAD 的 LISP 脚本文件进行传播和执行恶意操作。这种病毒通常会在 AutoCAD 启动或打开特定文件时自动运行,可能导致软件功能异常、生成不必要的文件或传播到其他计算机。

CAD LISP 病毒的传播方式

CAD LISP 病毒通常通过以下几种方式传播:

  • 自动加载:当打开 AutoCAD 图形 DWG 文件时,系统会自动运行相同文件夹中的名为 .lsp 的脚本文件。病毒制作者会利用这一点,将恶意 LISP 脚本文件放入这些文件夹中,从而在用户不知情的情况下执行恶意代码1。
  • 文件感染:某些 CAD LISP 病毒会感染 AutoCAD 的主程序或相关文件,例如 acad.lsp 或 acaddoc.lsp 文件。这些文件在 AutoCAD 启动时会被加载,从而使得病毒得以执行3。

CAD LISP 病毒的危害

CAD LISP 病毒的危害主要包括:

  • 功能异常:病毒可能会导致 AutoCAD 软件的部分功能失效,例如浩辰云建筑、天正菜单无法正常加载,或者某些命令无法使用1。
  • 文件生成:病毒可能会在用户打开图纸时在其文件夹下自动生成 aCADdoc.lsp 文件,这不仅占用磁盘空间,还可能进一步传播病毒1。
  • 性能影响:病毒的执行可能会消耗大量系统资源,导致 AutoCAD 卡顿或响应缓慢

AutoLISP(脚本病毒)

AutoLISP是另一种不常见的脚本语言,通常用于CAD软件。

由于这种语言不常见,主流杀毒软件对其查杀能力较弱,使得用这种语言编写的病毒更难被

检测和清除

总结

脚本病毒可以利用不常见的编程语言编写,这使得它们难以被主流杀毒软件检测。

了解这些脚本语言对于防范和理解这类病毒至关重要

注:签名匹配是最传统的病毒检测方法。杀毒软件维护着一个庞大的病毒签名数据库,每个签名代表一个已知病毒的独特标识。当用户扫描文件或系统时,杀毒软件会将文件的内容与数据库中的签名进行比较。如果找到匹配项,文件就被标记为含有病毒。所以不常见的编程语言编写的病毒,难以被主流杀毒软件检测

BIOS病毒概述

BIOS病毒是一种特殊的计算机病毒,它能够感染计算机的基本输入输出系统(BIOS),这是一种位于计算机主板上的固件,负责初始化硬件并启动操作系统。BIOS病毒通常难以检测和清除,因为它们在操作系统启动之前就已经开始运行1。

BIOS病毒的工作原理

BIOS病毒利用了BIOS的特殊性质,即在操作系统启动之前就开始运行。这种病毒通常会在BIOS的系统管理模式(SMM)下运行,这种状态下程序对操作系统是透明的,因此传统的安全软件很难发现和清除它们1。

BIOS病毒的危害

BIOS病毒的危害包括:

  • 数据窃取:病毒可以在SMM状态下窃取电脑内存中的敏感资料,传统安全软件对此无能为力1。
  • 系统不稳定:BIOS病毒可能导致系统不稳定,甚至无法启动3。
  • 难以清除:一旦BIOS被病毒感染,传统的杀毒软件往往无法有效清除,可能需要专业的技术人员进行处理3。

如何防范和清除BIOS病毒

为了防范和清除BIOS病毒,可以采取以下措施:

  • 定期更新BIOS:及时更新BIOS固件到最新版本,以修补已知的安全漏洞1。
  • 使用安全软件:虽然传统安全软件对BIOS病毒效果有限,但仍应保持最新的防病毒软件运行1。
  • 物理保护:对于关键系统,可以考虑使用物理开关来防止未经授权的访问和修改

声明
学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负

你可能感兴趣的:(安全,笔记)