从Bash漏洞学Shell脚本(冒号)
前天,爆发了Bash安全漏洞,非常恐怖。在网络上开始飞速传播,附带了非常友好的检测工具。
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
看一下运行结果:
vulnerable
this is a test
我的bash是vulnerable。
看一下测试命令。(这个才是我们需要看的东西,从中学习。)开始,我比较蒙。同事给我解释了这个命令的含义和出现问题的原因。
env设置环境变量的命令。给x设置了环境变量'() { :;}; echo vulnerable'。而环境变量经过bash的执行,匿名函数通过了执行,执行了vulnerable。
对于设置环境变量,正常而言是不能执行的。我们可以设置一下函数尝试一下。执行命令
env x='e() { :;}; echo vulnerable'
命令同时会把内容打印出来看
。。。。。。。#省略一些
SHLVL=
HOME=/root
LOGNAME=root
QTLIB=/usr/lib64/qt-3.3/lib
CVS_RSH=ssh
CLASSPATH=.:/usr/jdk1..0_07/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
SSH_CONNECTION=192.168.100.231 192.168.100.172
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=
_=/bin/env
OLDPWD=/root
x=e(){:;};echo vulnerable
在最后x已经定义成功了。把函数和命令当做字符串进行了处理。
看到了他们当中的不同了吗?这个就是bash的漏洞的原因,引申一下:如果骇客执行了恶意程序,后果不堪设想。当然通过网络等方法是用这个漏洞,git/svn。网络服务器等互联网常用的软件,造成网络的极大不安全。
最后我们看一下,这个列子中使用的一个比较不常用的符号 : (冒号)。在Bash里边:是一个占位符。是一个不执行的命令。这个命令对于命令输入不挑食,可以作为注释方法。
没有输出,可以对文件进行清空。
: > test.file
cat test.file
: your comment
从Bash漏洞学Shell脚本(冒号)的更多相关文章
- bash命令检测Shell脚本中的语法错误和查看详细执行过程
(1).bash命令检测Shell脚本中的语法错误 bash -v [脚本] [root@youxi1 ~]# vim a.sh #/bin/bash sum=$[$1+$2] echoo $sum ...
- Linux就该这么学--Shell脚本条件语句(二)
1.for条件语句 先读取多个不同的变量值,然后逐一执行同一组命令. 从列表文件中读取主机地址,逐个测试是否在线. 从ipadds.txt中读取主机地址后赋值给HLIST变量后逐个ping列表中的主机 ...
- Linux就该这么学--Shell脚本条件语句(一)
1.条件测试语句能够让Shell脚本根据实际工作灵活调整工作内容,例如判断系统的状态后执行指定的工作,或创建指定数量的用户,批量修改用户密码,这些都可以让Shell脚本通过条件测试语句完成. if条件 ...
- Linux就该这么学--Shell脚本基本应用
1.接收用户的参数: Shell脚本为了能够让用户更灵活的完成工作需求,可以在执行命令时传递参数:(命令名 参数1 参数2...) Shell预定义变量: $0 当前执行Shell脚本的程序名 $1- ...
- java 调用bash shell脚本阻塞的小问题的解决
java 调用bash shell脚本阻塞的小问题的解决 背景 使用java实现的web端,web端相应用户的界面操作,使用java调用bash实现的shell脚本进行实际的操作,操作完成返回执行结 ...
- Vim编辑器与shell脚本
目录 Vim文本编辑器 Shell脚本 Shell编程变量 流程控制语句 计划任务 ...
- 简单的 Shell 脚本入门教程
Shell脚本 运作方式与解释型语言相当,如果有语言基础,学起 Shell 脚本就非常容易,但是 Shell 与常见的语言不同,一些常见的函数在 Shell 中需要组合一些命令得以实现 工具推荐 Sh ...
- Shell脚本编程具体解释
第12章 Shell脚本编程 l Shell命令行的执行 l 编写.改动权限和运行Shell程序的步骤 l 在Shell程序中使用參数和变量 l 表达式比較.循环结构语句和条件结构语句 l ...
- 介绍shell脚本
简单的说shell就是一个包含若干行Shell或者Linux命令的文件.对于一次编写,多次使用的大量命令,就可以使用单独的文件保存下来, 以便日后使用.通常shell脚本以.sh为后缀.在编写shel ...
随机推荐
- WPP
WPP(Wavefront Parallel Processing) 上一行的第二个LCU处理完毕,即对当前行的第一个LCU的熵编码(CABAC)概率状态参数进行初始化,如图5所示.因此,只需要上一行 ...
- oracle查看表锁及解锁
--kill session语句 1 alter system kill SESSION '2171,60490'; --以下几个为相关表 1 2 3 4 5 6 7 SELECT * FROM v$ ...
- 彻底理解position与anchorPoint - Wonderffee's Blog(转)
引言 相信初接触到CALayer的人都会遇到以下几个问题: 为什么修改anchorPoint会移动layer的位置?CALayer的position点是哪一点呢?anchorPoint与positio ...
- Centos6.x X64 飞信安装
Centos6.x X64 飞信安装 1,安装飞信依赖包 yum -y install glibc.i686 krb5-libs.i686 libstdc++.i686 zlib.i686 --set ...
- JSP实现数据库(MySQL)查询——Java Web练习(二)
1.创建数据库表student(数据库test01) 2.修改success.jsp页面,修改后的页面整体代码如下: <%@ page language="java" imp ...
- spring官方文档中文版
转 http://blog.csdn.net/tangtong1/article/details/51326887 spring官方文档:http://docs.spring.io/spring/do ...
- JMeter入门(2):一个简单实例
场景描述: 自己建立一个服务器端,接受参数:name和age,并将这些数据保存到数据库中: http://localhost:8080/Server/SaveServlet?name=xxx& ...
- 有用的javascript外部文件或其他外部文件引用
1.<link href='http://fonts.googleapis.com/css?family=PT+Sans+Narrow' rel='stylesheet' type='text/ ...
- 怎样在win7下装ubuntu(硬盘版安装)
1)首先还是分区,在计算机上右键--管理--磁盘管理 装Ubuntu分配的硬盘大小最好是(20G以上)不要太小,这里请注意,ubuntu和windows文件系统全然不同,所以我们划好要给ubuntu的 ...
- NuGet的使用和服务搭建
问题的由来 最近部门,在开发的时候遇到一个问题,现在有项目A B C三个项目,项目B和C分别提供了组件库由项目A直接引用.那么每次开打项目A获取最新后,同时还得打开项目B C获取最新然后编译一次.抛开 ...