.NET内网实战:通过命令行解密Web.config

01阅读须知

此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。

02基本介绍

本文内容部分节选自小报童《.NET 通过命令行解密Web.config配置》,完整的文章内容请加入小报童后订阅查看。现在限时只需59元,永久买断!目前已有200+位朋友抢先预定,我们会长期更新,对.NET内网安全的朋友们请尽快订阅该报刊!

图片

03编码实现

在.NET应用系统中,保护数据库连接字符串的安全性至关重要。.NET 提供了一种通过 DataProtectionConfigurationProvider 加密连接字符串的方法,以防止敏感数据泄露。然而,在内网信息收集阶段,攻击者只需在目标主机上运行aspnet_regiis.exe这个命令行工具即可完成解密,获取数据库连接的明文字符串。

3.1 aspnet_regiis是什么

aspnet_regiis.exe 是一个命令行工具,用于配置和管理 .NET 应用程序在 IIS 中的注册和设置。该工具通常与 .NET 版本一起安装,用于执行各种与 ASP.NET 配置相关的任务。

使用 aspnet_regiis 工具将特定版本的 ASP.NET 注册到 IIS 上,确保 .NET 应用程序可以在该版本上运行,注册命令如下所示:

aspnet_regiis -i

3.2 .NET加解密提供器

DataProtectionConfigurationProvider 是 .NET Framework 2.0 引入的默认加密提供程序之一,主要用于在单台服务器上加密和解密配置文件数据。原理上使用 Windows Data Protection API (DPAPI) 进行加密,这意味着加密数据与操作系统的用户或机器密钥绑定。只有加密时使用的同一用户帐户或同一台机器才能解密数据。假设在 web.config 中有一个连接字符串如下所示。

<connectionStrings><add name="MyDb" connectionString="Data Source=myServer;Initial Catalog=myDb;User ID=myUser;Password=myPass;" providerName="System.Data.SqlClient" />
</connectionStrings>

使用aspnet_regiis.exe进行加密数据库连接字符串的命令如下所示。

aspnet_regiis -pef "connectionStrings" "C:\path\to\your\project" -prov "DataProtectionConfigurationProvider"

加密后,内容将被替换成如下所示。

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider"><EncryptedData><CipherData><CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAnu1l5eTFekKy...</CipherValue></CipherData></EncryptedData>
</connectionStrings>

解密连接字符串的命令如下所示。因此,这种加密方式适用于单台服务器环境下的配置文件保护,不适合在多个服务器之间共享加密的数据。密钥由 Windows 操作系统管理,不需要额外的密钥管理。

aspnet_regiis -pdf "connectionStrings" "C:\path\to\your\project"

3.3 技术实现

该工具首先会将站点根目录下的 web.config 文件复制到一个新创建的 dotNetMatrix 目录中,以防止直接操作原始配置文件导致意外损坏,具体代码如下所示。

string webConfigPath = Path.Combine(exeDirectory, "web.config");
string targetDirectory = Path.Combine(exeDirectory, "dotNetMatrix");
string targetWebConfigPath = Path.Combine(targetDirectory, "web.config");
if (File.Exists(webConfigPath))
{Directory.CreateDirectory(targetDirectory); File.Copy(webConfigPath, targetWebConfigPath, true); Console.WriteLine($"web.config 已复制到 {targetWebConfigPath}");
}

通过 File.Exists 判断 web.config 文件是否存在,然后创建 dotNetMatrix 目录,并将 web.config 文件复制到该目录下。随后,使用 ProcessStartInfo 配置解密命令行参数,并启动 aspnet_regiis.exe 进程执行解密操作。

ProcessStartInfo psi = new ProcessStartInfo
{FileName = aspnetRegiisPath,Arguments = decryptCommand,UseShellExecute = false,RedirectStandardOutput = true,CreateNoWindow = true
};
using (Process process = Process.Start(psi))
{ string result = process.StandardOutput.ReadToEnd(); Console.WriteLine(result);process.WaitForExit(); 
}

最后,打开dotNetMatrix文件夹查看解密后的web.config内容,可以发现数据库连接字符串已经成功解密。如下图所示

图片

综上,使用DataProtectionConfigurationProvider 加密器可以提高攻击者获取明文密码的难度,但在获取目标webshell权限后,通过自动化攻击就可以完成加密连接字符串的解密操作。

04.NET 电子报刊

《.NET 内网安全攻防》专栏,内容主要有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,可细分为以下8个方向。

1) .NET 安全防御绕过
2) .NET 本地权限提升
3) .NET 内网信息收集
4) .NET 内网代理通道
5) .NET 内网横向移动
6) .NET 目标权限维持
7) .NET 数据传输外发
8) .NET 目标痕迹清理

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/141476.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot集成Akka Cluster快速入门Demo

1.什么是Akka Cluster&#xff1f; Akka Cluster将多个JVM连接整合在一起&#xff0c;实现消息地址的透明化和统一化使用管理&#xff0c;集成一体化的消息驱动系统。最终目的是将一个大型程序分割成若干子程序&#xff0c;部署到很多JVM上去实现程序的分布式并行运算&#xf…

编译原理之预处理

目录 生成预处理文件的的命令 预处理做了什么 实验 --------------------------------------------------------------------------------------------------------------------------------- 本篇文章主要是带着大家一起看看预处理阶段编译器都做了些什么 --------------…

十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明

十四&#xff0c;在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明 文章目录 十四&#xff0c;在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明1. 基本介绍2. 准备工作&#xff1a;3. 内置 Tomcat 的配置3.1 第…

Git项目管理工具

分布式版本控制系统

62. 不同路径、64. 最小路径和

思路 dp&#xff1a;代表到达当前位置的总方式 初始化&#xff1a;第一行的位置dp[0][j]&#xff1a;当前位置只能由左边的位置向右移动得到 所以只有1种方式 d[0][j]1, d[0][0]1 第一列的位置 dp[i][0]&#xff1a;当前位置只能由上一个位置向下移动得到 除此之外的位置可以由…

【Python】基本使用

目录 变量的类型 整数 int 浮点数 float 字符串 str 字符串长度 格式化字符串 布尔类型 动态类型 注释 获取输入 浮点数比较 多元赋值 for循环 函数的定义和调用 创建函数/定义函数 调用函数/使用函数 列表 创建列表 切片操作 遍历列表 新增元素 判断元…

2024最全网络安全工程师面试题(附答案),金九银十找工作必看!

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

[matlab]matlab调用python的各种方法

前言 在MATLAB中&#xff0c;可以使用 py 函数来调用Python模块和函数。在此基础上&#xff0c;我们可以很轻易的调用python中的各种模块&#xff0c;方便我们在神经网络上的应用仿真。 以下是使用MATLAB调用Python模块的基本步骤&#xff1a; 确保你的系统已经正确安装了Py…

文心一言 VS 讯飞星火 VS chatgpt (347)-- 算法导论23.2 6题

六、假定一个图中所有的边权重均匀分布在半开区间[0,1)内。Prim算法和Kruskal算法哪一个可以运行得更快&#xff1f;如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在比较Prim算法和Kruskal算法在特定条件下的性能时&#xff0c;我们需要考虑几个因素&#xff…

复杂情感识别系统

复杂情感识别系统&#xff08;CERS&#xff09;是一种先进的技术平台&#xff0c;旨在通过分析情感的组合、相互关系及其动态变化来解读和识别复杂的情感状态。这种系统通常采用以下技术和方法&#xff1a; 机器学习与深度学习&#xff1a; 通过训练算法识别和解释大量情感数据…

[Linux]:进程间通信(上)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;Linux学习 贝蒂的主页&#xff1a;Betty’s blog 1. 进程间通信介绍 1.1 进程间通信的概念 进程间通信简称IPC&#xff08;In…

jdk相关介绍

JDK&#xff0c;全称Java Development Kit&#xff0c;是Java语言开发的基础工具包。它包含了Java运行时环境&#xff08;JRE&#xff09;以及用于开发Java应用程序的各种工具和库。JDK为Java程序员提供了编译、调试和运行Java应用程序所需的全部环境。 JDK的主要组成部分包括&…

离线数仓DWD层

离线数仓DWD层 DWD层设计要点&#xff1a;9.1 交易域加购事务事实表9.2 交易域下单事务事实表9.3 交易域取消订单事务事实表9.4 交易域支付成功事务事实表9.5 交易域退单事务事实表9.6 交易域退款成功事务事实表9.7 交易域购物车周期快照事实表9.8 工具域优惠券领取事务事实表9…

2024/9/15 408“回头看”之应用层小总结(下)

域名系统DNS: 本地域名服务器 本地域名服务器起着代理的作用&#xff0c;会将报文转发到根域名服务器、顶级域名服务器、权限域名服务器。 递归查询&#xff1a; 迭代查询&#xff1a; 文件传送协议FTP: FTP客户和FTP服务器之间使用的是tcp连接。 控制连接使用21端口&…

树莓派5上手

1 安装系统 Raspberry Pi OS 是基于 Debian 的免费操作系统&#xff0c;针对 Raspberry Pi 硬件进行了优化。Raspberry Pi OS 支持超过 35,000 个 Debian 软件包。树莓派 5 可以安装各种系统&#xff0c;但是如果对于系统没有特殊的要求&#xff0c;还是安装 Raspberry Pi OS …

基于SSM的二手车管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的二手车管理系统4拥有三种角色 管理员&#xff1a;订单管理、在售车辆管理、下架车辆管理、品牌管理、分类管理、推荐管理、统计等 商家&#xff1a;登录注册、添加/下架/删除车辆…

各类元器件调试记录-E+H

一、EH压力传感器 适用型号为&#xff1a; Cerabar S PMC71, PMP71/75 Deltabar S FMD76/77/78, PMD70/75 Deltapilot S FMB70 调试过程&#xff1a;(后续补上图片) 一、湿标(湿调) 1、前提条件&#xff1a;罐体可以灌满和实际水箱水位高度 2、调试步骤&#xff1a; A、调节语…

网络安全有救了,37所高校新增网络安全空间安全专业

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

凸优化学习(3)——对偶方法、KKT条件、ADMM

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

鸿蒙交互事件开发07——手势竞争问题

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01;扫描下方名片&#xff0c;关注公众号&#xff0c;公众号更新更快&#xff0c;同时也有更多学习资料和技术讨论群。 1、背景 在文章鸿蒙交互事件开发05——常用的6种手势类型中&#xff0c;有朋友留言…