回味经典,踏入iot安全世界,DIR-815 多次溢出漏洞分析复现
发布网友
发布时间:2024-10-03 17:23
我来回答
共1个回答
热心网友
时间:2024-10-27 09:46
经典漏洞复现,探索IOT安全世界
在IOT安全领域,复现经典漏洞是入门与实践的重要步骤。本文将带您回顾一个经典漏洞,涉及Binwalk、firmware-mod-kit、FirmAE等工具的使用,以深入理解DIR-815路由器中的多次溢出漏洞。
要深入学习与实践,请访问固件下载地址:legacyfiles.us.dlink.com...
此漏洞源于COOKIE长度未限制,导致长度过长时引发栈溢出。我们提供exp和poc,值得注意的是,在本地环境,使用973偏移量调试无法连接,但不调试时可以成功连接。反之,使用1007偏移量,调试可以成功连接,不调试则无法连接。可能与仿真环境有关,欢迎尝试和探索。
首先安装Binwalk和firmware-mod-kit,按照以下步骤操作:
1. 安装依赖。
2. 进入github.com/mirror/firmw...查看详细使用方法。
接着安装FirmAE,进行固件仿真:
1. 进入FirmAE目录运行。
2. 使用命令尝试仿真,品牌选择d-link。
3. 成功仿真后,输入2进入shell,执行命令关闭随机化。
了解溢出漏洞,它允许攻击者控制内存,进而对路由器进行攻击和控制。通过精心编写的shellcode或ROPchain,攻击者可以利用栈溢出漏洞控制程序执行。
shellcode是一段用于执行特定操作的机器码,而ROPchain利用已存在的代码片段构建攻击代码,实现特定功能。要避免这类漏洞,确保输入数据不会超出预期范围,有效防止栈溢出。
HTTP协议由请求和响应组成。了解HTTP请求的各个部分,包括请求行、消息报头和请求正文,对于IOT安全至关重要。
HTTP请求的请求行包含请求方法、资源路径和协议版本。消息报头传递额外信息,如资源格式,请求正文包含请求主体内容。
使用Python库如request或http.client进行HTTP请求的编程。
分析漏洞时,定位到函数sess_get_uid,发现COOKIE数据组织为uid=payload。在FirmAE中停止仿真,重新启动。
仿真成功后,进入shell,查询HTTP服务进程号,启用gdb-server,使用宿主机脚本进行调试。
编写POC和EXP,定位漏洞点,构造payload,使用cyclic找到偏移,修改poc控制返回地址。成功控制pc后,利用telnetd服务获取宿主机shell。
了解MIPS寄存器作用,找到gadget,确保正确控制$sp、s0等寄存器。利用jalr指令绕过系统调用限制,构造exp成功执行system("telnetd")。
编写shellcode,使用网站转为字节码,构造socket、重定向流和execve调用,监听端口,反弹shell。
至此,通过复现经典漏洞,您已踏入IOT安全的世界。希望本文的指导帮助您深入理解漏洞复现过程,提升安全技能。
热心网友
时间:2024-10-27 09:40
经典漏洞复现,探索IOT安全世界
在IOT安全领域,复现经典漏洞是入门与实践的重要步骤。本文将带您回顾一个经典漏洞,涉及Binwalk、firmware-mod-kit、FirmAE等工具的使用,以深入理解DIR-815路由器中的多次溢出漏洞。
要深入学习与实践,请访问固件下载地址:legacyfiles.us.dlink.com...
此漏洞源于COOKIE长度未限制,导致长度过长时引发栈溢出。我们提供exp和poc,值得注意的是,在本地环境,使用973偏移量调试无法连接,但不调试时可以成功连接。反之,使用1007偏移量,调试可以成功连接,不调试则无法连接。可能与仿真环境有关,欢迎尝试和探索。
首先安装Binwalk和firmware-mod-kit,按照以下步骤操作:
1. 安装依赖。
2. 进入github.com/mirror/firmw...查看详细使用方法。
接着安装FirmAE,进行固件仿真:
1. 进入FirmAE目录运行。
2. 使用命令尝试仿真,品牌选择d-link。
3. 成功仿真后,输入2进入shell,执行命令关闭随机化。
了解溢出漏洞,它允许攻击者控制内存,进而对路由器进行攻击和控制。通过精心编写的shellcode或ROPchain,攻击者可以利用栈溢出漏洞控制程序执行。
shellcode是一段用于执行特定操作的机器码,而ROPchain利用已存在的代码片段构建攻击代码,实现特定功能。要避免这类漏洞,确保输入数据不会超出预期范围,有效防止栈溢出。
HTTP协议由请求和响应组成。了解HTTP请求的各个部分,包括请求行、消息报头和请求正文,对于IOT安全至关重要。
HTTP请求的请求行包含请求方法、资源路径和协议版本。消息报头传递额外信息,如资源格式,请求正文包含请求主体内容。
使用Python库如request或http.client进行HTTP请求的编程。
分析漏洞时,定位到函数sess_get_uid,发现COOKIE数据组织为uid=payload。在FirmAE中停止仿真,重新启动。
仿真成功后,进入shell,查询HTTP服务进程号,启用gdb-server,使用宿主机脚本进行调试。
编写POC和EXP,定位漏洞点,构造payload,使用cyclic找到偏移,修改poc控制返回地址。成功控制pc后,利用telnetd服务获取宿主机shell。
了解MIPS寄存器作用,找到gadget,确保正确控制$sp、s0等寄存器。利用jalr指令绕过系统调用限制,构造exp成功执行system("telnetd")。
编写shellcode,使用网站转为字节码,构造socket、重定向流和execve调用,监听端口,反弹shell。
至此,通过复现经典漏洞,您已踏入IOT安全的世界。希望本文的指导帮助您深入理解漏洞复现过程,提升安全技能。