很高兴我的原创功能终于恢复了!被小可爱们整麻了,天天举报我,没办法,我删了大量原创的文章(有些确实存在乱用,有些明明有用心写的文章,也被判断乱用原创,服了)。虽然写原创内容比较耗时,但我会坚持下去。
我发现仅做威胁情报的竞争力有限,所以决定投入 SRC(安全应急响应中心)漏洞挖掘领域。如果有提供相关 SRC培训的机构感兴趣合作, -- 教会我挖洞,这不是教学质量活生生的广告吗,双赢啊。这不比天天发自嗨的广告强。🐶
我先写一篇全面的漏洞类型汇总文章,建立一个完整的知识框架。这样可以:
先对各类漏洞有整体认识 再逐个深入学习攻破 循序渐进,更容易掌握
关于分类方式
我的分类方式会比较灵活实用(其实就是不系统,怎么方便记忆怎么来),不会刻意追求像传统的前端/后端那样严格的体系。目标是:
尽可能涵盖所有已知漏洞类型 重在帮大家建立基础认知 为后续深入学习打好基础
虽然很多安全书籍只介绍十几种常见漏洞,但我想提供一个更全面的视角。这篇文章会更注重广度,不会太关注深度。分类也肯定是不规范的,不要在意这个分类,只是为大家构建一个完整的知识地图。水平不行,写的比较拉,我知道。
注入类攻击
CRLF 注入
CRLF注入是一种Web安全漏洞,攻击者通过在HTTP参数或URL中插入回车符(CR, r)和换行符(LF, n)来操纵HTTP响应。在不同系统中,Windows需要CR+LF标记行尾,而Linux只需LF;HTTP协议统一使用CR+LF。
常见攻击方式包括HTTP响应拆分、头部注入和日志伪造。防御措施主要有:1) 实施输入验证,过滤rn字符;2) 使用安全的编码函数处理用户输入;3) 采用参数化查询;4) 配置合适的HTTP响应头;5) 使用现代Web框架提供的安全特性。
Orange 大佬,刚靠 CRLF注入,获得 20000$。🐶
XSS注入
跨站脚本攻击(Cross-Site Scripting)是最常见的Web应用安全漏洞之一。攻击者通过在受信任的网站上注入恶意脚本代码,当其他用户访问该页面时,恶意代码会在用户的浏览器中执行。XSS攻击可以窃取用户的会话令牌、Cookie等敏感信息,实施钓鱼攻击,或者修改页面内容。XSS分为存储型(持久性)、反射型(非持久性)和DOM型三种(国外的一些书籍上还有另外两种,self型和 blind 型)。存储型XSS的恶意代码会被永久存储在目标服务器上;反射型XSS的恶意代码存在于URL中;DOM型XSS则是通过修改页面DOM节点来实现攻击。
SQL注入
SQL注入是一种代码注入技术,攻击者通过在应用程序的输入字段中插入恶意的SQL代码片段,使这些代码在数据库中执行。当应用程序没有正确过滤或转义用户输入时,就会产生SQL注入漏洞。攻击者可以通过SQL注入实现未经授权的数据库访问,进而窃取、修改或删除数据库中的敏感信息。此外,某些SQL注入还可能导致服务器文件系统的访问和命令执行。SQL注入的危害极大,可能导致整个数据库的泄露或破坏。
NoSQL注入
NoSQL注入与传统的SQL注入类似,但针对的是非关系型数据库。由于NoSQL数据库使用不同的查询语言和数据结构,攻击方式也有所不同。攻击者可以通过构造特殊的查询条件,绕过认证或访问未经授权的数据。MongoDB等NoSQL数据库如果配置不当,可能导致注入攻击,特别是在使用JavaScript作为查询语言的场景下。
命令注入
命令注入是一种通过操纵应用程序将恶意系统命令注入到主机操作系统中执行的攻击技术。当应用程序在调用系统命令时未对用户输入进行适当的过滤,攻击者就可以注入额外的命令,这些命令将以应用程序的权限级别执行。命令注入可能导致服务器被完全控制,包括文件读写、网络连接建立、恶意程序下载等。
XXE注入
XML外部实体(XXE)注入是一种针对解析XML输入的应用程序的攻击。当XML解析器被配置为处理外部实体引用时,攻击者可以通过构造特殊的XML内容,读取服务器上的文件,执行服务器端请求伪造(SSRF),或发起拒绝服务攻击。XXE攻击可能导致敏感数据泄露、内网探测、远程代码执行等严重后果。
XSLT注入
XSLT(可扩展样式表语言转换)注入发生在应用程序允许用户提供或修改XSLT样式表时。由于XSLT具有强大的功能,包括文件操作和命令执行,攻击者可以通过注入恶意的XSLT代码来访问服务器资源或执行任意命令。这种攻击尤其危险,因为XSLT处理通常在服务器端进行。
XPATH注入
XPATH注入与SQL注入类似,但针对的是XML文档查询。当应用程序使用用户输入构造XPATH查询而未进行proper验证时,攻击者可以修改查询逻辑,访问或操作XML文档中的未授权数据。这种攻击可能导致敏感信息泄露或认证绕过。
SAML注入
SAML(安全断言标记语言)注入攻击针对使用SAML进行身份认证的系统。攻击者通过修改SAML请求或响应中的参数,可能绕过认证机制或提升权限。这种攻击特别危险,因为SAML通常用于实现单点登录(SSO)系统。
服务端包含(SSI)注入
SSI注入发生在网站允许使用服务器端包含指令时。攻击者可以注入SSI指令,这些指令在服务器端执行,可能导致敏感信息泄露、远程命令执行等。SSI指令能够执行命令、包含文件,因此SSI注入可能导致服务器完全被控制。
服务端模板(SSTI)注入
模板注入攻击发生在应用程序直接将用户输入嵌入到模板中而不进行适当的转义时。现代Web框架大量使用模板引擎,如果配置不当,攻击者可以注入模板指令,这些指令在服务器端执行,可能导致远程代码执行。SSTI的危害取决于模板引擎的功能和配置。
GraphQL注入
GraphQL注入是一种针对GraphQL API的攻击。由于GraphQL提供了灵活的查询能力,如果没有适当的访问控制和输入验证,攻击者可能构造恶意查询,导致信息泄露、拒绝服务或权限提升。注入可能发生在查询参数、变量或指令中。
劫持类
WebSockets劫持
WebSocket劫持发生在WebSocket连接建立过程中的握手阶段或通信过程中。攻击者可能通过中间人攻击、跨站脚本等方式劫持WebSocket连接,监听或修改通信内容。这种攻击特别危险,因为WebSocket通常用于实时通信。
Web缓存劫持
Web缓存劫持是一种攻击者能够通过操纵缓存服务器来服务恶意内容的攻击。这可能导致用户接收到被污染的缓存内容,而不是来自原始服务器的真实响应。攻击成功可能导致用户信息泄露或执行恶意代码。
Web缓存欺骗
Web缓存欺骗是一种攻击者利用缓存服务器的行为来获取或污染其他用户缓存内容的技术。通过精心构造的请求,攻击者可能使缓存服务器存储和提供不应该被缓存的敏感信息。
点击劫持
点击劫持是一种界面重叠攻击,攻击者将透明的目标网站覆盖在诱饵网页上,诱导用户在不知情的情况下点击执行某些操作。这种攻击可能导致用户无意中进行敏感操作,如修改账户设置、发送消息等。
DNS劫持
DNS劫持是一种通过篡改DNS解析结果,将用户引导到恶意网站的攻击。攻击者可能通过污染DNS缓存、修改本地hosts文件或攻击DNS服务器来实现劫持。这种攻击可能导致钓鱼、恶意软件传播等问题。
泄露类
API密钥泄露
API密钥泄露是一种严重的安全问题,可能发生在代码提交、日志记录或错误消息中。泄露的API密钥可能被攻击者用来访问受限服务或资源,可能导致数据泄露、服务滥用或财务损失。
ORM泄露
ORM泄露发生在应用程序错误地暴露了对象关系映射的细节。这可能包括SQL查询、数据库结构或敏感数据。攻击者可能利用这些信息来构建更有针对性的攻击。
不安全实践
不安全的直接对象引用
不安全的直接对象引用(IDOR)是一种访问控制漏洞,攻击者可以通过修改引用其他对象的参数来访问未授权的资源。这种漏洞通常出现在URL参数、表单字段或API端点中。
不安全的管理界面
不安全的管理界面是指管理后台或管理API缺乏适当的访问控制、认证或加密保护。攻击者可能通过找到这些接口来获取管理权限或敏感信息。
不安全的随机性
不安全的随机性指在需要加密安全的随机数的场景下使用不适当的随机数生成方法。这可能导致可预测的令牌、密钥或其他安全凭证,使系统容易受到攻击。
不安全的源代码
不安全的源代码包括客户端源代码中的敏感信息泄露、不安全的注释或调试信息等。攻击者可能通过分析源代码来发现漏洞或获取敏感信息。
不安全的文件上传
不安全的文件上传允许攻击者上传恶意文件或绕过文件类型限制。这可能导致远程代码执行、服务器端包含或存储型XSS等攻击。
HTTP相关
HTTP参数污染
HTTP参数污染是一种通过提供多个同名参数来混淆应用程序逻辑的攻击。不同的Web技术栈处理重复参数的方式不同,这种不一致性可能被攻击者利用。
HTTP参数掩藏
HTTP参数掩藏是一种通过特殊编码或格式化来隐藏参数的技术,可能用于绕过安全控制或触发意外行为。
HTTP请求走私
HTTP请求走私利用前端和后端服务器对HTTP请求的解析差异,可能导致请求绕过安全控制或污染其他用户的响应。
其他漏洞
跨站请求伪造(CSRF)
CSRF攻击强制用户的浏览器向已认证的网站发送未授权的请求。攻击者通过诱导用户访问恶意网站来触发这些请求,可能导致未经授权的操作执行。
服务端请求伪造(SSRF)
SSRF允许攻击者从服务器发起请求,可能用于访问内网资源、绕过防火墙或执行端口扫描。这种攻击特别危险,因为请求来自受信任的服务器。
账户接管
账户接管是通过各种技术(如凭证填充、会话劫持、密码重置漏洞)获取对用户账户的未授权访问。这可能导致身份盗用和敏感信息泄露。
CI/CD漏洞
CI/CD管道中的安全漏洞可能允许攻击者注入恶意代码、获取敏感凭证或干扰部署过程。这些漏洞特别危险,因为它们可能影响整个软件供应链。
逻辑漏洞
业务逻辑漏洞是应用程序设计中的缺陷,可能被利用来绕过安全控制或执行未授权操作。这些漏洞通常难以通过自动化工具发现。
CVE漏洞
通用漏洞披露(CVE)是已知的软件漏洞。使用含有已知CVE漏洞的组件可能使应用程序容易受到攻击。及时更新和补丁管理很重要。
路径遍历
路径遍历允许攻击者访问文件系统中的任意文件。通过使用../等特殊字符,攻击者可能读取敏感文件或执行恶意文件。
目录遍历
目录遍历允许攻击者列出和访问未经授权的目录。这可能导致源代码、配置文件或其他敏感资源的泄露。
DNS重绑定
DNS重绑定攻击通过操纵DNS响应来绕过同源策略。攻击者可能利用这种技术来访问内网资源或执行跨站点请求。
拒绝服务(DDoS)
分布式拒绝服务攻击通过overwhelming服务器资源来使服务不可用。这可能通过大量请求、大数据包或资源密集型操作来实现。
依赖混淆
依赖混淆攻击通过在包管理系统中发布与流行包名称相似的恶意包来欺骗开发者。这种攻击利用了开发者在键入包名时可能的拼写错误或对包名的混淆。攻击者可能通过这种方式分发含有恶意代码的包,一旦被安装,就可能导致数据泄露、远程代码执行或其他安全问题。这种攻击特别危险,因为它直接针对软件供应链,可能影响大量下游用户。
DOM破坏
DOM破坏是一种客户端攻击,攻击者通过修改网页的文档对象模型(DOM)结构来破坏页面功能或注入恶意内容。这种攻击可能发生在JavaScript代码动态修改DOM时,如果没有适当的输入验证和输出编码。DOM破坏可能导致内容篡改、信息泄露或执行恶意脚本。攻击者可能通过XSS或其他客户端漏洞来实现DOM破坏。
文件包含
文件包含漏洞允许攻击者包含并执行未经授权的文件。这种漏洞分为本地文件包含(LFI)和远程文件包含(RFI)。LFI允许攻击者访问服务器上的文件,而RFI则允许包含远程服务器上的文件。这两种漏洞都可能导致代码执行、信息泄露或服务器接管。特别是当与其他漏洞(如目录遍历)结合时,文件包含漏洞的危害更大。
无头浏览器
无头浏览器漏洞与自动化浏览器实例的不安全使用有关。当应用程序使用无头浏览器进行网页渲染、测试或爬取时,如果配置不当,可能被攻击者利用来执行未授权操作或访问敏感信息。攻击者可能通过注入恶意脚本或控制浏览器行为来实现攻击。这种漏洞特别危险,因为无头浏览器通常具有比普通用户更高的权限。
反序列化
反序列化漏洞发生在应用程序将不可信的序列化数据转换回对象时。如果没有适当的验证,攻击者可能构造恶意的序列化数据,在反序列化过程中触发代码执行或其他危险操作。这种漏洞特别常见于Java、PHP等支持对象序列化的语言中。成功的反序列化攻击可能导致远程代码执行、拒绝服务或认证绕过。
JSON Web令牌
JWT相关的漏洞包括令牌签名验证不当、使用弱密钥、令牌信息泄露等。攻击者可能通过修改令牌内容、破解签名或重放攻击来冒充其他用户或提升权限。特别是当应用程序使用不安全的算法(如none算法)或在客户端存储敏感信息时,JWT漏洞的风险更高。
Java RMI
Java远程方法调用(RMI)漏洞与不安全的远程对象通信有关。如果RMI服务配置不当或缺乏适当的访问控制,攻击者可能利用这些漏洞执行远程代码、访问未授权资源或发起拒绝服务攻击。由于RMI通常用于企业应用中的分布式计算,这类漏洞的影响范围可能很广。
开放URL重定向
开放重定向漏洞允许攻击者将用户重定向到任意外部网站。这种漏洞通常出现在应用程序未对重定向URL进行适当验证的情况下。攻击者可能利用这种漏洞进行钓鱼攻击,通过利用受害者对原始域名的信任来诱导用户访问恶意网站。虽然开放重定向本身可能看起来危害有限,但它常常被用作更复杂攻击链的一部分。
原型污染
原型污染是JavaScript特有的漏洞,发生在攻击者能够修改对象原型链时。这种攻击可能导致应用程序行为改变、绕过安全检查或执行任意代码。原型污染特别危险,因为它可能影响所有使用受污染原型的对象,造成全局影响。这种漏洞常见于处理用户提供的JSON数据或动态属性分配的应用程序中。
条件竞争
条件竞争是一种时序攻击,发生在多个进程或线程同时访问共享资源时。攻击者可能利用检查时间和使用时间之间的间隙来执行未授权操作。这种漏洞可能导致资源访问控制绕过、重复交易或数据不一致。条件竞争特别难以检测和复现,因为它们依赖于精确的时间控制。
正则表达式
正则表达式漏洞主要包括两类:拒绝服务(ReDoS)和注入攻击。ReDoS通过构造特殊的输入字符串,触发正则表达式引擎的指数级回溯,导致服务器资源耗尽。正则表达式注入则可能允许攻击者修改或绕过基于正则表达式的验证逻辑。这类漏洞常见于输入验证、数据过滤和模式匹配场景。
OAuth配置错误
OAuth配置错误是一种常见的安全问题,可能导致认证绕过或用户账户接管。常见的错误包括重定向URI验证不严格、客户端密钥保护不当、授权码流程实现不完整等。攻击者可能通过利用这些配置错误来获取用户的访问令牌或刷新令牌。
跨域资源共享(CORS)配置错误
CORS配置错误可能允许未授权的域访问敏感资源。错误的配置可能导致信息泄露或允许恶意网站与应用程序进行交互。
总结
这些安全漏洞各自代表了Web应用程序安全领域的不同挑战。理解这些漏洞的本质、攻击方式和防御措施对于开发安全的Web应用程序至关重要。每种漏洞都需要特定的防御策略,通常包括输入验证、访问控制、安全配置和定期安全审计等多层面的措施。同时,随着技术的发展,新的漏洞类型不断出现,保持对安全趋势的关注和持续的安全意识也很重要。特别是要关注独眼情报这类公众号。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...