hvv蓝初面试常见漏洞问题(上)

6.ssrf

服务端伪造请求

原理

服务端提供了向其他服务器应用获取数据的功能,而没有对目标地址做任何过滤和限制。攻击者进而利用其对内部资源进行攻击。(通俗来说:就是攻击者可以伪造服务端发起请求,从而获取客户端所不能获取的数据)

常用协议

php:

  1. http:超文本传输协议
  2. https:安全超文本传输协议
  3. file:本地文件系统协议,用于在本地文件系统中访问文件
  4. gopher:用于在网络上传输文本和相关信息资源
  5. dict:字典处查询协议,探测内网主机,探测端口的开放情况和指纹信息
  6. ldap:用于在网络上访问和管理目录服务。常用于企业和组织中的用户身份验证和授权管理等
  7. ftp:文件传输协议,用于网络上传文件
  8. ssh:安全shell协议,用于远程服务器管理
  9. telnet:远程控制协议,用于远程访问和控制计算机和网络设备

java:

  1. http、https、file、ftp
  2. jar:使用 Jar 包协议访问 Java 应用程序的 Jar 文件资源
  3. rmi:// - 使用 Java 远程方法调用协议进行远程方法调用
  4. mailto:用于在邮件客户端和邮件服务器之间传递电子邮件的标准协议。在 SSRF 攻击中,攻击者可以使用 mailto 协议向指定的电子邮件地址发送恶意内容

存在在那些功能中:

  1. 文章分享
  2. 图片下载或加载
  3. 从远处服务请求资源

利用

  1. 端口扫描(可扫描内网,本地等设备,可通过端口banner信息进行判断)
  2. 对内网,本地运行的程序进行溢出攻击等
  3. 获取本地文件(file协议)
  4. 对内网,外网的web应用进行攻击(get提交)
  5. 内网应用指纹识别(通过判断特定文件来识别web应用使用的框架,平台,模块及CMS等)

绕过

  1. 使用ip地址代替url
  2. 利用dns重绑定:欺骗dns解析器,将特定域名解析为不同的ip地址
  3. 利用url编码和转义
  4. 利用协议的特殊性,例如file协议直接读取本地文件

防护

  1. 对用户输入的url参数进行白名单过滤和限制
  2. 对url中的协议和域名进行验证,禁用不必要的字符和协议
  3. 对外部请求进行限制过滤,限制远程服务器的端口和服务
  4. 限制应用程序内部的访问权限和资源访问范围

Redis未授权访问漏洞

原理

  1. 配置不当将redis服务器ip和端口暴露在公网
  2. 未配置redis的访问口令

防御

  1. 禁用root权限启动Redis服务
  2. 对Redis访问启动密码认证
  3. 添加IP访问限制,更改默认端口6379

ssrf漏洞利用

weblogic的10.0.2 – 10.3.6版本存在ssrf漏洞,可以进而攻击Redis进行未授权访问

与csrf区别

SSRF攻击是一种通过欺骗服务器来发送恶意请求的攻击技术,攻击者利用服务器上的漏洞进行攻击,并使服务器对指定的目标URL发起网络请求,从而达到恶意操作的目的。SSRF攻击主要针对服务器端应用程序。

而CSRF攻击则是一种利用用户身份验证信息来执行未经授权的操作的攻击,攻击者通过欺骗用户访问包含恶意代码的网站,来达到获取用户敏感信息、执行交易等攻击目的。CSRF攻击主要针对客户端浏览器。

另外,防御SSRF攻击和CSRF攻击的方法也有所不同。防御SSRF攻击需要对所有输入进行严格的验证和过滤,并使用白名单技术限制应用程序只向可信的服务器发送请求。而防御CSRF攻击需要使用随机的令牌(如CSRF Token)来验证每个请求的来源是否合法,并防止攻击者能够伪造请求或欺骗用户进行非法操作。

7.XXE

XML外部实体注入攻击

原理:

外部实体注入攻击,由于程序在解析输入的XML数据时,解析了攻击者伪造的外部实体而产生的攻击

XML语法规则

  1. 所有XML标签必须有关闭标签
  2. XML标签对大小写敏感
  3. XML属性值必须加引号

利用方式

  1. 任意文件读取

    a. 有回显:直接在页面看到执行结果或现象

    b. 无回显:使用外带数据通道提取数据
  2. 内网探测
  3. RCE

修复:

  1. 使用开发语言提供的禁用外部实体的方法
  2. 过滤用户提交的XML数据

8.逻辑漏洞

原理:

攻击者利用应用程序设计上的逻辑缺陷或不一致性,绕过应用程序的访问控制、身份认证、授权等保护机制,从而实现非授权的操作。逻辑漏洞一般不涉及任何技术上的漏洞,而是利用应用程序设计上的漏洞

常见逻辑漏洞

  1. 短信轰炸漏洞
  2. 越权漏洞

    a. 垂直越权:普通用户可以访问到高等级用户下的资源

    b. 水平越权:可以访问到同等用户下的资源
  3. 支付漏洞
  4. 注册时绕过验证

防护

  1. 增强用户输入和校验:例如在涉及到金额时要对金额数据进行合理性校验,限制最大最小金额等
  2. 实施权限控制,并对用户操作进行适当限制
  3. 对代码进行审计
  4. 实现日志记录

9.RCE

远程代码执行漏洞

原理

应用程序对用户的输入没有进行充分的验证和过滤,导致攻击者可以向应用程序中注入恶意代码,从而执行任意操作

修复

  1. 通用的修复方案,升级插件/框架/服务最新版。
  2. 如若必须使用危险函数,那么针对危险函数进行过滤。

常见RCE漏洞

  1. Windows远程桌面服务漏洞(cve-2019-0708):通过远程桌面端口3389,RDP远程桌面协议进行攻击
  2. Linux破壳漏洞(CVE-2014-6271):攻击者可以利用Shellshock漏洞向受影响的服务器发送特定构造的请求,通过在HTTP头部或环境变量中注入恶意代码,从而在服务器上执行任意命令。这可能导致攻击者完全控制服务器,并在系统上执行任何操作,如窃取敏感信息、植入后门等。

常用函数

  1. system()函数:允许调用操作系统命令,例如system("ls")将列出当前目录下的文件
  2. exec(): 执行一个系统命令或程序,与system()函数类似。
  3. popen(): 打开一个进程,并通过管道执行一个命令,然后读取输出。
  4. eval(): 解析并执行字符串中的 PHP 代码。

防范

  1. 输入过滤:在Web应用程序中,对用户输入进行过滤是防御RCE的第一道防线。应该使用白名单过滤用户输入,只允许特定的字符或命令。例如,禁止输入命令分隔符,或将所有输入转义为字符串形式
  2. 输入验证:在Web应用程序中,验证用户输入的类型和格式是防御RCE的另一个重要步骤。应该验证用户输入的数据类型和长度,并在输入值不符合要求时拒绝提交。
  3. 权限控制:在Web应用程序中,应该实现最小权限原则。即每个用户只能访问他需要访问的资源。如果用户没有访问某些敏感资源的权限,则应该拒绝其访问。
  4. 安全编码实践:在Web应用程序的开发过程中,应该使用安全编码实践,如避免使用eval()函数、限制文件的读写权限、使用可信的库等等。
  5. 安全配置:在Web服务器和操作系统级别上,应该实施安全配置,如禁止执行特定命令、关闭不必要的服务等等。
  6. 更新补丁:在Web应用程序、Web服务器和操作系统上安装及时更新补丁,以修补已知的安全漏洞,防止黑客利用已知漏洞进行攻击。

10.反序列化

原理:

反序列化是将序列化的数据流还原为对象的过程,序列化是将对象转换为数据流以便于存储或传输。反序列化常见于网络传输或数据存储中

常用函数

  1. php:serialize()序列化和unserialize()反序列化
  2. java:readObject()反序列化和writeObject()序列化

魔术方法

  1. __wakeup(): 当一个对象被反序列化时,如果存在该方法,该方法会被调用。可以在这里进行一些对象的重建或重置操作
  2. __toString(): 当一个对象被当作字符串使用时自动调用的方法。
  3. __sleep(): 当一个对象需要被序列化时,该方法会被调用。可以在这里定义哪些属性需要被序列化。
  4. __isset(): 在对一个对象属性进行 isset() 或 empty() 操作时自动调用的方法。在反序列化时,该方法可能会被调用,可以在这里进行一些自定义的属性判断操作。
  5. __construct(): 在实例化对象时自动调用的方法。反序列化时,该方法会被调用,可以在这里进行一些初始化操作。

防御

防止序列化非信任数据,只接受信任源的序列化

对反序列化数据进行校验

避免使用不受信任的序列化库

限制反序列化操作权限

hvv蓝初面试常见漏洞问题(下)的更多相关文章

  1. Linux环境下常见漏洞利用技术(培训ppt+实例+exp)

    记得以前在drops写过一篇文章叫 linux常见漏洞利用技术实践 ,现在还可以找得到(https://woo.49.gs/static/drops/binary-6521.html), 不过当时开始 ...

  2. Web中间件 - 常见漏洞总结

    *文章来源:https://blog.egsec.cn/archives/472 *本文将主要说明:Web中间件常见漏洞的产生原因以及修复方案 什么是Web中间件? 百度百科是这样解释的:中间件是介于 ...

  3. Windows XP与Windows 7系统常见漏洞

    1.Windows XP系统常见漏洞 Windows XP系统常见的漏洞有UPNP服务漏洞.升级程序漏洞.帮助和支持中心漏洞.压缩文件夹漏洞.服务拒绝漏洞.Windows Media Player漏洞 ...

  4. 2019 创蓝253java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.创蓝253等公司offer,岗位是Java后端开发,因为发展原因最终选择去了创蓝253,入职一年时间了,也成为 ...

  5. android WebView详解,常见漏洞详解和安全源码

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析.  转载请注明出处:http://blog.csdn.net/se ...

  6. 详解Javaweb中常见漏洞的防御

    上一篇给大家介绍了SpringMVC中常见的客户端数据输入点,这一篇给大家讲解下java中常见漏洞的防御方法. 0x01.sql注入 下面我们就用利用SpringMVC自带的数据库操作类jdbcTem ...

  7. PHP安全之道3:常见漏洞和攻防

    第一篇 SQL注入 安全配置和编程安全并不是万全之法,攻击者往往可以通过对漏洞的试探找到新的突破口,甚至0days. 下面总结以下常见漏洞,在日常开发维护工作中可以留意. *聊聊老朋友:SQL注入漏洞 ...

  8. LeetCode面试常见100题( TOP 100 Liked Questions)

    LeetCode面试常见100题( TOP 100 Liked Questions) 置顶 2018年07月16日 11:25:22 lanyu_01 阅读数 9704更多 分类专栏: 面试编程题真题 ...

  9. Android常见漏洞

    Android常见漏洞 漏洞名称: Log敏感信息泄露 漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露 修改建议: 建议禁止隐私信息的log 漏洞名称: web https校验错误忽略漏洞 漏 ...

  10. java代码审计中的一些常见漏洞及其特征函数

    文章来源:https://xz.aliyun.com/t/1633 最近在先知上看到之前有篇关于java代码审计的文章总结的蛮好,记录以下特征函数,方便查阅,同时自己也会将在平时代码审计过程中积累的函 ...

随机推荐

  1. 基于 Web SDK 实现视频通话场景 | 声网 SDK 教程

    声网视频 SDK 被广泛应用于多种实时互动场景中,例如视频会议.视频通话.音视频社交.在线教育等.为了让刚刚接触声网 SDK 的开发者,可以更顺畅地实现基础的视频通话功能,我们基于声网 Web SDK ...

  2. PGF 概率生成函数 Probability generating function

    Probability Mass Function 离散随机变量的分布函数PMF 目录 随机结构举例 two classical combinatorial distributions PGF Pro ...

  3. 机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类

    机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类 项目链接参考:https://www.heywhale.com/home/column/64141d6b1c8c8 ...

  4. aspnetcore中aop的实现

    aaspnetcore开发框架中实现aop不仅仅在业务上,在代码的优雅简洁和架构的稳定上都有着至关重要. 下面介绍三种用过的. 第一种通过System.Reflection的DispatchProxy ...

  5. 在Kubernetes部署GitLab

    在Kubernetes部署GitLab 前置条件 已安装Helm工具已部署NFS自动创建PVC 使用HELM安装 [root@k8s-master01 ~]# helm repo add gitlab ...

  6. 用Abp实现双因素认证(Two-Factor Authentication, 2FA)登录(一):认证模块

    @ 目录 原理 用户验证码校验模块 双因素认证模块 改写登录 在之前的博文 用Abp实现短信验证码免密登录(一):短信校验模块 一文中,我们实现了用户验证码校验模块,今天来拓展这个模块,使Abp用户系 ...

  7. ChatGPT,我彻彻底底沦陷了!

    当谈到人工智能技术的时候,我们会经常听到GPT这个术语.它代表"Generative Pre-trained Transformer",是一种机器学习模型,采用了神经网络来模拟人类 ...

  8. SpringBoot @Target、@Retention、@Documented注解简介

    jdk1.5起开始提供了4个元注解:@Target.@Retention.@Documented.@Inherited.何谓元注解?就是注解的注解. 在程序开发中,有时候我们需要自定义一个注解,这个自 ...

  9. 分布式文件存储MinIO、安装和使用

    1.MinIO简介 MinIO是高性能的对象存储,单个对象最大可达5TB.适合存储图片.视频.文档.备份数据.安装包等一系列文件.是一款主要采用Golang语言实现发开的高性能.分布式的对象存储系统. ...

  10. 打开conda环境报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x9a in position 317: illegal multibyt

    解决打开conda环境报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x9a in position 317: illegal multib ...