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. java注解与反射--3

    java注解与反射--3 类的加载与ClassLoader java内存 堆 存放new的对象和数组 可以被所有的线程共享,不会存放别的对象引用 栈 存放基本变量类型 引用对象的变量 方法区 可以被所 ...

  2. Salesforce Javascript(三) 小结1

    本篇参考: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions https://developer.mozi ...

  3. 音质效果不错的Pcie声卡之CM8828听歌声卡

    CM8828芯片是cmedia骅讯公司生产的,采用这个芯片的声卡价格不一,便宜的100多,贵一点的500多.价位在100多买到这款声卡还是比较实惠的,再高一点的声卡都是堆料的.CM8828声卡是原生的 ...

  4. cs 保研经验贴 | 综合面试题库

    绝大部分夏令营都需要面试:如果幸运的话,稍微问几个问题就结束了:不幸的话,可能要抓住你做项目.读论文.复现.做 pre 等等. 这篇博客适用于幸运的情况:绝大部分学校的面试题库,都是彼此重合的,并且一 ...

  5. 存储系统模拟—R实现

    存储系统 存储问题是人们最熟悉又最需要研究的问题之一.例如企业储存的原材料.在制品等,存储太少,不足以满足生产的需要,将使生产过程中断; 存储太多,超过了生产的需要,将造成资金及资源的积压浪费.商店储 ...

  6. python 启动外部程序四种方法

    在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32proc ...

  7. w11默认调用ie浏览器方法

    作为公司的一个it人员,最近发现w11不能不能调用ie,导致公司的系统不能正常使用,因为后台插件室默认调用ie,如果重新写插件太麻烦,所以百度了下,亲测可用,目前,公司电脑已经可以正常使用,具体方法如 ...

  8. python之修改本地Ip地址

    安装模块pip install wmi # -*- coding: cp936 -*- # # FileName: ModifyIP.py # Date : 2008-01-15 # import w ...

  9. 部署:Mysql8和Mysql5.7部署同一服务器

    问题描述:将Mysql8.0.22和Mysql5.7.32部署在同一环境下 操作系统:centos7.8 数据库:Mysql8.0.22.Mysql5.7.32 版本 占用端口 实例名 数据文件 端口 ...

  10. 解决IDEA创建项目时无法引入依赖问题:Cannot resolve **.**.**(已解决)

    今天在创建SpringBoot整合MyBatis项目时出现报错: Cannot resolve org.springframework:spring-tx:5.3.26 Cannot resolve ...