网站常见安全漏洞 | 青训营

Powered by:NEFU AB-IN

文章目录

  • 网站常见安全漏洞 | 青训营
    • 网站基本组成及漏洞定义
    • 服务端漏洞
      • **SQL注入**
      • **命令执行**
      • **越权漏洞**
      • **SSRF**
      • **文件上传漏洞**
    • 客户端漏洞
      • **开放重定向**
      • **XSS**
      • **CSRF**
      • **点击劫持**
      • **CORS跨域配置错误**
      • **WebSocket**

网站常见安全漏洞 | 青训营

  • 网站常见安全漏洞-网站基本组成及漏洞定义

  • 网站常见安全漏洞-服务端漏洞介绍

  • 网站常见安全漏洞-客户端漏洞介绍

  • 网站常见安全漏洞-总结及强调网络安全法

网站基本组成及漏洞定义

网站常见安全漏洞 | 青训营_第1张图片

网关在计算机网络中指的是连接两个不同网络或协议的设备或系统。它的作用是将传入的数据包从一个网络发送到另一个网络中,充当网络的出口或入口。网关可以实现网络之间的通信和数据传输。

网关的主要功能包括地址转换、协议转换、数据加密和解密、流量控制、访问控制等。它还负责将传入的数据包路由到正确的目标主机,并在多个网络之间进行数据传输和转发。

NGINX 是一款高性能的开源网络代理服务器,它可以用作反向代理服务器、负载均衡器、HTTP缓存和网关等。作为网关,NGINX可以处理与网络之间的数据交换,转发请求,并将请求流量分发到内部的服务器集群。通过配置NGINX,可以实现对外部请求的流量控制、访问控制和安全性增强等功能。

因此,可以说NGINX可以充当网关的角色,但它不仅仅是一个网关,还具备其他众多的功能。

网站常见安全漏洞 | 青训营_第2张图片

网关是在计算机网络中起到连接不同网络或网络段之间的作用,它可以用于数据的路由、过滤、转换等功能。下面是一些常见的网关作用和工作流程例子:

  1. 路由网关:路由网关用于连接不同的网络,并根据数据包的目的地址,决定将数据包发送到哪个网络上。例如,Cisco的路由器就是一种常见的路由网关。

  2. 防火墙网关:防火墙网关用于监控和控制网络流量,以保护网络免受恶意攻击和未经授权的访问。例如,Checkpoint的防火墙就是一种常见的防火墙网关。

  3. SSL VPN网关:SSL VPN网关用于提供远程用户安全访问企业网络的功能,通过建立安全的虚拟专用网络(VPN)隧道,使远程用户可以安全地访问内部资源。例如,Juniper的SSL VPN网关就是一种常见的SSL VPN网关。

  4. API网关:API网关用于管理和保护企业的应用程序接口(API),它可以提供身份验证、访问控制、流量控制等功能。例如,Kong是一种常见的开源API网关。

网关的工作流程通常包括以下步骤:

  1. 接收数据包:网关从连接的网络或主机接收数据包。
  2. 解析数据包:网关解析数据包的头部信息,如源地址、目的地址、协议等。
  3. 决策处理:根据预设的策略和规则,网关决定如何处理该数据包,如路由到其他网络、进行访问控制、过滤等。
  4. 执行处理:网关执行相应的处理操作,如进行数据包的转发、修改数据包的内容等。
  5. 发送数据包:网关将处理后的数据包发送到下一个网络或主机。

举一个具体的网关实例是防火墙网关。当数据包进入防火墙网关时,网关会解析数据包的头部信息,如源IP地址、目的IP地址、端口号等。接着,网关根据预设的策略和规则,判断该数据包是否满足安全要求,如果不满足,网关可能会进行阻止或拦截处理;如果满足,网关可以根据策略将数据包转发到特定的网络或主机。同时,防火墙网关还可以对数据包进行深层次的检查和修改,以提供额外的安全保护。最后,网关将处理后的数据包发送到目标网络或主机。


网站常见安全漏洞 | 青训营_第3张图片


服务端漏洞

  • 第三方组件漏洞 如log4j
  • SQL 注入
  • 命令执行
  • 越权漏洞
  • SSRF
  • 文件上传漏洞

SQL注入

可能查出别的数据,通过union select
网站常见安全漏洞 | 青训营_第4张图片

  1. 直接拼接语句时不安全的,用ORM包,以对象的方式查询

  2. Mybatis 占位符

    • 若使用#,把它当成动态的字段,是直接拼接的效果,不存在漏洞
    • 若使用$,不会对参数值进行转义,会导致潜在的注入风险
      假设我们有一个查询用户信息的SQL语句:
    SELECT * FROM users WHERE username = $username
    

    假设攻击者输入的username参数为:' OR '1'='1'-- (注意末尾的注释符号,注释掉原本的闭合单引号,并追加额外的SQL语句,从而影响整个查询的逻辑),那么最终拼接的SQL语句将会变成:

    SELECT * FROM users WHERE username = '' OR '1'='1'--'
    

    这样,由于'1'='1'始终为真,攻击者可以绕过用户名验证,获取到所有的用户信息。

    使用#号可以防止这种注入攻击,因为#会将参数值进行转义并添加单引号,即使攻击者输入恶意字符,也不会产生注入漏洞。

  3. Golang常见错误写法

    比如是图片中插入一个if语句,1始终为真,一直执行第二个参数的内容,会让服务器休眠10s,就可以让外面判断是否可以SQL注入,从而可以进一步判断表明等等

    网站常见安全漏洞 | 青训营_第5张图片

防护措施(对外部数据进行数据清理)

网站常见安全漏洞 | 青训营_第6张图片


命令执行

防护方式

  • 设置白名单,只能操控这几个值
  • 设置黑名单,过滤字符

网站常见安全漏洞 | 青训营_第7张图片


越权漏洞

类别

  • 未授权,不需要认证,拿到数据

  • 水平越权,查询同等级别的账户信息

    网站常见安全漏洞 | 青训营_第8张图片

  • 垂直越权,使用别的权利


SSRF

SSRF代表"Server-Side Request Forgery",翻译成中文是“服务器端请求伪造”。它是一种网络安全漏洞,攻击者可以通过操纵服务器发起的请求来访问、探测或攻击服务器内部的资源,甚至可能用于攻击内部系统。通常,攻击者会通过构造恶意请求来欺骗服务器,使其执行不安全的操作,例如向内部服务器发起HTTP请求或访问本地文件系统。

以下是一些SSRF的具体例子:

  1. 访问内部资源: 攻击者可以构造恶意请求,使服务器发起请求到内部的数据库、文件系统或其他敏感资源,然后将结果返回给攻击者。这可以用于获取敏感数据或执行未授权的操作。

  2. 绕过防火墙或内部网络访问限制: 攻击者可以利用SSRF来访问内部系统,绕过外部服务器的防火墙或网络访问控制列表,进而攻击内部系统。

  3. 攻击本地资源: 攻击者可以利用SSRF来尝试访问本地文件系统,例如file:///协议,从而读取或修改服务器上的文件。

  4. 攻击其他服务: 攻击者可以构造请求,使服务器发起攻击其他服务,例如发起DDoS攻击,这可能会导致其他服务不可用。

防止SSRF攻击通常涉及到验证和过滤输入,确保服务器不会发起恶意请求。此外,网络架构的设计也可以减轻SSRF的风险,如将服务器限制在受信任的网络环境中,以防止访问敏感资源。

防护方式

  1. 尽量这些不要让内网地址可以公网访问
  2. URL post只在白名单中选

image.png


文件上传漏洞

  • PHP脚本注入

  • 网站常见安全漏洞 | 青训营_第9张图片

防护方式

网站常见安全漏洞 | 青训营_第10张图片


客户端漏洞

  • 开放重定向
  • XSS
  • CSRF
  • 点击劫持(clickjacking)
  • CORS跨域配置错误
  • WebSocket

开放重定向

可能后面的URL不可控

网站常见安全漏洞 | 青训营_第11张图片


XSS

网站常见安全漏洞 | 青训营_第12张图片

网站常见安全漏洞 | 青训营_第13张图片

防护方法

对输入(标签和属性)进行控制,有些onload onclick后面可以跟代码,需要控制


CSRF

网站常见安全漏洞 | 青训营_第14张图片

防护方式

网站常见安全漏洞 | 青训营_第15张图片


点击劫持

网站常见安全漏洞 | 青训营_第16张图片

不让使用