网络攻击
利用网络技术对计算机系统或网络本身的安全漏洞发起的任何形式的恶意行为。这种行为旨在破坏系统的正常运行、窃取敏感信息、侵犯用户隐私或达到其他不正当的目的。
web攻击
针对网站服务器或用户上网行为的恶意行为,目的在于植入恶意代码、修改网站权限或获取网站用户的隐私信息。
XSS攻击
XSS攻击通过将恶意代码植入到网页中,当其他用户浏览该网页时,这段恶意代码就会被执行,从而可以窃取用户的cookie等信息或者进行其他恶意操作。
存储型XSS
将恶意代码永久存储在目标网站的数据库中。
反射型XSS
通过URL传递并一次性展示恶意代码。
DOM型XSS
客户端的DOM解析相关,通过修改DOM节点来实施攻击。
CSRF攻击
跨站请求伪造攻击,通过伪造用户请求利用用户已认证的身份对服务器执行非授权的操作,例如转账等敏感操作。
SSRF攻击
服务器端请求伪造攻击,攻击者利用应用程序的逻辑缺陷,让服务器向非预期的服务器或服务发送请求,可能用于访问内部系统、端口扫描、服务探测等恶意行为。
SQL注入攻击
SQL注入攻击发生在应用程序将SQL语句与用户输入参数合并,且未经过适当的过滤与验证直接执行,允许攻击者在后端数据库上执行非法的SQL命令。
文件上传漏洞
文件上传漏洞是指攻击者通过上传恶意文件到网站服务器,然后执行这些文件以获得服务器控制权或进行其他恶意活动的攻击方式。
关键函数:
move_uploaded_file():将临时文件位置的文件移动到新位置。
isImage():自定义函数,用于检查上传的文件是否为合法的图片格式。
getimagesize():获取图像的大小以及一些其他信息,如宽度、高度和MIME类型。
业务逻辑漏洞
这类漏洞与具体的应用程序相关,例如参数篡改、重放攻击、权限控制问题等。系统设计阶段应考虑防范此类漏洞,避免实现连续编号或越权操作等功能。
越权访问
越权访问是一种常见的业务逻辑漏洞,包括水平越权和垂直越权两种形式。这类漏洞的产生主要是因为应用程序没有正确校验用户权限或者身份,导致用户能够访问他们本不应访问的资源或数据。
水平越权
攻击者可以访问与其具有相同权限等级的其他用户的资源。
垂直越权
低权限用户能够访问到高权限用户的数据或功能。
密码找回
密码找回功能是许多Web应用提供的一项便民服务,但如果没有正确实现,就可能成为攻击者攻击的目标。例如,如果密码找回功能中的验证码没有被妥善保护或验证,攻击者可以通过暴力破解或其他手段获取验证码,进而重置用户密码并控制账户。
验证码漏洞
验证码是用于区分用户是计算机还是人的自动识别技术,但如果实现不当,它也会成为攻击的途径。例如,如果验证码在验证后没有失效,或者可以被预测,攻击者就可以绕过这一安全机制执行恶意操作。
信息泄露
由于Web服务器或应用程序没有正确处理特殊请求,导致敏感信息如用户名、密码、源代码等被泄露。防止此类攻击需要在应用程序中加密传输敏感信息,并在错误时避免输出调试信息。
暴力破解
攻击者通过自动化工具尝试大量可能的密码组合,以破解用户密码获得账户访问权限。防御此类攻击的常用方法包括限制密码尝试次数和采用复杂度高的密码。
远程命令执行(RCE)
攻击者通过网络向服务器发送恶意数据,以执行任意命令。这种漏洞的存在可以直接导致整个系统的控制权限被外部攻击者获取,从而访问、修改或删除服务器上的任何数据。
常见利用函数:
PHP:system(), exec(), shell_exec()
ASP.NET:System.Diagnostics.Process.Start()
Java:Runtime.exec()
xxe注入
由于应用程序解析输入的XML时,没有禁止外部实体的加载,攻击者通过构造特定的DTD,可以指定XML处理器加载并执行来自外部源的实体。
反序列化
序列化是将对象的状态信息转换为可以存储或传输的形式的过程,如写入到文件中或在网络上进行传输。反序列化则是将这些存储或传输的形式还原为原有对象的状态。
当应用程序反序列化来自不可信源的数据时,如果没有适当的验证和安全措施,攻击者可以操纵这些数据来执行恶意代码。
文件包含
应用程序将用户可控的数据作为文件名动态地包含到服务器端脚本中时,攻击者使应用程序加载并执行预设路径以外的文件。
本地文件包含(LFI)
通过提交特制的请求,攻击者可以迫使服务器包含如/etc/passwd等系统文件,从而获取诸如用户名、用户ID及归属组ID等信息。在某些情况下,通过.user.ini之类的配置文件,还可以执行远程代码执行。
远程文件包含(RFI)
攻击者可以设置一个远程服务器,在该服务器上存放恶意PHP代码,然后通过文件包含漏洞,让目标服务器通过URL包含这个远程文件,从而实现在目标服务器上执行远程代码。常见的利用包括数据窃取和植入Web shell等。
点击劫持
攻击者通过透明的iframe页面覆盖在目标网页上,诱使用户进行操作时实际与上层页面交互。
不安全传输协议
在某些旧的或不够安全的协议中存在的缺陷,这些缺陷可能导致数据泄露或其他安全问题。
检测地址:
https://www.ssllabs.com/ssltest/
https://inspect.rapydblok.com/
缓冲区溢出攻击
利用程序中存在的缓冲区溢出漏洞,通过输入超出缓冲区边界的恶意数据来破坏程序的正常执行流程。
恶意代码
没有实际作用但会带来危险的程序代码,通常违反目标系统的安全策略,旨在破坏系统的完整性及可用性,造成信息泄露、资源滥用等问题。恶意代码的性质主要包括其破坏性、隐蔽性、自我复制性和传播性。
计算机病毒
这是一种能够自我复制并感染其他文件的恶意代码。它通过将自身复制到其他文件或系统中,破坏目标系统的正常运行。计算机病毒的主要性质包括传染性、隐蔽性、感染性、潜伏性和破坏性。
网络病毒
这类病毒通过网络传播,感染网络中的可执行文件。它们可能通过电子邮件、即时通讯工具或其他网络媒介传播。
文件型病毒
这种病毒主要感染计算机中的文件。它们通过将自身代码附加到正常文件中,并在文件被执行时激活来传播。
引导型病毒
这种病毒感染启动扇区和硬盘的系统引导扇区,主要通过外部存储设备如U盘传播,其历史悠久,但随着操作系统安全性的提高,这类病毒已逐渐减少。
混合型病毒
这种病毒同时具有网络病毒和文件型病毒的特点,能够更广泛地感染系统和网络环境。
蠕虫病毒
这种病毒通过网络或系统漏洞传播,无需人为干预即可自我复制并感染其他计算机。它们通常利用邮件系统或其他网络服务来加速其传播速度。
木马病毒
这种病毒伪装成合法软件,诱使用户下载并安装,然后为黑客打开后门,窃取敏感信息或对受感染的计算机进行远程控制。
脚本病毒
这种使用脚本语言编写的病毒,通过网页或邮件传播,不需要编译即可执行,常见于JavaScript和VBScript中。
宏病毒
这种针对Office系列软件的病毒,通过在文档的宏命令中植入恶意代码传播,当用户打开带有宏的文档时,病毒就会被激活。
后门病毒
这种通过网络传播,给系统开后门,给用户的计算机带来安全隐患。
种植程序病毒
这种运行时从体内释放出一个或几个新的病毒到系统目录下,由释放出来的新病毒产生破坏。
破坏性程序病毒
这种本身具有好看的图标来诱惑用户点击,当用户点击时,病毒会对计算机产生破坏。
玩笑病毒
这种也是本身具有好看的图标诱惑用户点击,当用户点击时,病毒会做出各种破坏操作来吓唬用户,但其实病毒并没有对计算机产生破坏。
捆绑机病毒
这种会使用特定的捆绑程序将病毒与一些应用程序如QQ、浏览器等捆绑起来,表面上看是正常的文件。当用户运行这些被捆绑的应用程序时,会隐藏的运行捆绑在一起的病毒,从而给用户造成危害。
特洛伊木马
这是一种伪装成正常程序的恶意代码。木马通常隐藏在用户下载的软件中,一旦运行,就会执行恶意操作,如远程控制受害计算机、窃取敏感信息等。
计算机蠕虫
这种恶意代码通过网络进行传播。它通过扫描网络中的漏洞,利用这些漏洞进行传播,并占用大量的网络资源,导致网络拥堵。
后门
这是一种能够绕过系统安全措施并在用户不知情的情况下远程控制计算机的恶意代码。攻击者可以通过后门随时访问受感染的系统,监控用户活动或窃取数据。
逻辑炸弹
这是一种在满足特定条件时触发的恶意代码。它通常被植入到系统中,当满足某个条件(如时间、日期、特定操作等)时,逻辑炸弹就会执行破坏操作。
间谍软件
这是一种能够窃取用户隐私信息的恶意代码。通过记录用户的键盘操作、浏览习惯等,间谍软件将用户的信息发送给攻击者,给用户带来损失。
广告软件
这是一种能够在计算机上弹出广告窗口的恶意程序。尽管它可能不直接损坏系统,但广告软件会干扰用户的正常使用,降低计算机的性能。
加密软件
这是一种通过加密用户计算机上的文件来勒索用户的恶意程序。攻击者要求支付赎金以解锁文件,这对用户的数据安全构成直接威胁。
拒绝服务
使目标系统或网络资源不可用或显著减慢其响应速度。
风暴型DoS攻击
此类攻击通过发送大量数据包来消耗目标网络的带宽或目标系统的资源。
DDoS分布式拒绝服务攻击
利用由大量互联网连接设备组成的僵尸网络对目标进行协同攻击,从而耗尽目标系统的资源或网络带宽。
TCP SYN泛洪
这种攻击利用TCP协议的三次握手机制。攻击者发送大量带有伪造源IP地址的TCP SYN包给目标主机,这些包请求建立连接。目标主机响应SYN-ACK包,并等待ACK确认,但这个确认永远不会到来,因为源IP是伪造的。这导致目标主机上积压大量的半开连接,最终耗尽其资源。
UDP泛洪
用户数据报协议(UDP)是一个无连接的协议,通常用于如DNS解析和VoIP等服务。在UDP泛洪攻击中,攻击者向目标主机或网络发送大量的UDP数据包,通常随机选择端口。如果目标主机上的端口没有被运行的服务使用,它通常会回应一个ICMP“端口不可达”的消息。这种大量的数据流可以迅速消耗目标网络的带宽。
ICMP Echo请求泛洪
这类攻击也被称为“Ping floods”,攻击者向目标主机发送大量ICMP Echo请求(即Ping请求),迫使目标主机回应ICMP Echo回复。这种攻击同样可以迅速消耗目标网络的带宽,导致正常服务无法进行。
HTTP Flood攻击
与上述基于量的攻击不同,HTTP Flood是通过向Web服务器大量请求真实的网页或资源来发起攻击,这种方式更难以检测,因为它模仿正常用户的行为。攻击者可能会使用僵尸网络来放大请求的数量,从而耗尽服务器的资源或带宽。
剧毒包型DoS攻击
这种攻击利用协议本身或其软件实现中的漏洞,通过发送特制的畸形数据包使受害者系统崩溃。
Ping of Death攻击
这种攻击通过发送超大尺寸的ping数据包(IP分片),使得接收方在重组这些分片时,因为无法处理异常大的数据包而导致系统崩溃或重启。
Teardrop攻击
此攻击也称为碎片攻击(泪滴攻击),它利用IP数据包分段/重组技术中的漏洞。攻击者发送异常的分段数据包,其中包含重叠偏移量,受害系统在尝试重组这些碎片时会因处理错误而崩溃。
Land攻击
这种攻击会发送源地址和目的地址相同的SYN数据包,这导致系统不断地尝试与自己建立TCP连接,从而造成系统资源耗尽。
WinNuke攻击
此攻击方法发送一个端口为0的TCP NUKE数据包到目标主机的139端口上,可能导致Windows系统的BSD/OS的TCP/IP栈崩溃。
Smurf 攻击
攻击者向网络广播地址发送大量ICMP回显请求数据包,并将其源IP地址伪装成受害者的IP地址。当这些请求到达网络上的主机时,由于是广播请求,每台主机都会向源IP地址(即受害者的IP)回复ICMP回显响应。结果,受害者会被巨大的流量所淹没,从而导致网络拥堵或者使受害者的系统崩溃。
Fraggle 攻击
攻击者将伪造的UDP消息发送到网络的广播地址,这些消息通常使用端口号7(ECHO)或19(Chargen)。这些端口在收到数据后会产生回应,端口7回应接收到的内容,而端口19则生成一个字符流。如果攻击者将这些伪造的UDP包的源IP设置为受害者的地址,那么所有接收到广播的系统都会向受害者发送响应,从而用垃圾流量填满受害者的网络。
重定向型DoS攻击
攻击者通过修改网络中的一些参数或ARP表等,使得数据包被错误地重定向到其他地方,从而导致服务中断。
ARP欺骗
攻击者发送伪造的ARP响应给网络上的设备,错误地将攻击者的MAC地址与网络上其他主机或网关的IP地址关联起来。这样,当网络设备需要向特定的IP地址发送数据时,就会错误地发送到攻击者的MAC地址,导致正常的通信被重定向到攻击者控制的设备上。
DNS缓存投毒
攻击者通过向DNS服务器发送伪造的或恶意的DNS记录,导致DNS服务器缓存错误的IP地址信息。因此,当用户尝试访问特定的域名时,他们会被重定向到一个恶意的网站而不是原本请求的合法网站。这种攻击不仅能够导致服务中断,还可能让用户面临中间人攻击或其他安全威胁。
网络侦察攻击
网络侦察攻击是网络攻击的初始阶段,其目的是收集目标网络的信息。
主机存活探测
主机存活性探测是一种网络扫描技术,用于确定网络中主机的在线状态和可达性。
Ping扫描(-sn)
通过发送ICMP回显请求报文来探测目标主机是否存活。如果收到ICMP回显回复报文,则说明目标主机是存活的。
SCTP INIT Ping扫描 (-PY)
使用SCTP INIT数据包来探测目标主机是否存活。这在对方开启了ICMP数据包过滤时尤其有用。
动态ARP检测 (-PA)
这种扫描方法利用ARP协议尝试发现局域网内的设备。它比基于ICMP的主机发现更快,但只适用于局域网内部。
主机端口扫描
主机端口扫描是一种网络扫描技术,用于发现目标主机上开放的端口以及运行的服务。
TCP Connect()扫描 (-sT)
这是最基本的扫描方法,通过尝试与目标端口建立完整的TCP连接来判断端口是否开放。这种方法简单直观,不需要特殊权限,但可能会在系统日志中留下大量连接记录,因此容易被发现。
TCP SYN扫描 (-sS)
相比TCP Connect()扫描,TCP SYN扫描更加隐蔽。它只发送SYN包而不完成后续的TCP三次握手过程,如果收到SYN/ACK响应,表明端口开放,然后发送RST包终止连接过程。这种扫描方式不会在服务器上留下记录,但需要更高的权限来构造原始的SYN数据包。
ACK扫描 (-sA)
ACK扫描通过发送设置了ACK标志的TCP数据包到目标端口进行工作。如果目标端口是开放的并且没有防火墙阻止这种探测,那么通常不会有任何响应。但如果端口是被防火墙保护的或者关闭的,通常会收到一个RST数据包。
TCP FIN扫描 (-sF)
FIN扫描通过发送带有FIN标志的TCP数据包到目标端口进行工作。按照TCP协议的规定,如果端口开放,该端口应当忽略此FIN包;如果端口关闭,则通常会回复一个RST包。FIN扫描对于区分服务运行的操作系统类型(如Unix或Windows)特别有用,因为不同系统对FIN包的反应可能不同。
TCP Xmas扫描 (-sX)
XMAS扫描发送的TCP数据包中FIN、URG和PUSH标志位都被设置为1。这种组合看起来像是圣诞树的灯光装饰,因此得名XMAS扫描。与NULL扫描类似,它依赖于不同系统对异常标志处理的差异来探测端口状态。如果端口关闭,大多数遵守规范的系统会回应RST包。
UDP扫描 (-sU)
UDP扫描通过发送UDP数据包到目标端口,然后观察是否有应答来进行。某些情况下,如果端口关闭,系统可能会返回一个ICMP port unreachable错误,从而揭示端口的状态。由于UDP是不面向连接的协议,这种扫描方法不同于TCP。
窗口扫描 (-sW)
这种扫描方式发送一个ACK包到目标端口。如果端口开放,那么系统会返回RST包。窗口扫描可以用来探测那些被防火墙保护的端口。
IP协议扫描 (-sO)
通过发送带有不同IP协议类型的UDP数据包来探测端口的状态。这种方法可以检测某些特定服务的存在与否。
RPC扫描 (-sR)
远程过程调用(RPC)扫描用来发现RPC服务和程序号。这对于理解基于Sun RPC的网络服务特别重要。
NULL扫描(-sN)
NULL扫描是一种秘密扫描技术,它发送一个没有任何标志位(Control Bits)设置的TCP数据包到目标主机的指定端口。
被动攻击
被动攻击通常不会直接影响目标系统的功能,但能够泄露敏感信息,威胁数据的保密性和完整性。
中间人攻击(MITM)
攻击者插入到通信双方之间,秘密地拦截和可能修改通信双方的会话内容。
Wi-Fi仿冒
攻击者设置一个恶意的无线接入点,当用户连接到这个网络时,攻击者就可以在用户和互联网之间插入自己作为中间人。
DNS缓存污染
攻击者通过篡改DNS缓存,将用户的请求重定向到恶意网站,从而在用户无察觉的情况下截取信息。
SSL/TLS降级
攻击者利用旧版或弱化的加密协议中的漏洞,强行降级安全连接至不安全的协议版本,以便于进行数据窃取或篡改。
ARP攻击
在本地网络中,攻击者利用ARP协议的特点,发送伪造的ARP消息,从而欺骗设备,拦截数据包。
ARP主机欺骗
攻击者发送伪造的ARP响应给特定的目标主机,使得该主机错误地将攻击者的MAC地址与网络上其他主机的IP地址关联起来。
ARP网关欺骗
ARP网关欺骗则是指攻击者针对网络中的网关设备发起ARP欺骗,使其将错误的MAC地址记录到ARP缓存表中,从而影响整个网络的数据流向。
会话劫持
攻击者通过获取会话ID或其他认证信息,接管用户的会话,从而以用户的身份执行操作。
网络窃听
网络窃听涉及截获网络传输的数据包以获取敏感信息。这种攻击方式允许攻击者悄无声息地监视数据传输,而不会被轻易发现。
嗅探和监控
使用嗅探工具,攻击者可以捕获网络上的数据包进行分析。这种技术通常用于同一网段内,可以在不被检测到的情况下收集通过网络传输的敏感信息。
信息收集
使用搜索引擎来搜集关于目标的公开可用信息,在不直接与用户交互的情况下,通过监控社交媒体平台上的公开帖子和活动,攻击者可以收集有关个人和组织的重要信息。
社会工程学
社会工程学攻击是一种针对个人或集体的心理和行为进行的欺骗手段,以获取重要的私人信息、系统访问权、重要数据和虚拟财产等。这类攻击利用了人的信任、好奇心、贪婪等心理特点,通过一系列的策略和技巧实施欺诈。
网络钓鱼
攻击者通过发送看似合法但包含欺骗性质的电子邮件、语音通话、即时聊天消息、网络广告或虚假网站等方式,诱使受害者提供机密的个人信息或公司信息。
鱼叉式网络钓鱼
相较于普通的网络钓鱼,鱼叉式网络钓鱼更加精准地定位到特定的个体或组织。攻击者会深入研究目标的背景信息,如工作环境、职位、联系人等,然后设计并发送高度定制化的欺骗信息。
钓鲸攻击
这种类型的网络钓鱼专注于特定高价值目标。攻击者通常会进行彻底的研究,以确保邮件内容与受害者的业务活动相关且具有高度的个性化。
搜索引擎优化(SEO)网络钓鱼
攻击者利用搜索引擎的算法,通过优化关键词提高假冒网站在搜索结果中的排名。当用户搜索特定服务时,可能会不小心访问到这些假冒网站,并在不知情的情况下提供个人信息。
克隆网络钓鱼
这种攻击涉及复制合法的电子邮件或消息,稍作修改后发送给受害者。这些修改可能包括改变发件人地址或邮件中的链接,使其指向攻击者的控制网站。由于邮件内容大多与原邮件相同,受害者很难识别出这是一个骗局。
诱饵攻击
攻击者利用受害者对某些奖励的渴望来实施欺诈。这可以是物理形式的,如预先植入恶意程序的U盘作为免费赠品分发;也可以是数字形式的,如提供免费的在线服务或礼品下载链接。这些“奖励”背后往往隐藏着恶意软件或用于窃取信息的陷阱。
水坑攻击
攻击者首先识别出目标群体经常访问的网站,然后在这些网站上部署恶意代码。当受害者访问这些被篡改的站点时,恶意软件就会被下载并安装到他们的计算机上,从而让攻击者获得入侵的机会。