安全见闻(2)——开阔眼界,不做井底之蛙

devtools/2024/10/25 3:51:04/

内容预览 ≧∀≦ゞ

  • 安全见闻二:Web程序构成与潜在漏洞
    • 声明
    • 导语
    • 前端语言及潜在漏洞
      • 前端语言
      • 前端框架与代码库
        • 代码库的概念和用途
        • 流行的JavaScript框架
        • 常见的代码库
      • 前端潜在漏洞
    • 后端语言及潜在漏洞
      • 常见后端语言
      • 协议问题
      • 后端潜在漏洞
    • 数据库及潜在漏洞
      • 数据库分类
      • 数据库潜在漏洞
    • 服务器程序及潜在漏洞
      • 常见服务器程序
      • 服务器程序潜在漏洞
    • 结语

安全见闻二:Web程序构成与潜在漏洞


声明

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


导语

在现代网络安全的攻防体系中,Web程序的安全性是非常重要的一环。Web应用的前后端构成->数据库管理->服务器配置等各个层面,都可能存在潜在的漏洞。


前端语言及潜在漏洞

Web应用的前端通常使用三大基础语言:HTMLCSSJavaScript。这些语言的特性和使用方式直接影响Web应用的安全性。

前端语言

  • HTML

    • 潜在漏洞:点击劫持(Clickjacking)

      点击劫持是一种攻击方式,攻击者通过在网页中嵌套一个透明的框架(iframe),诱骗用户点击恶意链接或按钮。了解HTML结构对于防范此类攻击至关重要。

  • CSS

    • 潜在漏洞:注入攻击(Injection Attacks)

      注入攻击利用CSS的特性,将恶意代码注入到页面中,可能影响页面的显示效果或用户的交互体验。学习如何安全使用CSS属性是防范此类攻击的关键。

  • JavaScript

    • 常见漏洞:
      • XSS (跨站脚本攻击)

        XSS攻击允许攻击者向网站注入恶意脚本,可能导致用户数据泄露。根据注入方式不同,XSS可分为DOM型、反射型和存储型。

      • 点击劫持

        同上,利用透明框架欺骗用户点击隐藏的恶意链接。

      • 请求走私(HTTP Smuggling)

        攻击者通过篡改HTTP请求,绕过服务器的安全验证。这种攻击依赖于对HTTP协议的深入理解。

前端框架与代码库

代码库的概念和用途

代码库是将常用的代码片段、功能或组件封装起来,便于在不同项目中复用。
使用代码库可以节省开发时间,提高代码的可维护性和可重用性。

流行的JavaScript框架
  • Vue.jsReactAngular

    这些框架通过组件化和模块化提升了开发效率和代码组织性。
    虽然它们能够帮助开发者高效构建复杂应用,但其底层依赖于HTML、CSS和JavaScript。
    因此,框架中产生的安全问题往往与这些基础语言有关,常见的威胁包括跨站脚本攻击(XSS)。

常见的代码库
  • jQuery:一个快速、小巧且功能丰富的JavaScript库,简化了HTML文档遍历、事件处理、动画和Ajax交互。
  • Bootstrap:一个用于开发响应式和预制前端项目的流行框架,提供了预设计的组件和CSS预处理器。
  • Element UI:基于Vue.js的桌面端组件库,常用于快速搭建企业级的前端界面。

前端潜在漏洞

前端应用若未实施适当的安全措施,可能暴露于多种攻击之下:

  • XSS

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

  • CSRF (跨站请求伪造)

    攻击者诱骗用户浏览器在已登录的网站上发送恶意请求,可能执行未授权操作。

  • 点击劫持

    欺骗用户点击隐藏的恶意链接,可能导致用户执行危险操作。

  • 访问控制漏洞

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

  • Web缓存漏洞

    不当的缓存管理可能泄露敏感数据,例如用户信息和文件。

  • 跨域漏洞

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

  • 请求走私

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

后端语言及潜在漏洞

后端语言负责处理业务逻辑和数据库操作,不同语言具有独特的安全风险。

常见后端语言

  • PHP
    常见漏洞:反序列化漏洞、SQL注入、命令注入等。

  • Java、Python、Go、C/C++、Lua、Node.js、Ruby
    这些后端语言各有特性,但都可能面临与输入验证和用户权限管理相关的安全问题。

协议问题

后端开发涉及多种协议,尤其是请求走私攻击与协议处理方式密切相关。

理解HTTP协议机制对于学习此类攻击至关重要。

后端潜在漏洞

  • 信息泄露

    服务器返回的调试信息、日志等可能泄露关键信息,例如错误信息和内部结构。

  • XSS

    后端处理不当也可能引入XSS风险,确保数据在输出前经过适当过滤。

  • CSRF

    后端没有充分防范CSRF令牌时容易被利用,需加强令牌验证。

  • SSRF (服务器端请求伪造)

    攻击者利用服务器发送恶意请求,可能导致内部网络被攻击。

  • 反序列化漏洞

    特定语言的对象反序列化容易被攻击,尤其是PHP,Python,Java。

  • SQL注入漏洞

    通过操纵SQL查询,攻击者可执行未经授权的数据库操作,确保使用参数化查询以避免此类攻击。

  • 命令注入漏洞

    未对用户输入进行适当过滤或验证,可能导致执行系统命令,需严格验证输入。

  • 文件包含漏洞

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

  • 服务端模板注入

    注入恶意代码片段至服务器模板中,影响渲染结果。

  • 跨域漏洞

    后端对CORS的错误配置,可能导致敏感数据被泄露。

  • 访问控制漏洞

    不当的访问权限管理,导致未授权用户访问敏感资源。

数据库及潜在漏洞

数据库是Web应用的重要组成部分,安全问题常发生在数据处理过程中,特别是输入验证和查询操作。

数据库分类

  1. 关系型数据库
    • MySQL
    • SQL Server
    • Access
    • PostgreSQL
  2. 非关系型数据库
    • MongoDB
    • CouchDB
    • Neo4j
    • Redis

数据库潜在漏洞

  • SQL 注入漏洞

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

  • 跨站脚本攻击(XSS)漏洞

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

  • 数据库缓冲区溢出漏洞

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

  • 数据库索引损坏漏洞

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

  • 数据库日志注入漏洞

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

服务器程序及潜在漏洞

服务器程序是Web应用的核心,负责处理用户请求、执行业务逻辑和管理数据流。如果服务器配置不当或存在漏洞,可能成为攻击者的目标。

常见服务器程序

  • Apache
  • Nginx
  • IIS
  • Tengine
  • Tomcat
  • WebLogic

服务器程序潜在漏洞

  • 信息泄露

    敏感配置文件或日志信息可能被泄露,定期审计服务器配置以提高安全性。

  • 文件上传漏洞

    未经验证的文件上传功能可能导致恶意代码被执行,确保上传文件类型和大小的限制。

  • 文件解析漏洞

    文件解析错误可能导致代码注入,使用安全库处理文件解析。

  • 目录遍历

    攻击者通过非法路径访问敏感文件,需限制用户对文件系统的访问。

  • 访问控制漏洞

    服务器未严格限制用户权限,导致未授权的访问,确保使用细粒度的访问控制。


结语

Web程序的安全问题错综复杂,涵盖前端、后端、数据库和服务器等多个层面。面对如此多样的挑战,唯有不断拓展视野,才能更好地掌握应对各种威胁的知识与技能。安全之路如同学海无涯,只有通过持续学习和实践,才能明确前进的方向,保持不断进步的动力。


http://www.ppmy.cn/devtools/128584.html

相关文章

在MySQL中使用B+ 树索引如何查找连带表数据

在 MySQL 中,索引通过一定的数据结构(如 B 树)来加速查找表中的数据。下面给出一个关于 B 树索引查找连带表数据的伪代码示例。 伪代码结构: 建立索引:创建索引并初始化 B 树。查找索引:根据查询条件从 B…

主键 外键

主键 外键 在关系型数据库中,主键(Primary Key)和外键(Foreign Key)是用于维护数据完整性和建立表之间关系的重要概念。 主键(Primary Key) 定义: 主键是一个或多个列的组合,其值能…

界面耻辱纪念堂--可视元素04

当我们第一次注意到 Visual Basic 5.0 菜单的动画效果“特性”时,我们只能嘲笑这种特性的傻气。事实上,我们并不觉得特性本身傻气,而是微软为这个特性投资,然后将这个特性应用到他们所有的主流产品(例如,Of…

ESP32移植Openharmony外设篇(3)OLED屏

模块简介 产品介绍 OLED (Organic Light-Emitting Diode):有机发光二极管又称为有机电激光显示,OLED显示技术具有自发光的特性,采用薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且…

Android 10.0 截屏流程

通常未通过特殊定制的 Android 系统,截屏都是经过同时按住音量下键和电源键来截屏。本篇文章就只讨论使用这些特殊按键来进行截屏。 这里我们就要明白事件是在哪里进行分发拦截的。通过源码的分析,我们发现是在PhoneWindowManager.java 中。 PhoneWindow…

NSSCTF

[NSSRound#1 Basic]basic_check nikto扫描 nikto -h url PUT请求,如果不存在这个路径下的文件,将会创建,如果存在,会执行覆盖操作。 [NSSRound#8 Basic]MyDoor if (isset($_GET[N_S.S])) {eval($_GET[N_S.S]); } php特性&#…

Github_以太网开源项目verilog-ethernet代码阅读与移植(八)——移植工程分享

实验背景 第六篇计划是写项目中各个模块的实现和约束文件的编写,有的小伙伴有裁剪工程的需要,就先分享一个半成品以供参考,由于笔者水平有限,错误肯定会有,望批评指正。 实验内容 移植工程共享 实验步骤 工程一部…

JVM的内存模型是什么,每个区域的作用是什么,以及面试题(含答案)

JVM(Java 虚拟机)内存模型定义了 Java 程序在运行时如何分配、管理和优化内存。JVM 内存模型主要分为几个关键区域,每个区域有特定的作用: JVM 内存模型 堆内存(Heap): 作用:用于存…