cve - 2019 - 5390:未经身份验证的远程命令dbman注入
dbman过程(iMC)的一个组成部分,定义了命令10018 (hostRoleSwitch),这是用于设置配置变量PrimaryHost BackupTime吗?,BackHoseIp dbman.conf。未经过身份验证的攻击者可以使用这个命令注入其他dbman。设计变量,这些变量添加到请求BackHoseIp值中指定的命令。例如,攻击者可以指定BackHoseIp 127.0.0.1 \ nPrimaryDbSaUserName1 = foo”- f &记事本。exe &“注入一个畸形的数据库用户名。如果变量在dbman出现不止一次。配置,将使用第一个实例。自从BackHoseIp变量出现在dbman相对较早。配置(语言和EnableDbman变量)后的第三个变量,注入的变量将覆盖任何现有变量语言和EnableDbman除外)。
攻击者然后发出命令10000 (SendBakConfigFileReq)重新加载dbman。conf注入配置变量。最终攻击者发出命令10002年(ManualBackupDBase)。作为备份过程的一部分,dbman试图访问数据库使用DB配置在dbman.conf中的凭据。因为攻击者注入一个命令(notepad.exe)在PrimaryDbSaUserName1, dbman问题的cmd。exe / c osql - b - s 1433 -dmaster - u“foo”- f和记事本。exe & " " - p - n - o”C: \ Program Files \ iMC \ dbman \ bin \ dbop.sql。日志”我“C: \ Program Files \ iMC \ dbman \ bin \ dbop。sql”,导致记事本。exe执行。注意,上述场景适用于当iMC是安装在Windows作为后端数据库服务器状态"置疑"。假设是合理的利用仍工作(在配置变量注入一些调整等)对于其他iMC的部署,dbman调用系统()函数在runCommand()函数。
cve - 2019 - 5391:未经身份验证的远程dbman堆栈缓冲区溢出
一个未经身份验证的远程攻击者发出一个命令长10018 (hostRoleSwitch) BackHoseIp领域,导致被写入dbman.conf BackHoseIp配置变量。每个配置行(变量名和值)仅限于0 x400字节(包括终止NULL字符):
(剪断…]。text: 00444726推400 h。text: 0044472 b lea连成一片,[ebp + var_sb400_line]。text: 00444731推连成一片。text: 00444732 lea连成一片,[ebp + var_fstream]。text: 00444738叫ds: ? getline@ ? basic_istream@DU美元?char_traits@D@std@@@std@@QAEAAV12@PADH@Z美元;std:: basic_istream < char, std:: char_traits < char > >:: getline (char *, int)。text: 0044473 e mov [ebp + var_55C], eax。text: 00444744 mov edx, [ebp + var_55C]。text: 0044474 mov eax, [edx]。text: 0044474 c mov连成一片,[ebp + var_55C]。text: 00444752添加连成一片,[eax + 4]。text: 00444755 ds: ? ?Bios_base@std@@QBEPAXXZ;std:: ios_base:运营商void * (void)。text: 0044475 b测试eax, eax。text: 0044475 d生理no_more_lines(剪…)
攻击者然后发出命令10000 (SendBakConfigFileReq)重新加载dbman。conf长BackHoseIp变量。在dbman。(如配置重载,长BackHoseIp价值。,0 x3f2字节)复制到一个固定大小的线程堆栈缓冲区的0 x12c字节:
(剪断…]。text: 00444 da7 mov edx, [ebp + var_psCfgItemValue]。text: 00444 daa edx推;源。text: 00444民建联mov eax, [ebp + arg_pOutbuf];stack-buf 0 x12c字节。text: 00444 dae eax推;Dest。text: 00444 daf调用拷贝字符串(剪…)
这可能会导致一个堆栈缓冲区溢出:
0:008 > g STATUS_STACK_BUFFER_OVERRUN遇到(3 e24.3c34):打破指令异常,代码80000003(第一次)* * *错误:文件无法找到象征。违约为C:\Program Files\iMC\dbman\bin\dbman.导出符号exe - eax = 00000000 ebx = 00000000连成一片= 0165 efcc edx = 0165 ee91 esi = 00000000 edi = 004 ca160 eip = 7431 a4cf esp = 0165 eff8 ebp = 0165 f084 iopl = 0 nv了ei pl新西兰na阿宝数控c = 001 b党卫军= 0023 d = 0023 es = 0023 fs = 003 b g = 0000英语= 00000202 KERNELBASE !UnhandledExceptionFilter + 0 x3d0af: 7431 a4cf cc int 3 0:001 > kb # ChildEBP RetAddr Args儿童004 00 0165 f084 004 a87b3 ca160 0 ebde030 f1421fcf KERNELBASE !UnhandledExceptionFilter + 0 x3d0af警告:堆栈解除信息不可用。后帧可能是错误的。0044年01 0165 f3b8 dedb 0165 f64c 0165 f64c 0165 f668 dbman !std:: _Init_locks::操作符= + 0 xccb fd38 02 0165 41414141 41414141 41414141 41414141 dbman + 0 x4dedb 03 0165 fd3c 41414141 41414141 41414141 41414141 0 x41414141 04 0165 fd40 41414141 41414141 41414141 41414141 0 x41414141 05 0165 fd44 41414141 41414141 41414141 41414141 0 x41414141 06 0165 fd48 41414141 41414141 41414141 41414141 0 x41414141[剪断…]a8 0165 ffd0 41414141 41414141 41414141 41414141 0 x41414141 a9 ffd4 0165 41414141 41414141 41414141 0 ff004141 x41414141 aa 0165 ffd8 41414141 41414141 ff004141 776662 d7 0 x41414141 ab 0165 ffdc 41414141 ff004141 776662 d7 00000000 0 x41414141 ac 0165 ffe0 ff004141 776662 d7 00000000 776662 0 x41414141公元0165年ffe4 776662 d7 00000000 776662 69 0 xff004141 ae 0165 e4345e ffe8 69 00000000 00000000 e4345e 00 f6ef40 ntdll ! FinalExceptionHandlerPad7
和!可采WinDbg扩展命令显示了利用:
0:001 >,可利用的!可采1.6.0.0可利用性分类:利用推荐错误标题:可采-异常处理程序链损坏KERNELBASE开始!UnhandledExceptionFilter + 0 x000000000003d0af(散列= 0 xdaf335ab.0x3924b8ee)异常处理程序链的腐败被认为是可利用的