Ранливост кај BlazeVideo BlazeDVD 5.0 Professional/Standard - BoF
Автор: Ѓоко Крстиќ
Објавено на: 08.08.2008
Како и во мојот претходен пост, се работи за истиот вид на напад, односно Buffer Overflow, но овојпат во софтвер пакетот BlazeVideo - BlazeDVD 5.0 Professional и Standard верзијата. Се работи за пренатрупување на меѓумеморијата (buffer) од страна на корисникот со помош на посебен приземјен податок од типот плејлиста со екстензија .PLF.
Ранливоста може да се експлоатира локално и далечински така што жртвата треба да биде измамена или насочена кон некоја веб страна на напаѓачот каде што се наоѓа направениот малициозен фајл (пр. Со помош на iframe).
Откако ја пронајдов оваа ранливост, побарав на интернет за да видам дали постои некој си Advisory за дадената слабост кај овој продукт. Дојдов до сознание дека ваквата слабост била пронајдена во далечната 2006 година од страна на Parvez Anwar како и Greg Linares. Без ниту една закрпа од страна на производителот за дадениот пропуст решив да одам подлабоку со истражувањето како и доаѓање до успешна експлоатација.
Се работи за .PLF фајл кој содржи повеќе од 256 бајти, за кој, софтверот не извршува адекватна проверка на внесување од страна на корисникот, со што, доаѓаме до презапишување на EIP регистарот кој покажува до следната инструкција или адреса во меморијата за понатамошно извршување и нормалниот тек на програмата. Поради оваа пригода, се решив за експлоатациски код со чија помош ќе го презапишеме EIP регистарот и ќе и наредиме на програмата да ја стартува calc.exe (калкулатор) алатката со помош на специјален shellcode (win32_exec, CMD=calc.exe) креиран со услугите на Metasploit конструкцијата.
По извршената анализа, се работи точно за 264 бајти, од кое последните 4 бајти ќе ги искористиме за адресата за враќање (return address или RET), 164 бајти за shellcode-от и останатите бајти за NOP кодови (No OPeration codes) или \x90 во хексадецимално изразување.
Значи:
* 264 - 4 (RET) = 260
* 260 - 164 (SHELLCODE) = 96 (NOP)
За наоѓање на RET адресата, првично морав да ставам неколку "A" карактери од дадениот износ на NOP кодови, од прилика 86, и останатите 10 NOP кодови. Пр:
$garbage = "A" x 86;
$nop = "\x90" x 10;
$shellcode и $ret и т.н.
Презапишување на EIP регистарот
Следува доказ на концептот (PoC):
--------------------------------------------------------------------------------
#!/usr/bin/perl
#
# Title: BlazeDVD 5.0 PLF Playlist File Remote Buffer Overflow Exploit (PoC)
#
# Summary: BlazeDVD is leading powerful and easy-to-use DVD player software.
# It can provide superior video and audio(Dolby) quality, together with other
# enhanced features:e.g. recording DVD,playback image and DV,bookmark and image
# capture.etc.Furthermore, besides DVD,Video CD,Audio CD, BlazeDVD supports DIVX,
# MPEG4, RM, QuickTime, WMV, WMV-HD, MacroMedia Flash and any other video file
# you have the codec installed for.The DVD player software can be extensive
# compatible with hardware,which is operated stable,smoothly under Windows98,
# 98SE, Me, 2000, XP, VISTA.
#
# Product web Page: http://www.blazevideo.com/dvd-player/index.htm
#
# Desc: BlazeDVD 5.0 suffers from buffer overflow vulnerability that can be
# exploited via crafted PLF playlist file localy and remotely. It fails to
# perform boundry checking of the user input file, allowing the EIP to be
# overwritten, thus, controling the next insctruction of the software. After
# succesfull exploitation, calc.exe will be executed. Failed attempts will
# result in Denial Of Service (DoS).
#
# WinDgb(output):
#
#
# - (4d8.f80): Access violation - code c0000005 (first chance)
# - First chance exceptions are reported before any exception handling.
# - This exception may be expected and handled.
# - eax=00000001 ebx=77f6c15c ecx=04bd0ba8 edx=00000042 esi=01beffc0 edi=6405565c
# - eip=41414141 esp=0012f188 ebp=01befcf8 iopl=0 nv up ei pl nz ac pe nc
# - cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010216
# - 41414141 ?? ???
#
#
# Tested on Microsoft Windows XP SP2 (English)
#
# Vulnerability discovered by: Parvez Anwar and Greg Linares
#
# Refs:
#
# - http://secunia.com/advisories/23041/
# - http://www.frsirt.com/english/advisories/2006/4764
# - http://xforce.iss.net/xforce/xfdb/30567
# - http://osvdb.org/30770
# - http://www.securityfocus.com/bid/21337/
# - http://www.milw0rm.com/exploits/2880
#
# Exploit coded by Gjoko 'LiquidWorm' Krstic
#
#
Оваа адреса на е-пошта е зашититена од спем-ботови, потребно е да го вклучите Javascript-от за да ја погледнете
#
# http://www.zeroscience.org
#
# 08.08.2008
#
Значи, се работи за верзијата 5.0 Professional и Standard. Со неуспешна експлоатација, доаѓа до паѓање на апликацијата - DoS. Со успешната експлоатација, се извршува вградениот калкулатор на Microsoft Windows XP, calc.exe.
Бидејќи веќе 2 години нема никаква закрпа од страна на произведителот, можете да замислите дали воопшто им е важна сигурноста на нивните апликации или пак довербата на нивните клиенти.