0


web安全漏洞总结

(一)网络安全常见漏洞

1、sql注入漏洞

漏洞解释与形成原因

SQL注入就是通过把SQL命令插入Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的,应用程序在处理请求时,如果没有充分验证和过滤参数,攻击者可以通过修改参数值来执行恶意查询

漏洞分类:

按照请求类型:

GET型:通过修改URL中的参数值来注入恶意SQL语句。

POST型:通过修改POST请求中的参数值来注入恶意SQL语句

Cookie注入型:在请求头的Cookie参数中注入恶意的SQL语句,

注:(SQL注入攻击可能不仅局限于某一种请求类型,攻击者可以尝试不同的方式来注入恶意SQL语句)

按照字符类型:

数字型:攻击者试图将SQL代码注入到数字型的数据字段中。通常在后面加入测试语句:and 1=1

字符型:将SQL代码注入到字符型的数据字段中,通常在后面加入测试语句:’or 1=1

按照测试方法:

报错:这是基于应用程序在处理错误时返回详细信息的漏洞,通过构造恶意的SQL语句来触发应用程序产生错误,并从错误信息中获取敏感数据或执行其他恶意操作,

延时:这是一种利用在响应时间上的差异来判断漏洞的攻击方法,通过构造恶意的SQL语句,利用数据库管理系统的延时函数来判断查询是否成功执行,并据此推测SQL注入漏洞的存在,利用sleep()或benchmark()等函数让mysql执行时间变长

盲注型:攻击者无法直接从响应中获取有关注入结果的详细信息,然后通过构造特定的SQL语句,利用在不同条件下的响应差异来推断查询的结果,常用构建盲注函数:substr()、Left()、ORD()

布尔型:在响应中的布尔条件语句的结果来判断查询是否成功执行的一种攻击方法。通过构造恶意的SQL语句并观察应用程序的响应,来推断SQL查询的结果,结果不返回数据库数据,结果false和true。

漏洞存在常见地方:

  • 用户输入表单:用户可以通过网站的表单(如搜索框、注册表单、登录表单等)提交数据给服务器
  • URL参数:在一些应用程序中,URL参数被用来动态生成SQL查询
  • Cookies:一些应用程序会将用户的某些数据存储在Cookie中,并在后续请求中使用该数据
  • HTTP头信息:攻击者通过修改HTTP请求的头部信息中的值来注入恶意的SQL语句(UserAgent、Referer等)
  • 隐藏字段:一些网站使用隐藏字段来存储数据,这些字段可以在表单提交时自动包含在请求中

漏洞利用:

  • 获取后台数据库中存放的目标的隐私信息,并进一步利用这些信息渗透拓展;
  • 对目标网站挂马,进一步有针对性地开展钓鱼攻击;
  • 获取后台应用系统的控制权限,进一步控制后台服务器 方式一:通过SQL注入的一个select into outfile x写入webshell 方式二:通过这个SQLMAP的这个 --os-cmd这种参数来进行webshll 方式三:就是--os-shell的方式来进行写webshel

漏洞防御:

  • 参数化查询接口 ,因为参数化的一个查询接口的话 他可以做到参数的一个过滤和执行重用 可以保障这个SQL语句的语义不改变,保持一个原始的一个查询意思,简单的说, 参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑 所以就算在参数中写入了一些恶意的指令 SQL服务器她也不会去执行这个指令的
  • 对所有的用户输入进行严格的验证和过滤,对关键字或者特殊字符,确保输入数据符合预期的格式和类型(关键字:and、or、select、declare、update、xp_cmdshell,特殊字符:’、”、;)
  • 配置额外的配置,避免打印SQL的一些错误消息出来
  • 限制数据库用户的权限,确保数据库用户只能执行必要的操作,并限制其对数据库结构的访问权限
  • 使用Web应用程序防火墙(WAF)等安全工具来检测和阻止SQL注入攻击

攻击流量特征

关于sql相关的流量分为两个部分,一个是应用本身产生的,一个是真实的攻击,如果因为出现select关键字而触发安全设备告警的情况下,首先需要判断下是不是SQL语句还是参数名为select关键字导致的误报,如果不是误报,那就看SQL语句写的是啥,判断是否有危害,还是业务的SQL语句,可以看里面是不是包含恶意的函数或者敏感的高危操作,如果都没有那就跟业务去确认是不是应用本身代码设计缺陷导致直接把SQL语句在参数中传输

绕开waf拦截的常用方法

一般通过两种方法找到waf拦截方法:黑盒测试和白盒测试:

  • 白盒:通过代码审计找到绕过方法
  • 黑盒:架构层面 资源限制角度 协议层面绕过 规则层面绕过架构层面:寻找源站点地址,适用于使用了云waf场景 利用同网段主机或服务器进行内网注入,绕过waf防御资源限制角度:是post一个大的数据包在线的waf设备一般会考虑运行速度对大的数据包检测会浪费大量的硬件资源 所以一般不会对大流量包进行过滤 可以发送大文件进行绕过协议层面绕过:如页面只对get方式过滤 未对post过滤或者说对某一种文件过滤,通过修改其他未过滤的格式进行绕过 协议方面还有一个对参数的一个污染规则层面绕过:注释符绕过 空白符绕过 函数分割绕过 浮点数绕过利用error base进行sql注入,MySQL特殊语法绕过

2、文件上传漏洞

漏洞解释与形成原因:

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

漏洞利用

  • 向目标网站或应用上传脚本文件,通过脚本搜集关键信息或获取目标控制权限;
  • 向目标网站或应用上传木马文件,开展水坑攻击。

img编辑

文件上传攻击过程

漏洞存在常见地方:

通常会有文件上传的功能, 例如在 BBS发布图片 , 在个人网站发布ZIP 压缩 包, 在办公平台发布DOC文件等 , 只要 Web应用程序允许上传文件, 就有可能存在文件上传漏洞

漏洞防御

  • 文件类型验证:限制允许上传的文件类型,只允许上传通过验证的文件类型,而排除可执行文件、脚本文件或其他危险类型的文件。
  • 文件大小限制:限制上传文件的大小,以防止攻击者上传大文件并消耗服务器资源。
  • 文件名验证:对上传的文件名进行验证和过滤,防止恶意文件名的使用。
  • 文件内容检查:在接收到文件后,进行文件内容的检查和分析,如通过安全扫描工具检测文件中是否包含恶意代码。
  • 存储安全:将上传的文件存储在安全的位置,并确保文件无法直接执行

绕开waf拦截的方法

  • 修改上传表单字段
  • 表单字段大小写替换
  • 表单字段增加或减少空格
  • 表单字段字符串拼接
  • 构造双文件上传表单,
  • 同时上传双文件
  • 编码绕过
  • 垃圾数据填充绕过
  • 文件名大小写绕过

此外关于服务器检测绕过文件上传漏洞:

  • MIME类型绕过
  • 前端JS检测抓包改包绕过
  • 黑名单绕过:php3、asa、ashx、windows特性(test.asp_、流特性)、apache解析漏洞
  • 图片内容检测使用图片马绕过 .htassess绕过

3、文件包含漏洞

漏洞解释与形成原因:

文件包含漏洞(File Inclusion Vulnerability)是指在应用程序中存在能够在运行时动态包含其他文件的漏洞,攻击者可以利用该漏洞来执行未经授权的代码,访问敏感文件,或者在系统中执行其他恶意操作

漏洞形成原因:

  • 用户输入验证不充分:没有正确地验证用户输入的文件路径或文件名,通过构造恶意的文件名或路径来实施文件包含攻击。
  • 不安全的文件包含函数:一些编程语言和框架提供了文件包含函数,如PHP的include()require()或Python的import等。如果这些函数的使用不正确,没有适当地验证文件的来源和完整性,攻击者可能通过构建特殊的文件路径来执行恶意代码。
  • 弱密码或未授权访问:如果攻击者能够猜测或破解应用程序所使用的文件路径或文件名,他们可能会通过文件包含漏洞来访问敏感文件。这可能涉及到通过路径遍历攻击(directory traversal attack)或使用已知的弱密码进行访问。
  • 引用不可信的文件:如果应用程序从不可信的来源引用文件,比如使用用户上传的文件或远程资源,没有适当地验证文件的完整性和来源,那么攻击者可以通过篡改这些文件来执行恶意代码。
  • 不安全的文件权限设置:如果应用程序在服务器上运行,并且文件权限设置不正确,攻击者可能能够直接访问敏感文件,从而利用文件包含漏洞。

漏洞利用

  • 文件读取:攻击者可以利用文件包含漏洞读取服务器上的敏感文件,如配置文件、身份认证凭证、密钥等。这些敏感信息可能被用于后续攻击或者进行其他非法活动。
  • 远程代码执行:攻击者可以通过文件包含漏洞执行恶意代码,将自己的代码注入到受攻击应用程序中,在服务器上执行任意命令、运行恶意脚本或者获取完全的系统访问权限。
  • 获取服务器控制权:可以上木马到服务器上,通过访问文件反弹shell,获取控制权
  • 含远程文件包:攻击者可以通过文件包含漏洞包含远程的恶意文件,例如远程木马或恶意脚本,进一步渗透和控制受影响的系统。

漏洞防御

  • 严格验证和过滤用户输入,确保用户提供的文件名或路径是合法且安全的。
  • 使用安全的文件包含函数,并适当验证文件的来源和完整性。
  • 避免引用不可信的文件,尽可能使用固定的文件路径,并限制文件的访问权限。
  • 定期更新和修复操作系统、框架和库,以避免已知的文件包含漏洞。
  • 执行安全编程实践,如代码审查、输入验证和输出编码,以减少应用程序中的其他安全漏洞。

绕开waf拦截的方式

  • 绕过过滤规则:WAF通常使用规则集来检测和拦截恶意请求。攻击者可以尝试使用特殊字符、编码、变形技术或多次分段加载来绕过这些规则。例如,使用URL编码、Unicode编码、双重编码或换行符等来混淆请求。
  • 字符截断:攻击者可能会利用文件包含漏洞中的字符截断漏洞来绕过WAF。他们会试图使用特殊字符或截断技术来去除或绕过WAF所使用的检测规则。例如,使用空格、空字节、截断空字符(null byte)或其他字节截断技术来绕过字符串匹配。
  • 编码和混淆:攻击者可以使用各种编码和混淆技术来隐藏恶意代码,并绕过WAF的检测。这可能包括使用Base64编码、HEX编码、HTML实体编码、JavaScript编码或混合多种编码技术。
  • 绕过文件类型检测:WAF通常会检测请求的文件类型以防止文件包含漏洞。攻击者可以尝试更改请求的文件扩展名或使用伪造的文件类型来绕过这个检测。他们可能还会尝试混合其他类型的请求,如图像、文本或数据文件,以使WAF难以识别恶意请求。

4、命令执行漏洞

漏洞解释与形成原因:

命令执行漏洞是在Web应用、网络设备、业务系统上由于代码过滤不严格导致用户提交的数据被解析执行而造成的漏洞,其形成的原因是在目标应用或设备开发时对执行函数没有过滤,对用户输入的命令安全监测不足。

造成命令执行的原因:

  • 没有对用户输入进行过滤或过滤不严,例如,没有过滤&、&&、|、||等连接符
  • 系统漏洞造成的命令执行,bash破壳漏洞(CVE-2014-6271),该漏洞可以构造环境变量的值来执行具有攻击力的脚本代码,会影响到bash交互的多种应用,如http、ssh和dhcp等。
  • 调用的第三方组件存在代码执行漏洞,php(system()、shell_exec()、exec()、eval())、JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)

漏洞分类:

命令执行漏洞可以分为系统命令执行和脚本(PHP、JSP等)代码执行两类,分别通过传入系统命令和脚本代码实现:

  • 系统命令执行:在系统命令执行漏洞中,攻击者通过注入恶意命令来执行系统级别的操作。这可以发生在应用程序中,当用户输入不经过正确的验证和过滤直接拼接到系统命令中时,攻击者可以注入恶意命令并执行它
  • 脚本代码执行:通过注入脚本代码来执行脚本语言(如PHP、JSP等)的漏洞。这种漏洞通常发生在动态网页或应用程序中,攻击者可以通过在参数或用户输入中注入恶意脚本代码来执行非法操作

漏洞存在常见地方:

对没有用户提交过来的数据,服务器没有正确过滤和验证的所有地方,都可能存在这个漏洞:

  • Web应用程序:在Web应用程序中,有表单提交、URL参数、文件上传等地方输入验证不充分。
  • 命令行应用程序:命令行应用程序接受用户输入并执行相关的系统命令,没有正确验证和过滤用户输入
  • 远程服务和API:应用程序在与远程服务进行交互时
  • 文件解析和渲染:应用程序解析或渲染文件内容(如解析模板、解析文档、渲染图像等),
  • 定时任务和脚本:在定时任务、后台脚本或批处理脚本中
  • 插件和自定义代码:这些插件或自定义代码没有经过安全审查或存在安全漏洞,
  • 应用程序间通信:应用程序之间的通信不充分或没有适当的安全验证,

漏洞利用:

  • 获得系统操作权限:通过执行恶意命令,获得系统的操作权限,进行提权,使其能够执行更高级别的操作,篡改系统配置、访问敏感数据或执行其他恶意活动。
  • 数据泄露:执行恶意命令,获取系统中的敏感数据,如数据库凭据、用户信息、密码文件等
  • 进一步入侵:上传和执行恶意软件、建立后门,作为跳板扫描网络,从内部发起其他攻击。

漏洞防御

系统命令执行漏洞防御措施:

  • 输入验证和过滤:对用户输入数据进行严格验证和过滤,确保不允许出现潜在的命令注入字符。可以采用白名单或正则表达式来限制输入的合法字符。
  • 参数化查询或预编译语句:对于与系统命令相关的参数,使用参数化查询或预编译语句等方式,而不是直接将用户输入拼接到系统命令中。
  • 最小权限原则:确保执行命令的进程或用户具有最小化的权限,以减少潜在攻击的影响范围。

脚本代码执行漏洞,可以采取以下防御措施:

  • 输入验证和过滤:对用户输入进行严格验证和过滤,移除或转义可能包含恶意代码的特殊字符,以阻止脚本的执行。
  • 输出编码:在将用户输入作为输出的一部分返回给用户之前,确保对其进行适当的编码,以防止脚本代码的执行。
  • 使用安全的函数和框架:使用具备良好安全性记录和验证用户输入的函数和框架来构建应用程序,以减少脚本代码执行的风险。

绕开waf拦截的常用方法:

  • 字符截断和编码:使用空格、空字节、截断空字符(null byte)或URL编码来绕过字符串匹配。
  • 分割和拼接命令:分割恶意命令为多个部分,然后通过拼接、连接或组合这些部分来构造命令执行。这样可使命令部分在WAF规则中逃避检测。
  • 混淆和变形:攻击者可以使用各种混淆和变形技术来隐藏恶意命令及其参数,以绕过WAF的正则表达式或特征检测。这可能包括使用编码、加密、字符替换和其他混淆技术。
  • 绕过命令执行限制:有时WAF可对特定命令和关键词进行限制,以防止命令执行漏洞。攻击者可以尝试使用绕过技巧和其他命令执行的变种,如使用另一种语言或工具来执行命令。

5、代码执行漏洞

漏洞解释与形成原因:

攻击者可以在目标系统上执行恶意代码或命令 导致代码执行漏洞可能原因:

  • 安全的用户输入处理:应用程序没有正确验证、过滤或转义用户输入数据,导致攻击者在输入中注入恶意代码或命令,从而码执行。
  • 动态代码执行:一些应用程序允许动态执行代码,如使用eval()、exec() 或反序列化等功能。如果在执行这些动态代码之前没有适当地验证和限制输入,攻击者可以构造恶意代码并执行。
  • 文件上传:没有正确验证和处理上传的文件导致文件上传漏洞,上传包含恶意代码的文件,通过访问而执行这些文件导致代码执行漏洞
  • 远程命令执行:当应用程序与远程系统或服务进行通信时,如执行远程命令或通过远程API调用,如果没有正确地验证输入数据,攻击者可能通过注入恶意命令来执行远程代码。

漏洞利用

  • 远程命令执行反弹shell:利用代码执行漏洞来注入恶意代码,并在目标系统上执行远程命令,实现获取服务器控制权限等目标,之后作为跳板,进一步攻击或收集信息。
  • 访问和篡改数据:访问或篡改应用程序或数据库中的敏感数据。
  • 恶意文件上传:通过代码执行漏洞,上传含有恶意文件,然后将其执行在目标系统上。导致远程命令执行、后门创建、权限提升等。

漏洞防御

  • 输入验证和过滤:对于用户输入和外部数据,进行严格的验证、过滤和转义处理,确保只允许预期的安全字符和格式。
  • 使用安全的执行方式:避免使用动态执行代码的功能,如eval()、exec()等。如果必须执行动态代码,确保对输入进行严格限制和验证,以最小化风险。
  • 文件上传控制:对于文件上传功能,实施严格的文件类型验证、文件大小限制和安全存储措施,确保用户上传的文件不包含恶意代码。

6、xxe漏洞

漏洞解释与形成原因:

XXE(XML External Entity Injection),xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。

XML用于标识电子文件使其具有结构性的标识语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声名、DTD文档类型定义、文档元素。

漏洞利用:

  • 读取敏感文件:读取服务器上的敏感文件,如配置文件、用户凭据、私钥等敏感信息文件,进一步收集重要信息,为其他攻击做好准备
  • 执行远程请求:通过XXE漏洞中注入恶意外部实体引用,从而触发远程请求,通过一些列的操作,最终获取服务器权限。
  • 内部端口扫描:攻击者可以通过XXE漏洞执行内部端口扫描,以探测目标网络中的其他可访问服务和漏洞。
  • SSRF攻击:通过XXE漏洞,利用服务器发起其他服务的请求,从而执行服务器端请求伪造(SSRF)攻击,攻击内部系统或访问未公开的资源。

漏洞防御:

  • 输入验证和过滤:对于用户输入的 XML 数据进行验证和过滤,确保其中不包含恶意的外部实体引用。可以使用白名单或黑名单的方式来限制特定的实体引用或禁止使用外部实体。
  • 使用安全的 XML 解析器:采用安全的 XML 解析器,如 SAX(Simple API for XML)解析器,它不支持实体扩展。避免使用带有实体扩展功能的解析器,如 DOM(Document Object Model)解析器。
  • 禁用实体扩展:在 XML 解析器的配置中禁用实体扩展功能。对于一些解析器,可以在解析 XML 数据前设置相关的属性或选项来禁用实体扩展。
  • 使用安全的 XML 处理库:选择被广泛认可和经过安全审计的 XML 处理库。
  • 最小权限原则:在解析和处理 XML 数据的过程中,确保使用最小化的权限。即使受到攻击,攻击者也只能获取到有限的信息。
  • 输入验证和输出编码:对于用户输入和输出的 XML 数据,进行充分的输入验证和输出编码。确保输入不包含恶意内容,并对输出进行适当的编码,防止攻击者利用漏洞。

7、ssrf漏洞、xss漏洞、csrf漏洞

漏洞解释:

  • xss(跨站脚本):插入恶意Script代码,如果服务器没有对内容进行识别,该内容会发送指定的位置,如果返回页面时,会侵入到页面中,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的
  • csrf(跨站请求伪造):攻击者盗用了用户的身份 以用户的名义发起恶意请求 服务器没有对身份进行识别,会认为这请求是用户发起,会根据请求进行响应
  • ssrf(服务器请求伪造):攻击者会伪造服务器发出请求,向内部网络或者其他受保护资源请求,服务器没有进行识别,会认为是服务器请求,会正常响应。

CSRF 与SSRF 的区别?

  • CSRF是跨站请求伪造 由客户端发起
  • SSRF是服务器请求伪造 有服务端发起

漏洞分类:

XSS分为三类:

  • 反射型XSS:非持久化,通过注入js代码,返回页面的时候,融合到前端页面中,当用户去点击链接会能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面
  • 存储型XSS:持久化,通过注入js代码,存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie
  • DOM型XSS:通过修改页面的DOM节点形成的XSS

DOM型和反射型的区别:

  • 漏洞利用位置不同:DOM型XSS利用的是客户端中的DOM(文档对象模型),反射型XSS利用的是服务器端返回的响应结果
  • 攻击方式:DOM型XSS:攻击通过修改DOM结构来触发,利用JavaScript来修改DOM元素内容或属性,从而插入恶意脚本。反射型XSS通过构造恶意的请求来触发,通常通过修改URL参数或表单数据,将恶意脚本注入到页面中
  • 影响范围:DOM型XSS影响范围主要取决于恶意脚本的执行位置和访问权限,反射型XSS影响范围主要取决于用户是否点击了恶意构造的URL或提交了恶意构造的表单

漏洞利用

xss漏洞利用

  • 对目标网站植入恶意代码,有针对性地开展进一步攻击渗透;
  • 窃取网站管理员或访问用户的安全认证信息,进一步向个人主机拓展;
  • 劫持用户会话,进一步获取网站用户隐私,包括账户、浏览历史、IP地址等

cssrf漏洞:

  • 未经授权的操作:攻击者可以利用CSRF漏洞欺骗已经认证过的用户执行一些未经授权的操作,如更改密码、修改用户设置、执行金融交易等,还可能利用伪造获取用户敏感信息,
  • 钓鱼攻击:攻击者可以利用CSRF漏洞生成钓鱼链接,以伪装成受信任的网站或服务,欺骗用户执行某些操作,如输入敏感信息、下载恶意文件等。

ssrf漏洞

  • 探测和访问内部网络:获取敏感数据或控制内部资源,
  • 攻击外部服务:攻击者可以指定外部服务的URL,例如将请求发送到第三方服务商来发送恶意请求、发起DDoS攻击等。

漏洞防御

xss漏洞:

  • 输入验证和过滤:使用正则表达式、白名单或黑名单等方式严格验证和过滤,确保只接受合法的输入
  • 输出编码:在将用户输入的数据输出到HTML页面时,对其进行适当的编码,将特殊字符转换为HTML实体。
  • Content Security Policy(CSP):通过设置CSP,限制页面中可加载的资源和执行的代码,从而减少XSS攻击的风险。CSP可以限制页面中的脚本执行、禁止内联脚本、限制外部资源加载等。
  • HTTP-only标记:将敏感的Cookie标记为HTTP-only,使其只能通过HTTP协议访问,防止JavaScript脚本获取敏感信息。
  • 安全HTTP头:配置安全的HTTP头,如Strict-Transport-Security(HSTS)、X-XSS-Protection、X-Content-Type-Options等,以增加应用程序的安全性。

csrf漏洞:

  • 请求头加入refer字段,Referer头字段是HTTP协议中的一个字段,用于标识请求的来源地址。服务器可以验证Referer字段来确认请求的合法性。在进行敏感操作(如修改、删除)时,服务器可以检查Referer字段,如果来源地址不合法,就拒绝请求
  • 利用token验证,为每个用户生成一个随机的Token,并将其嵌入HTML页面或通过Cookie发送给客户端。在进行敏感操作时,客户端需要将Token作为参数或请求头中的一部分发送给服务器进行验证
  • 双重Cookie验证:将用户的身份信息存储在Cookie中,同时将其存储在服务器端的会话中,请求时进行验证。
  • 限制敏感操作:对于敏感操作,比如修改密码或重要的数据更改,要求用户进行身份验证,例如输入密码或进行二次确认。
  • 同源策略:使用同源策略(Same-Origin Policy),限制页面中的跨域请求,减少CSRF攻击的风险。

ssrf漏洞:

  • 限制IP:在输入验证的过程中,禁止用户输入特定的IP地址范围,如私有IP地址范围(172、10、192开头),以防止将请求发送到本地或内部网络。
  • 限制协议:只允许HTTP和HTTPS等特定的协议,禁止使用其他协议,以防止向不安全的协议发送请求。
  • 限制端口:限制请求的目标端口只能是HTTP常用的端口,如80、443、8080等,阻止对其他非必要端口的请求,减少攻击面。
  • 过滤返回信息:在发送请求后,对远程服务器返回的响应进行过滤和验证。检查返回的响应中是否包含敏感信息或可能导致漏洞利用的内容,如内部IP地址、文件路径等。
  • 统一错误信息:对于因为直接连接某个端口而发生错误的请求,可以统一返回相似的错误信息,不泄露具体端口的存在与否,避免攻击者根据错误信息来判断远程服务器的端口状态

漏洞常见地方:

xss漏洞: 各种输入的点,名称、上传、留言、可交互的地方,一切输入都可能存在xss漏洞

常见绕开waf拦截

xss漏洞:

\1. 大小写混合

\2. 双写

3.编码

\4. fuzz 低频使用标签 <details/open/ontoggle>

\5. fuzz 低频使用函数 ontoggle 等

6.<img/src=1>

7.%0a 或者%0d 绕过

csrf漏洞:

ssrf漏洞:

远程图片下载 加载远程文件 离线下载 远程头像 网页翻译 等等需要服务器发起请求的地方

8、反序列化漏洞

漏洞解释与形成原因:

序列化是将对象转换为字节流的过程,而反序列化则是将字节流转换回对象的过程。通过操纵被反序列化的数据来执行未经授权的操作或触发不可预料的行为就是反序列化漏洞,通常发生在接收和处理来自不可信源的已序列化数据的应用程序中

漏洞利用

执行远程代码:构造恶意的序列化数据来在目标系统上执行任意代码,绕过身份验证、反弹shell入侵服务器、再进行权限提升,控制目标系统,获取重要敏感数据,进一步攻击其他系统。

漏洞防御

  • 输入验证和过滤:验证和过滤来自不可信来源的序列化数据,确保数据的完整性和合法性。
  • 强制类型检查:在进行反序列化之前,进行严格的类型检查,防止未知或恶意类型的对象被创建。
  • 最小化可序列化对象的权限:只将必要的数据进行序列化,并避免序列化敏感数据或具有特权的对象。

漏洞常见地方

  • 远程调用(Remote Procedure Calls, RPC):当应用程序使用RPC来进行远程通信时,存在反序列化漏洞的风险。攻击者可以发送恶意的序列化数据给目标应用程序,从而实现代码执行或其他恶意行为。
  • Web应用程序:Web应用程序通常使用序列化和反序列化来处理用户提交的数据,例如通过Cookie、表单、URL参数等。如果应用程序没有对用户输入进行充分验证和过滤,并在反序列化时不进行安全检查,那么就可能存在反序列化漏洞。
  • 分布式系统和消息队列:在分布式系统中,各个组件之间经常使用消息队列进行通信。如果消息队列使用了序列化和反序列化机制,并且没有适当地验证和过滤接收到的消息数据,那么就可能存在反序列化漏洞。
  • 第三方组件和库:应用程序使用第三方组件或库时,其中可能存在未解决的反序列化漏洞。如果应用程序没有及时更新这些组件或库,攻击者可能利用这些漏洞进行攻击

9、中间件漏洞

漏洞解释与形成原因:

中间件漏洞是指在应用程序中使用的中间件(如操作系统、数据库、Web服务器等)中存在的安全漏洞。这些漏洞可能导致恶意用户或攻击者利用系统漏洞执行未经授权的操作或访问敏感信息。

中间件漏洞形成的原因有多种可能性,下面是几个常见的原因:

  1. 软件错误:中间件软件开发过程中可能存在错误或缺陷,这些错误可能被攻击者利用。例如,程序代码中的逻辑错误、缓冲区溢出、输入验证不完整等。
  2. 未及时更新:中间件供应商经常发布安全补丁以修复发现的漏洞。如果系统管理员没有及时安装这些补丁,攻击者可以利用已知漏洞入侵系统。
  3. 默认配置问题:中间件软件通常具有默认配置,这些配置可能在安全性方面存在缺陷。攻击者可以通过利用默认配置中的弱点入侵系统。因此,使用中间件时,必须密切关注安全配置并进行适当的定制。
  4. 弱密码或默认凭据:中间件软件通常具有默认的用户名和密码,如果系统管理员未更改这些凭据或设置强密码政策,攻击者可以轻松入侵系统。
  5. 第三方组件漏洞:中间件软件通常使用第三方组件或库来实现特定功能。如果这些组件存在漏洞,攻击者可以通过利用这些组件的漏洞入侵系统

漏洞存在常见地方

IIS:

  • IIS6.0 PUT漏洞
  • IIS6.0 远程代码执行漏洞
  • IIS6.0 解析漏洞 IIS启用.net 短文件名漏洞
  • IS7.0/7.5 解析漏洞

Apache:

  • 未知扩展名解析漏洞
  • 配合错误导致的解析漏洞、目录遍历

Nginx:

  • 配置错误导致的解析漏洞、目录遍历

Tomcat:

  • 配置错误导致的任意代码执行、任意文件写入漏洞
  • 弱口令+管理后台war包部署getshell manager/html
  • 管理后台弱口令爆破

JBoss:

  • x/6.x反序列化漏洞(CVE-2017-12149)
  • JMXInvokerServlet反序列化
  • EJBInvokerServlet反序列化
  • JMX Console未授权访问
  • 弱口令+管理后台war包部署getshell

WebLogic:

  • XMLDecoder 反序列化漏洞(CVE-2017-10271 & CVE-2017-3506)
  • wls9_async_response,wls-wsat 反序列化远程代码执行漏洞(CVE-2019-2725)
  • WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)
  • 弱口令+管理后台war包部署getshell

漏洞利用

  • 及时更新和补丁:及时更新中间件,并使用最新的安全补丁。许多中间件供应商会发布针对已知漏洞的修复程序。定期检查供应商的网站,确保系统中使用的中间件处于最新状态。
  • 强化配置:确保中间件的配置符合最佳安全实践。根据供应商的建议和相关的安全指南,审查和调整中间件的默认配置。禁用不必要的功能和服务,限制访问权限,并设置强密码和访问控制。
  • 强韧的网络安全防护:防火墙、入侵检测和预防系统(IDS/IPS)、反病毒软件等。这些措施可以帮助防止恶意攻击者对中间件进行利用和入侵。

漏洞防御

  • 定期更新和升级中间件版本,以获取最新的安全修复和补丁。
  • 配置安全选项,如启用安全认证、限制访问和使用安全传输协议等。
  • 加强访问控制,确保只有经授权的用户或服务能够访问中间件。
  • 实施安全审计和监控,及时检测异常活动并采取适当的措施。
  • 限制中间件的权限,避免使用具有过高权限的账户或服务。
  • 实施数据备份和灾难恢复计划,以应对可能的中间件故障或攻击。
  • 及时关注并参考中间件供应商或安全机构发布的安全建议和最佳实践。

怎么绕开waf拦截

绕过Web应用程序防火墙(WAF)的中间件漏洞攻击是攻击者可能尝试的一种策略。尽管每个中间件漏洞和WAF配置都不同,但以下是几种可能用于绕过WAF拦截的常见技术:

  • 请求分割:攻击者可以将恶意请求分割成多个片段,并使用中间件协议的特定字符或结构来绕过WAF规则。这样,WAF可能无法将完整的恶意请求识别为恶意。
  • 编码和加密:攻击者可以对恶意请求进行编码或加密,使其在传输过程中难以被WAF检测到。这包括对数据进行Base64编码、使用特殊的编码技巧或采用定制的加密算法。
  • 协议混淆:攻击者可以修改或伪造中间件协议的一部分,使其在传输时看起来像合法的请求。这可能涉及对请求的特定字段进行修改、填充额外的标头或参数,以及使用特定的协议语法规则。
  • 特殊字符利用:攻击者可以利用中间件协议中的特殊字符来绕过WAF的规则。这包括使用编码字符、Unicode字符、双字节字符或其他不常见的字符,以混淆和干扰WAF的过滤机制。
  • 超长或错误输入:攻击者可以尝试发送过长或恶意构造的请求,以触发中间件的缓冲区溢出或错误处理逻辑。这可能导致中间件异常行为或绕过WAF的检测规则。
  • 协议切换:攻击者可以切换到中间件支持的其他协议,以逃避针对当前使用协议的特定WAF规则。例如,从HTTP切换到HTTPS、WebSockets或其他协议。

10、解析漏洞

漏洞解释与形成原因:

解析漏洞是指应用程序在处理用户提供的输入时,存在漏洞导致恶意输入被解析执行的情况。这种漏洞可能发生在各种上下文中,包括Web应用程序、命令行应用程序、代码解析器等

漏洞利用

  • 代码注入:攻击者可以在用户输入中注入任意代码,使其被应用程序解析和执行。这可能包括插入恶意脚本(如JavaScript)来进行跨站脚本攻击(XSS)、执行远程命令或操作系统命令注入等。
  • 命令执行:如果应用程序解析用户输入并执行命令,攻击者可以尝试通过恶意输入执行任意命令。这可能导致命令注入、远程命令执行和操作系统命令注入等安全问题。
  • 文件系统访问:如果应用程序解析用户上传的文件或处理文件路径时存在漏洞,攻击者可以尝试进行目录遍历、文件读取、文件上传的各种攻击。这可能导致敏感文件泄露、完全系统访问权限的获取等。
  • 数据库注入:如果应用程序解析用户输入并构造数据库查询语句时存在漏洞,攻击者可以尝试通过恶意输入执行任意的SQL语句。这可能导致数据库数据的泄露、篡改、删除或者整个数据库服务器的受影响。

漏洞防御

  • 输入验证和过滤:对用户输入进行严格的验证,包括验证数据类型、长度、字符集等,并过滤或转义特殊字符,以防止恶意代码的注入。
  • 参数化查询和准备语句:使用参数化查询或准备语句来执行数据库查询,以避免SQL注入漏洞。
  • 最小化解析权限:限制解析器的权限,仅允许访问必要的资源和功能。
  • 安全编码实践:遵循安全编码实践,包括使用库和框架提供的安全函数、避免动态代码执行和动态解析等。
  • 输入输出过滤:对用户提供的输入和输出数据进行过滤和转义,以防止恶意代码的注入和输出中的敏感信息泄露。
  • 安全更新和补丁:及时更新和修补相关解析器、库和中间件的版本,以获取最新的安全修复和漏洞修复。

怎么绕开waf拦截

  1. 编码和加密:攻击者可以对恶意请求进行编码或加密,以使其在传输过程中难以被WAF检测到。这可以包括使用Base64编码、URL编码、使用特殊编码技巧或定制加密算法等。
  2. 请求分割:攻击者可以将恶意请求分割成多个片段,并利用WAF规则对请求阶段的分析和规避。这样,WAF可能无法将完整的恶意请求识别为恶意。
  3. 混淆和变形:攻击者可以使用各种技术来改变恶意请求的结构和格式,以使其不符合WAF规则的签名或规则。这可能包括更改参数的顺序、添加额外的字符、使用特定的编码技巧等。
  4. HTTP协议切换:攻击者可以尝试从标准HTTP协议切换到其他协议,例如HTTPS(使用SSL / TLS加密)或使用其他端口。这可能会绕过WAF的规则检测,因为WAF可能配置为仅监控特定的协议和端口。
  5. 正常流量伪装:攻击者可以模拟正常流量模式,对请求进行微调以绕过WAF的检测。这可能包括模拟真实的用户行为、调整请求间隔时间、添加随机性等。

11、权限提升漏洞

漏洞解释与形成原因:

权限提升漏洞是指攻击者通过利用系统或应用程序中存在的漏洞,成功获取比其当前权限更高的权限级别,以执行未经授权的操作

漏洞防御:

  • 安全配置管理:确保操作系统、应用程序和服务的安全配置,禁用不必要的服务和功能,以减少潜在的漏洞。
  • 强密码策略:强制使用复杂的密码,并定期更改密码,确保默认密码已被更改。
  • 最小权限原则:每个用户和进程应该被授予最低必需的权限,以减少权限提升的潜在风险。
  • 输入验证和过滤:确保应用程序对用户输入进行充分验证、过滤和转义,以防止攻击者利用输入注入攻击来提升权限。

(二)其他漏洞

1、敏感信息泄露漏洞

漏洞解释与形成原因:

敏感信息泄露漏洞是指组织或个人的敏感信息(如个人身份信息、财务信息、健康记录、商业机密等)因为安全漏洞或失误而被未经授权的人获得或公开的风险

漏洞利用

  • 获取敏感信息,信息泄露程度有大有小,严重可能会泄露服务器管理员的账号口令,可能泄露系统配置的一些信息。根据这些都对攻击者有很大帮助,方面攻击者下一步攻击。
  • csrf攻击:攻击者可以使用被泄露的敏感信息来冒充受害者,进行csrf攻击(跨站请求伪造)
  • 钓鱼:攻击者可以使用泄露的敏感信息来进行社会工程攻击,

漏洞防御

  • 保持敏感信息的保密性:使用加密算法对敏感信息进行加密存储和传输。
  • 强化访问控制:实施严格的身份验证和授权机制,确保只有授权用户可以访问敏感信息。
  • 实施安全的密码策略:要求使用强密码,定期更改密码,并防止使用常见密码。
  • 持续监测:定期审计、监测和分析系统日志,以便及时检测异常活动和

2、授权验证绕过漏洞

漏洞解释与形成原因:

授权验证绕过漏洞是指攻击者通过利用系统、应用程序或网络服务中的漏洞,成功绕过授权验证机制,获取未经授权的访问权限

漏洞利用

  • 敏感信息泄露:利用授权验证绕过漏洞来获取敏感信息,
  • 提权攻击:成功绕过授权验证后,尝试提升自己的权限级别,获取更高级别的特权

漏洞防御:

  • 实施严格的输入验证和过滤,防止恶意输入和异常输入的绕过。
  • 强化身份验证机制,包括使用强密码策略、多因素身份验证和防止常见攻击,如会话劫持和密码猜测。

3、逻辑漏洞

漏洞解释与形成原因:

逻辑漏洞指的是在软件或系统设计过程中存在的错误或疏忽,导致潜在的安全风险和漏洞。这些漏洞通常是由于开发人员未正确处理输入、验证用户身份、授权访问等造成的。

常见的逻辑漏洞示例:

  • 非授权访问:在应用程序中缺乏正确的身份验证和授权机制,使得攻击者能够绕过权限限制访问未授权的功能、数据或系统资源。
  • 弱密码策略:系统允许用户使用弱密码(如简单密码或常见密码)来保护其账户,从而容易受到密码猜测、暴力破解等攻击。
  • 数据验证不足:应用程序未对用户输入进行充分验证和过滤,导致攻击者可以通过注入恶意代码、SQL语句或操作系统命令等方式来执行未授权的操作。
  • 会话管理漏洞:应用程序在处理用户会话过程中存在错误,可能导致会话固定攻击、会话劫持或会话注销等威胁,使得攻击者能够冒充合法用户并访问其账户。
  • 逻辑错误:系统设计上的缺陷或逻辑错误,可能导致应用程序在特定条件下发生意外行为,如越权访问、数据丢失或系统崩溃等。

4、未授权访问漏洞

漏洞解释与形成原因:

未授权访问漏洞是指攻击者能够访问系统、应用程序或资源,而无需经过适当的身份验证或授权过程。这种漏洞可能导致对敏感信息的未授权访问、数据泄露、篡改或破坏

造成未授权访问漏洞的原因:

  1. 缺乏身份验证:系统未正确实施身份验证机制,或者在没有验证用户身份的情况下提供了对受限资源的访问权限。
  2. 会话管理问题:在会话管理过程中存在问题,攻击者可以通过劫持或重用会话令牌来冒充合法用户并获得访问权限
  3. 授权问题:系统在授权机制上存在缺陷,攻击者可以绕过权限检查并获得未授权的资源访问权限
  4. 业务逻辑错误:系统在业务逻辑方面存在缺陷,攻击者可以利用这些错误来绕过访问限制。例如,应用程序可能没有正确验证特定操作的合法性,以至于攻击者可以执行未授权的操作。

漏洞防御

强身份验证和访问控制:使用安全的身份验证机制;实施细粒度的访问控制,不同角色配置不同权限

  • 定期审查和更新权限,
  • 强密码策略:
  • 检查会话管理机制
  • 输入验证和过滤:
  • 定期更新和漏洞修补:

5、中间件漏洞

漏洞解释与形成原因:

中间件漏洞是指在中间件软件(如服务器、应用程序框架、数据库系统等)中存在的安全漏洞。中间件负责连接不同的系统和组件,为应用程序提供必要的功能和服务

漏洞利用

  • 远程执行代码:攻击者可以利用中间件的缓冲区溢出或其他代码执行漏洞,注入恶意代码,从而可以以中间件的权限在目标系统上执行远程代码,获取敏感数据、入侵目标服务器、进行权限提升,安装后门,最终完全控制目标系统
  • 敏感信息泄露:攻击者可以通过利用中间件的配置或安全设置漏洞,获得系统、应用程序或数据库中存储的敏感信息

漏洞防御

  • 及时更新和升级中间件软件,安装最新的补丁和安全更新。
  • 配置中间件的安全设置,关闭或禁用不必要的功能和服务,遵循最佳的安全实践。
  • 实施强身份验证和访问控制,确保只有授权用户能够访问中间件和相关资源。
标签: web安全 学习 安全

本文转载自: https://blog.csdn.net/weixin_49349476/article/details/131174885
版权归原作者 纪水一 所有, 如有侵权,请联系我们删除。

“web安全漏洞总结”的评论:

还没有评论