Linux系统上的大漏洞

前些时收到阿里云发来的提醒短信,说Linux上的bash有严重漏洞,并提供了修补方式。 后来学习了解了一下,有两点发现:其一,今年Linux上的重大漏洞还挺多的,其二, 这些漏洞尽管严重,但是真要拿来攻击别人的服务器,还是非常困难的。

linux flaw

bash代码注入漏洞

bash会使用到环境变量x,而且还会执行其内容, Bash Code Injection Vulnerability via Specially Crafted Environment Variables一文有详细描述。

通过如下示例就可以检测是否存在漏洞:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

后来我发现,使用export也是可以的:

export x='() { :;}; echo vulnerable'
bash -c "echo this is a test"

也很容易验证,在python中的os.system()如果使用了bash,也会中招:

>>> os.system('bash -c "echo ahah"')

openssl漏洞heartbleed

Heartbleed漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。

Important OpenSSL Security Update有详细描述,OpenSSL 1.0.1 - OpenSSL 1.0.1f和OpenSSL 1.0.2-beta版本受影响。

如下两行命令都可以用来检测哪些进程使用了libssl.so库:

lsof | grep libssl.so | grep '\<DEL\>'
grep libssl.so /proc/*/maps | grep '(deleted)$' | cut -d/ -f3 | sort -u | xargs -r -- ps u

POODLE攻击

SSL/TLS是高安全性网站的首选,监听于443端口,通过https来访问,是socket传输的加密通道。

SSLv3据说在15年前就开始不被推荐使用了,它缺乏对http请求包长度的安全检查,存在溢出问题。 通常服务器端和浏览器会进行加密版本的协商,如果浏览器端恶意选择这个有问题的版本, 就能够利用起这个漏洞了,这就是POODLE攻击了。 POODLE: SSLv3 vulnerability有较详细的描述。

通过如下代码可以检测是否存在SSLv3:

#!/bin/bash
ret=$(echo Q | timeout 5 openssl s_client -connect "${1-`hostname`}:${2-443}" -ssl3 2> /dev/null)
echo ${ret}
if echo "${ret}" | grep -q 'Protocol.*SSLv3'; then
    if echo "${ret}" | grep -q 'Cipher.*0000'; then
        echo "SSLv3 disabled"
    else
        echo "SSLv3 enabled"
    fi  
else
    echo "SSL disabled or other error"
fi

其他

在bash命令中,:是一个什么都不做的命令,所以你可以随便执行它:

:;:;

在bash中,通过位置参数来获取给函数传递的参数,函数定义有两种写法:

fun(){ echo haha; echo $0,$1; }
fun 'abc'

function fun { echo haha; echo $0,$1; }
fun 'abc'

输出为:

haha
-bash,abc
发表于 2014年10月17日 16:55   评论:0   阅读:2015  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo