Tenda-FH1201多处命令注入漏洞分析和复现
Tenda-FH1201多处命令注入漏洞分析和复现前言腾达(Tenda)是中国的一家网络设备制造商,专注于生产各种网络相关设备,包括路由器、交换机、无线适配器和网络摄像头等。腾达的 FH 系列路由器是其家庭和小型办公网络解决方案中的一种,主要特点是性价比高,易于设置和使用。
环境搭建固件下载enda官网提供固件下载[1]:
1固件版本: FH1201 Firmware V1.2.0.14
binwalk 解压固件:
1$ binwalk -Me US_FH1201V1.0BR_V1.2.0.14\(408\)_EN_TD.bin
查看 bin/busybox 得知是 32位mips架构(小端):
12$ file squashfs-root/bin/busybox squashfs-root/bin/busybox: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
FirmAE模拟参考的这 ...
GL-iNet 路由器 CVE-2024-39226 漏洞分析
GL-iNet 路由器 CVE-2024-39226 漏洞分析前言发现了一款以OpenWrt操作系统为基础的路由器漏洞,简单分析一下了解该系统该如何挖掘漏洞
8月5日网上披露了 [CVE-2024-399226](https://github.com/gl-inet/CVE-issues/blob/main/4.0.0/s2s interface shell injection.md) [1],影响多款 GL-iNet 路由器。
产品介绍GL.iNet 是一家专注于智能路由器和网络设备开发的科技公司。成立于 2009 年,总部位于中国,该公司的产品以 OpenWrt 操作系统为基础,提供高度的可定制性和灵活性。公司致力于为家庭、企业以及工业物联网环境提供可靠的网络解决方案。GL.iNet 的设备以其开源特性、强大的功能和优秀的用户体验而受到开发者、网络安全专家和高级用户的青睐。
OpenWrt 是一个基于 Linux 的开源嵌入式操作系统,专为网络设备(如路由器、网关和接入点)设计。与传统的路由器固件不同,OpenWrt 不是单一的、不可变的固件,而是一个完整且可扩展的操作系统,允许自 ...
启动路由器环境
启动路由器环境当你使用 QEMU 成功启动了路由器的模拟环境后,接下来你可能需要运行路由器上的关键服务或程序,通常这些程序包括:
网络相关服务:如 DHCP、DNS、NAT、iptables。
路由器的主进程:例如 hostapd、dnsmasq 或其他定制的网络服务进程。
系统初始化脚本:这些通常是由 /etc/init.d 或 /etc/rc.d 中的启动脚本来控制。
常见的路由器程序位置和启动方式1. 系统启动后自动执行大多数嵌入式系统(如路由器)在启动时会自动运行初始化脚本。你可以检查并修改这些脚本来启动路由器的主要功能。
初始化脚本路径:
/etc/init.d/
/etc/rc.d/
通常,初始化脚本会调用核心服务来启动路由器的功能。如果你想手动启动这些服务,可以直接执行这些脚本。例如:
1/etc/init.d/network start
2. 查找常见的路由器程序在模拟环境下,你可以手动启动路由器的程序。以下是一些常见的路由器程序及其路径:
BusyBox:大多数嵌入式 Linux 路由器使用 BusyBox 作为一个精简的工具包,它集成了许多常见的 Li ...
修复路由器程序运行环境+远程调试
修复路由器程序运行环境+远程调试前言当搭建好了QEMU环境后,就会想到运行路由器中的程序(如路由器中的web服务器),但可能会遇到路由器相关硬件模块缺失导致应用程序启动失败的情况
本文将以D-Link DIR-605L(FW_113)路由器中的web应用程序boa为例子。
修复路由器程序的执行流程大致如下。
运行程序,定位导致程序异常的函数
分析导致异常的函数,编写一个具有相同功能的函数,在函数中伪造执行流程和数据,并将编写的函数封装成一个新的动态库
使用LD_PRELOAD 环境变量加载新的动态库来劫持目标程序中的异常函数,使目标程序执行动态库中的函数
固件分析首先下载固件
使用binwalk提取固件中的文件系统,然后提取/bin/boa文件到桌面
1234iot@research:~/Desktop/DIR/DIR605/DIR-605L_FIRMWARE_1.13$ binwalk -Me dir605L_FW_113.bin iot@research:~/Desktop/DIR/DIR605/DIR-605L_FIRMWARE_1.13$ ls dir6 ...
ikuai路由器分析
ikuai路由器分析前言ikuai路由器主要分为企业版和免费版本
免费版本免费版本的固件可以在下面找到
https://www.ikuai8.com/component/download
免费版本需要解密固件才能用,解密方法我在前面博客是有写的
企业版本企业版本的固件需要自己手动提取才行
可利用思路/Action/call/Action/call路径下面虽然对输入进行了过滤,但是仍然存在可能执行的命令注入,可以研究一下
123456789local function __rest_check_illegality_char(s) if type(s) == "string" then return str_match(s, "['\"`$&;\\|\r\n ]") endend--------------------------------------------------------------------cmd = string.format("%s/usr/i ...
ikuai-3.7.10版本以下有授权的cmd执行复现
ikuai-3.7.10版本以下有授权的cmd执行复现前言经过测试该漏洞只出现在ikuai的3.7.10版本及其以下的固件中,在3.7.13中已经有了缓解措施,该漏洞因为是需要授权的,于是只能用于获取路由器权限来调试的一个办法,漏洞出现在ikrest.lua文件中
分析首先看看ikrest.lua文件,关注点主要在ngx_var_uri为/command/file的时候,发现程序会去直接执行我们POST传参的数据,简单分析会去找到#!开头的数据,也是就说其实这文件是留给系统执行一个shell文件的代码,如果ngx_var_uri不是/command/file的话会去用参数调用,这个和另一个/Action/call的代码是一样的,这里只分析这个文件
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283local ResCallBo ...
docker容器中的gdb返回ptrace Operation not permitted
docker容器中的gdb返回”ptrace: Operation not permitted.”原因原因是Ubuntu 16.04 的/etc/sysctl.d/10-ptrace.conf文件中最后一行默认
kernel.yama.ptrace_scope = 1这个值不允许用户使用普通账户使用attach ID连接程序进行调试,需要使用超级用户权限才能连接。
解决办法方法一可以把kernel.yama.ptrace_scope的值改为 0,即
sudo vim /etc/sysctl.d/10-ptrace.conf
将最后一行改为 kernel.yama.ptrace_scope = 0,保存退出。
重启系统后,普通用户就可以使用attach ID连接程序调试了。
方法二把特权标志连接到容器上
1docker exec --privileged -it mywebproxy_my-proxy_1 /bin/bash
方法三容器需要使用strace功能启动
将此文件添加到我的docker-compose.yml文件允许GDB工作 ...
反调试技术
反调试技术反调试技术是指程序用来阻止或干扰调试器对自身进行调试的一系列技术。这些技术可以使调试器难以设置断点、单步执行、观察变量等,从而增加逆向工程的难度。
以下是一些常见的反调试技术:
1. 基于调试器检测的:
IsDebuggerPresent():
这个API 函数用于检测当前进程是否被调试器附加。很多程序会通过调用这个函数来判断自身是否处于调试状态,并采取相应的反调试措施。
PEB (Process Environment Block) 调试标志:
PEB 结构中包含了一些用于表示进程状态的标志,其中就包括调试标志。程序可以通过读取PEB 来判断自身是否被调试。
NtGlobalFlag:
NtGlobalFlag 是一个系统变量,在调试模式下,它的某些特定位会被设置。程序可以通过检查 NtGlobalFlag 的值来检测是否处于调试状态。
HeapFlag 和 ForceFlags:
在调试模式下,HeapFlag 和 ForceFlags 也会被设置。程序可以检查这两个标志来判断是否被调试.
陷阱标志检查:
在调试器中,某些指令(如 INT 3)会导致异常, ...
WEBPWN-再探-安洵final
WEBPWN-再探-安洵final前言分析路由器分析的头大,做一道webpwn学习学习
2021年安询杯final也是给了一个docker环境
检查保护发现PIE没开启,GOT表可写
前置知识没啥前置知识需要学,看了WEBPWN初探基本上了解原理即可
调试环境dockerfile老规矩在dockerfile中添加gdb环境,但是因为这个文件比较大,于是我们再搞个gdbserver进去,这次用ida调试
12345678910111213# for debugRUN sed -i "s/http:\/\/archive.ubuntu.com/http:\/\/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list && \ apt-get update &&\ apt-get install -y net-tools vim openssh-server netcat curl gdb git COPY ./peda /root/pedaRUN echo " ...
WEBPWN-再探-ciscn2021final Message_Board
WEBPWN-再探-ciscn2021final Message_Board前言说是这个出的很好,又来分析一下webpwn,加深印象
前置知识前面一直没去详细了解http的协议栈,发现有师傅总结了,才想到去思考为什么webpwn要那么处理数据,这里我也简单总结到我的笔记里面去

格式大致如上,主要是第一行会存在请求方法和URL和协议版本,以空格分开,每一行末尾都会存在回车和换行符\r\n
如果只有回车和换行的话,就代表HTTP头结束了,后面跟着的就是请求数据或者没有
检查保护123456[*] '/home/iot/Desktop/httpd/httpd' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: ...