IOT环境搭建
一、固件处理
1.获取
要么提取,要么从官网下载
2.解包
一般常用binwalk
,有时候可能涉及加密、获取组件相关问题
参考:D-Link DIR-815 路由器多次溢出漏洞分析 | Lantern’s 小站
二、环境搭建
1.简单启动
IOT
相关的基本都是涉及嵌入式,不同架构,常见有arm、mips
等,以mips
为例子
参考:[原创] 从零开始复现 DIR-815 栈溢出漏洞-二进制漏洞-看雪论坛-安全社区|安全招聘|bbs.pediy.com
一般用qemu
加上对应架构的**linux
内核和文件系统**来启动,比如如下脚本
1 | qemu-system-mipsel \ |
就可以启动一个系统
2.网络配置
最好的肯定是模拟真实的环境,那模拟真实环境肯定就需要涉及到相关网络问题,这里就需要用到qemu
一些网络的配置,参考:(46条消息) Linux 内核调试 七:qemu网络配置_lqonlylove的博客-CSDN博客_qemu 网络配置
结合一下,大概如下
宿主机新建
tap
网络1
2
3sudo ip tuntap add dev tap0 mode tap
sudo ip link set dev tap0 up
sudo ip address add dev tap0 192.168.2.128/24这样就会出现如下网络后端
然后如下启动脚本,加入网络配置
1
2
3
4
5
6
7
qemu-system-mipsel \
-M malta -kernel vmlinux-3.2.0-4-4kc-malta \
-hda debian_squeeze_mipsel_standard.qcow2 \
-append "root=/dev/sda1 console=tty0" \
-net nic -net tap,ifname=tap0,script=no,downscript=no \
-nographic启动之后,在
qemu
中设置相关IP
地址,然后启用1
2ip addr add 192.168.2.129/24 dev eth0
ip link set eth0 up这样就可以有
IP
地址了,当然这些IP
地址都是自己设置的这样就宿主机和
qemu
虚拟机就可以连通了,之后就是相关的服务启动了
3.常见配置
很多的IOT
都是squashfs
这个文件系统,binwalk
解包出来会有一个squashfs-root
文件夹,然后我们可以将该文件系统通过scp
拷贝进启动的qemu
虚拟机,之后进行简单的设置即可
1 | scp -r ./squashfs-root root@ip:/root/ |
三、CGI配置
很多时候的嵌入式Web
页面都是用CGI
的,所以可以稍微学习一下相关CGI
。
1.环境搭建
这里就选择ubuntu
自带的mini-httpd
服务
1 | sudo apt install mini-httpd |
然后相关的配置在/etc/mini-httpd.conf
,主要关注如下
相关端口也是设置好
然后需要在数据目录,即/var/www/html
下新建cgi-bin
目录,然后把相关CGI
程序放到该cgi-bin
目录下即可。
2.启动服务
如下,设置一下启动配置文件即可运行了
1 | sudo mini_httpd -C /etc/mini-httpd.conf |
然后即可访问到默认界面
3.编写CGI
CGI
和正常C
程序是一样的,直接编译之后放到对应cgi-bin
目录下即可,比如如下程序
编译如下
1 | gcc ./test.c -static -o test.cgi |
访问效果如下
这里需要注意要直接printf
显示出来的话,需要设置相关的html
格式,这里即可先进行了
1 | printf( "Content-Type: text/plain\r\n\r\n" ); |
之后即可自己写一些CGI
来玩耍了。
感觉CGI
的很多的不安全性就是在于直接运行了一个可执行程序,而该可执行程序大多都是用C
语言编写的,安全性可想而知。