web.config本地加密解密BAT
發(fā)布時間:2011-06-16 00:43:57 作者:佚名
我要評論

可以控制某些用戶即使登錄到服務(wù)器上,也無法用aspnet_regiis -pdf對配置文件進行解密。
打開.Net Framework附帶的SDK命令提示符。
加密命令:
aspnet_regiis -pe “connectionStrings” -app “/encrypttest”
-pe開關(guān)用來指定web.config中需要加密的節(jié)(Web.Config文件中的connectionStrings配置節(jié))。
-app開關(guān)用來指定IIS里面的虛擬目錄,如果為根目錄網(wǎng)站,為”/”.
解密命令:
aspnet_regiis -pd “connectionStrings” -app “/encrypttest”
唯一的區(qū)別就是,我們用-pd開關(guān)代替了-pe開關(guān)。
1、加密EncryptWebConfig.bat
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef “connectionStrings” “D:\Program Files\Microsoft.NET\ Pet Shop 4.0Web”
PAUSE
2、解密DecryptWebConfig.bat
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf “connectionStrings” “D:\Program Files\Microsoft.NET\ Pet Shop 4.0Web”
PAUSE
解決方法是:
進dos運行:
aspnet_regiis -pa “NetFrameworkConfigurationKey” “NT AUTHORITY\NETWORK SERVICE”
如果運行出錯,需要把目錄 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 放入環(huán)境變量path中。
此時就可以成功訪問網(wǎng)站了。
同樣可以通過命令行來實現(xiàn)“RSAProtectedConfigurationProvider”加密
現(xiàn)在把找到文件附在下面:
我們?nèi)绻雽eb.config的數(shù)據(jù)庫連接字符串進行加密的話,那么這里提供了兩個方法。
方法一、
使用“DataProtectionConfigurationProvider”形式加密,創(chuàng)建tmdsb.aspx文件,代碼如下:
需要添加引用
using System.Web.Configuration;
using System.IO;
//加密
protected void Button1_Click(object sender, EventArgs e)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(“connectionStrings”);
if (section != null && !section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection(“DataProtectionConfigurationProvider”);
config.Save();
}
}
//解密
protected void Button2_Click(object sender, EventArgs e)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(“connectionStrings”);
if (section != null && section.SectionInformation.IsProtected)
{
section.SectionInformation.UnprotectSection();
config.Save();
}
}
總結(jié):此方法很方便,并且很簡單,但安全性沒有密鑰加密高。
方法二、
使用“RSAProtectedConfigurationProvider”形式來加密
test.aspx程序文件基本如上,
把
section.SectionInformation.ProtectSection(“DataProtectionConfigurationProvider”);
改成
section.SectionInformation.ProtectSection(“RSAProtectedConfigurationProvider”);
但這個時候你訪問網(wǎng)站的時候很有可能會出現(xiàn)
說明:
在處理向該請求提供服務(wù)所需的配置文件時出錯。請檢查下面的特定錯誤詳細信息并適當?shù)匦薷呐渲梦募?
分析器錯誤信息: 未能使用提供程序“RsaProtectedConfigurationProvider”進行解密。
提供程序返回錯誤信息為: 打不開 RSA 密鑰容器。
這樣的錯誤,解決方法是:
進dos運行:aspnet_regiis -pa “NetFrameworkConfigurationKey”
“NT AUTHORITY\NETWORK SERVICE”
如果運行出錯,需要把目錄 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
放入環(huán)境變量path中。此時就可以成功訪問網(wǎng)站了。
同樣可以通過命令行來實現(xiàn)“RSAProtectedConfigurationProvider”加密
注意:你也可以不運行 aspnet_regiis -pa “NetFrameworkConfigurationKey”
“NT AUTHORITY\NETWORK SERVICE”命令來注冊默認的
RsaProtectedConfigurationProvider 的RSA 密鑰容器
方法如下:
?。保﹦?chuàng)建一個可導(dǎo)出的rsa密鑰容器,命名為Key
aspnet_regiis -pc “Key” -exp
?。玻┰谀阋用艿男畔⑶懊嬷付荑€容器,如:
<configProtectedData>
<providers>
<clear />
<add name=”KeyProvider”
type=”System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL”
keyContainerName=”Key”
useMachineContainer=”true”/>
</providers>
</configProtectedData>
<connectionStrings>
<add name=”SQLConnString” connectionString=”Data Source=yourIP;Initial Catalog=test;User Id=yourID;Password=yourPassword;”
providerName=”System.Data.SqlClient” />
</connectionStrings>
并且確保在configuration節(jié)的xmlns屬性有如下值:
?。常ε渲梦募M行加密
aspnet_regiis -pef “connectionStrings” “E:\project\Test” -prov “KeyProvider”
參數(shù)分別為:需要加密的配置節(jié)、項目所在目錄的物理路徑、加密所使用的密鑰容器名稱
再看web.config文件,就會發(fā)現(xiàn)connectionStrings節(jié)已經(jīng)被加密了,但
是運行程序會發(fā)現(xiàn)程序仍然可以正確訪問數(shù)據(jù)庫。
此時,只需運行:
aspnet_regiis -pdf “connectionStrings” “E:\project\Test”
就可以對web.config文件進行解密。
(注意,如果還是有錯誤,那可能是您沒有給生成的密匙文件足夠的權(quán)限,
去到C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
目錄下,找到剛生成的密匙文件,把network service用戶的讀取權(quán)限賦予給它,就可以了,
直接用命令的話也可以:命令如下 aspnet_regiis -pa “Key” “NT AUTHORITY\NETWORK SERVICE” ,
可能需要重新啟動iis
?。矗┌衙荑€容器導(dǎo)出為xml文件
aspnet_regiis -px “Key” “e:\Key.xml”
這個命令只導(dǎo)出公鑰,因此以后只能用于加密,而無法解密。
aspnet_regiis -px “Key” “e:\Keys.xml” -pri
這個則連私鑰一起導(dǎo)出了,所以我們要用這個。
?。担┌衙荑€容器刪除
aspnet_regiis -pz “Key”
刪除后再運行程序,會提示出錯:
分析器錯誤信息: 未能使用提供程序“KeyProvider”進行解密。
提供程序返回錯誤信息為: 打不開 RSA 密鑰容器。
同理可以證明,在任何一臺未安裝正確的密鑰容器Key的機器上,
程序都無法對connectionStrings節(jié)進行解密,因此也就無法正常運行。
?。叮?dǎo)入key.xml文件
aspnet_regiis -pi “Key” “e:\Keys.xml”
此時,再運行程序會發(fā)現(xiàn)又可以解密了。證明加密與解密機制運行正常。
最后說一下這個機制所提供的安全性保障可以運用在什么方面:
對winform程序的app.config進行加密實際意義并不大,因為無論如何,
客戶機都可以通過運行aspnet_regiis -pdf 來對配置文件進行解密,從而暴露敏感信息。
對于web.config進行加密的意義也僅限于,當web.config文件不小心泄露時,
不會同時泄露敏感信息,如果惡意攻擊者已經(jīng)取得了在服務(wù)器上運行程序的權(quán)限,
那么同app.config一樣,可以很容易通過通過運行aspnet_regiis -pdf 獲取明文了。
還有,通過aspnet_regiis -pa “Key” “NT AUTHORITY\NETWORK SERVICE”
控制對不同用戶對密鑰容器的訪問權(quán)限,應(yīng)該還可以進一步獲取一些安全性,
比如可以控制某些用戶即使登錄到服務(wù)器上,也無法用aspnet_regiis -pdf對配置文件進行解密。
加密命令:
aspnet_regiis -pe “connectionStrings” -app “/encrypttest”
-pe開關(guān)用來指定web.config中需要加密的節(jié)(Web.Config文件中的connectionStrings配置節(jié))。
-app開關(guān)用來指定IIS里面的虛擬目錄,如果為根目錄網(wǎng)站,為”/”.
解密命令:
aspnet_regiis -pd “connectionStrings” -app “/encrypttest”
唯一的區(qū)別就是,我們用-pd開關(guān)代替了-pe開關(guān)。
1、加密EncryptWebConfig.bat
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef “connectionStrings” “D:\Program Files\Microsoft.NET\ Pet Shop 4.0Web”
PAUSE
2、解密DecryptWebConfig.bat
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf “connectionStrings” “D:\Program Files\Microsoft.NET\ Pet Shop 4.0Web”
PAUSE
解決方法是:
進dos運行:
aspnet_regiis -pa “NetFrameworkConfigurationKey” “NT AUTHORITY\NETWORK SERVICE”
如果運行出錯,需要把目錄 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 放入環(huán)境變量path中。
此時就可以成功訪問網(wǎng)站了。
同樣可以通過命令行來實現(xiàn)“RSAProtectedConfigurationProvider”加密
現(xiàn)在把找到文件附在下面:
我們?nèi)绻雽eb.config的數(shù)據(jù)庫連接字符串進行加密的話,那么這里提供了兩個方法。
方法一、
使用“DataProtectionConfigurationProvider”形式加密,創(chuàng)建tmdsb.aspx文件,代碼如下:
需要添加引用
using System.Web.Configuration;
using System.IO;
//加密
protected void Button1_Click(object sender, EventArgs e)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(“connectionStrings”);
if (section != null && !section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection(“DataProtectionConfigurationProvider”);
config.Save();
}
}
//解密
protected void Button2_Click(object sender, EventArgs e)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(“connectionStrings”);
if (section != null && section.SectionInformation.IsProtected)
{
section.SectionInformation.UnprotectSection();
config.Save();
}
}
總結(jié):此方法很方便,并且很簡單,但安全性沒有密鑰加密高。
方法二、
使用“RSAProtectedConfigurationProvider”形式來加密
test.aspx程序文件基本如上,
把
section.SectionInformation.ProtectSection(“DataProtectionConfigurationProvider”);
改成
section.SectionInformation.ProtectSection(“RSAProtectedConfigurationProvider”);
但這個時候你訪問網(wǎng)站的時候很有可能會出現(xiàn)
說明:
在處理向該請求提供服務(wù)所需的配置文件時出錯。請檢查下面的特定錯誤詳細信息并適當?shù)匦薷呐渲梦募?
分析器錯誤信息: 未能使用提供程序“RsaProtectedConfigurationProvider”進行解密。
提供程序返回錯誤信息為: 打不開 RSA 密鑰容器。
這樣的錯誤,解決方法是:
進dos運行:aspnet_regiis -pa “NetFrameworkConfigurationKey”
“NT AUTHORITY\NETWORK SERVICE”
如果運行出錯,需要把目錄 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
放入環(huán)境變量path中。此時就可以成功訪問網(wǎng)站了。
同樣可以通過命令行來實現(xiàn)“RSAProtectedConfigurationProvider”加密
注意:你也可以不運行 aspnet_regiis -pa “NetFrameworkConfigurationKey”
“NT AUTHORITY\NETWORK SERVICE”命令來注冊默認的
RsaProtectedConfigurationProvider 的RSA 密鑰容器
方法如下:
?。保﹦?chuàng)建一個可導(dǎo)出的rsa密鑰容器,命名為Key
aspnet_regiis -pc “Key” -exp
?。玻┰谀阋用艿男畔⑶懊嬷付荑€容器,如:
<configProtectedData>
<providers>
<clear />
<add name=”KeyProvider”
type=”System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL”
keyContainerName=”Key”
useMachineContainer=”true”/>
</providers>
</configProtectedData>
<connectionStrings>
<add name=”SQLConnString” connectionString=”Data Source=yourIP;Initial Catalog=test;User Id=yourID;Password=yourPassword;”
providerName=”System.Data.SqlClient” />
</connectionStrings>
并且確保在configuration節(jié)的xmlns屬性有如下值:
?。常ε渲梦募M行加密
aspnet_regiis -pef “connectionStrings” “E:\project\Test” -prov “KeyProvider”
參數(shù)分別為:需要加密的配置節(jié)、項目所在目錄的物理路徑、加密所使用的密鑰容器名稱
再看web.config文件,就會發(fā)現(xiàn)connectionStrings節(jié)已經(jīng)被加密了,但
是運行程序會發(fā)現(xiàn)程序仍然可以正確訪問數(shù)據(jù)庫。
此時,只需運行:
aspnet_regiis -pdf “connectionStrings” “E:\project\Test”
就可以對web.config文件進行解密。
(注意,如果還是有錯誤,那可能是您沒有給生成的密匙文件足夠的權(quán)限,
去到C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
目錄下,找到剛生成的密匙文件,把network service用戶的讀取權(quán)限賦予給它,就可以了,
直接用命令的話也可以:命令如下 aspnet_regiis -pa “Key” “NT AUTHORITY\NETWORK SERVICE” ,
可能需要重新啟動iis
?。矗┌衙荑€容器導(dǎo)出為xml文件
aspnet_regiis -px “Key” “e:\Key.xml”
這個命令只導(dǎo)出公鑰,因此以后只能用于加密,而無法解密。
aspnet_regiis -px “Key” “e:\Keys.xml” -pri
這個則連私鑰一起導(dǎo)出了,所以我們要用這個。
?。担┌衙荑€容器刪除
aspnet_regiis -pz “Key”
刪除后再運行程序,會提示出錯:
分析器錯誤信息: 未能使用提供程序“KeyProvider”進行解密。
提供程序返回錯誤信息為: 打不開 RSA 密鑰容器。
同理可以證明,在任何一臺未安裝正確的密鑰容器Key的機器上,
程序都無法對connectionStrings節(jié)進行解密,因此也就無法正常運行。
?。叮?dǎo)入key.xml文件
aspnet_regiis -pi “Key” “e:\Keys.xml”
此時,再運行程序會發(fā)現(xiàn)又可以解密了。證明加密與解密機制運行正常。
最后說一下這個機制所提供的安全性保障可以運用在什么方面:
對winform程序的app.config進行加密實際意義并不大,因為無論如何,
客戶機都可以通過運行aspnet_regiis -pdf 來對配置文件進行解密,從而暴露敏感信息。
對于web.config進行加密的意義也僅限于,當web.config文件不小心泄露時,
不會同時泄露敏感信息,如果惡意攻擊者已經(jīng)取得了在服務(wù)器上運行程序的權(quán)限,
那么同app.config一樣,可以很容易通過通過運行aspnet_regiis -pdf 獲取明文了。
還有,通過aspnet_regiis -pa “Key” “NT AUTHORITY\NETWORK SERVICE”
控制對不同用戶對密鑰容器的訪問權(quán)限,應(yīng)該還可以進一步獲取一些安全性,
比如可以控制某些用戶即使登錄到服務(wù)器上,也無法用aspnet_regiis -pdf對配置文件進行解密。
相關(guān)文章
- “CMOS密碼”就是通常所說的“開機密碼”,主要是為了防止別人使用自已的計算機,設(shè)置的一個屏障2023-08-01
QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調(diào)用QQ的OCR的,但翻譯按鈕確實沒啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04- QQ截圖是我用過的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨立版目前除了屏幕錄制功能其他都逆出來了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導(dǎo)致軟件無法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤分區(qū)安全時會采用 Windows 自帶的 BitLocker 加密工具對電腦磁盤分區(qū)進行加密。但有些人加密后就會忘記自己設(shè)置的密碼從而導(dǎo)致在安裝其它軟2020-11-25防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細介紹了如何才能防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-27徹底防止計算機泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計算機泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價值,2017-06-27- 最近有電腦用戶反應(yīng)量子計算機可以破解下載的所有的加密算法嗎?其實也不是不可以,下面虛擬就為大家講解買臺量子計算機,如何分分鐘破解加密算法2016-09-26
怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁后門。黑客通常會通過它控制別人網(wǎng)絡(luò)服務(wù)器,那么怎么破解webshell密碼呢?一起來看看吧2016-09-19- 本文討論了針對Linux系統(tǒng)全盤加密的冷啟動攻擊,大家都認為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28
防止泄露公司機密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對日漸嚴重的內(nèi)部泄密事件,我們?nèi)绾问刈o企業(yè)的核心信息,如何防止內(nèi)部泄密也就成了擺在各個企業(yè)領(lǐng)導(dǎo)面前的一大問題。其實,針對內(nèi)網(wǎng)安全,防止內(nèi)部信息泄漏早已有了比較2015-12-17