许多安全扫描程序(如nikto,nessus,nmap和w3af)有时会显示某些HTTP方法(如HEAD,GET,POST,PUT,DELETE,TRACE,OPTIONS,CONNECT等)容易受到攻击。
这些方法的作用是什么
我正在寻找比POST或GET注入(例如,更改的字段)等常见漏洞更具创造力的东西。这将有助于我理解您的答案是否为我提供了与标头的利用技术相比标头正常使用的简短示例。

评论

另外,出现问题是因为在我的一台服务器上。我收到警告说我的TRACE方法很容易受到攻击。问题是,我不知道是什么跟踪或如何利用它。

通常,您似乎对HTTP有一些基本的困惑。 HTTP方法不是标头。也许按顺序阅读RFC的相关部分?

关于HTTP的O'Reilly书籍将是一个不错的起点。

大多数Web浏览器只能调用GET和POST,而其他HTTP客户端可以调用其他的浏览器。从技术上讲,无法对浏览器中的PUT方法进行XSS攻击,因为浏览器不进行PUT。

#1 楼

这些方法中的某些方法通常很危险地暴露出来,而某些方法在生产环境中只是多余的,可以认为是额外的攻击面。仍然值得关闭它们,因为您可能不需要它们:


HEAD,GET,POST,CONNECT-这些是完全安全的,至少与HTTP方法本身一样安全。当然,请求本身可能具有恶意参数,但这与方法是分开的...通常,这些参数(请注意以下异常)是唯一应启用的参数。 ,这些方法原本是作为文件管理操作使用的。
某些Web服务器仍以其原始格式支持这些方法。也就是说,您可以从服务器的文件系统中任意更改或删除文件。显然,如果启用了这些方法,则会使您容易受到一些危险的攻击。<​​br />如果绝对必须启用这些方法,则应该非常严格地限制文件访问权限。但是无论如何,您不应该-如今,可以使用简单的脚本(如果这是一个静态网站-如果它是一个实际的应用程序,请自行编写)来支持此功能。
请注意:启用这些方法(PUT和DELETE)的一种有效方案是,如果您正在开发严格的RESTful API或服务;但是,在这种情况下,该方法将由您的应用程序代码而非Web服务器处理。
OPTIONS-这是一种诊断方法,它返回一条消息,主要用于调试等。令人惊讶的是,该消息基本上报告了Web服务器上哪些HTTP方法处于活动状态。实际上,当今很少将其用于合法目的,但它确实为潜在的攻击者提供了一点帮助:可以将其视为找到另一个漏洞的捷径。
现在,这本身并不是一个漏洞。 ;但由于没有实际用途,因此它只会影响您的攻击面,因此最好将其禁用。
注意:尽管有上述规定,但如今,OPTIONS方法仍用于多种合法用途,例如,某些REST API需要OPTIONS请求,CORS需要飞行前请求等。因此,在某些情况下肯定应启用OPTIONS,但默认情况下仍应“禁用,除非需要”。
TRACE-这是令人惊讶的...再次,一种诊断方法(如@Jeff提到的)在响应正文中返回整个HTTP请求。这包括请求正文,还包括请求标头,例如Cookie,授权标头等。
不足为奇,它可能被严重误用,例如经典的跨站跟踪(XST)攻击,其中XSS向量可用于检索HttpOnly Cookie,授权标头,等等。绝对应该禁用此功能。
还有另一套方法需要提及:所有其他方法。对于某些Web服务器,为了启用/禁用/限制某些HTTP方法,可以在配置文件中显式地设置它们的一种或多种方式。但是,如果未设置默认值,则可以“注入”其他方法,从而绕过Web服务器可能已实现的某些访问控制(差)。例如,请参阅有关OWASP的更多信息。


评论


如今,REST API大量使用OPTIONS

–尼尔·麦圭根(Neil McGuigan)
13年11月19日在19:34

OPTIONS在新的HTML5安全模型中大量使用

–地牢猎人
2014年4月1日在8:31



@AviD您在选项部分之后添加了注释,但您在“实际上,当今很少出于合法目的使用此注释”中保留了此注释。这与您添加的笔记冲突

– Kyeotic
16-10-3在21:24

@AviD CONNECT方法可用于将Web服务器用作代理,因此我不会称之为完全安全,因为这可能会严重滥用主机,从而给主机带来后果。

–外观
17年8月2日在11:04

@Gewure你能解释一下吗?当然,可以通过特定方法利用其他漏洞,但这不会使方法的可用性成为问题...?

–AVID♦
17年8月2日,12:50

#2 楼

关于TRACE的主要警告是它被设计为分拆HTTP请求的路由,这与traceroute旨在分拆数据包的路由的方式类似。关键区别在于,TRACE命令涉及后端的操作以及已接收内容的公开。如果您的前端提供API密钥或与后端类似的东西,则可能会出现问题。

请参阅RFC 2616,以获取有关TRACE的更多信息以及其他标头的说明。

#3 楼

使用PUT方法,您可以在服务器上上传任何文件。这可用于执行跨站点脚本(XSS)。今天,我已经执行了此攻击,因此请以我的经验在这里回复。下面将说明如何执行此操作。

PUT /XSS.html HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.myblog.com
Accept-Language: en-us
Connection: Keep-Alive
Content-type: text/html
Content-Length: 182
(Input your XSS script here) 


服务器以201状态代码作为响应,该状态代码显示“文件已成功创建”。

HTTP/1.1 201 Created
Date: Mon, 05 May 2014 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Content-type: text/html
Content-length: 30
Connection: Closed


现在,我们可以尝试在浏览器中访问此上传的XSS.html文件。进入此页面后,您会弹出一个XSS弹出窗口。

同样,尽管我还没有尝试过,但也可以进一步利用它执行命令注入。如果应用程序使用XML,则也可以执行XML外部实体攻击。 Havent也这样做了。目录遍历攻击也是可能的。

评论


这个答案对RESTful服务也有效吗?

– Mubin
19年1月22日在17:53

配置不良的服务器上的“使用PUT方法”。这不是http方法的问题,这是(错误地)配置服务器以接受任何人上传文件的家伙的问题。我不会问该服务器是否接受执行未经身份验证的用户(恐怖的面孔)上传的脚本

–usr-local-ΕΨΗΕΛΩΝ
19年7月5日在16:14