IoT-vulnhub:vivotek

之前一直在为IOT设备调试环境而烦恼,总是因为环境启动不起来导致放弃调试,也是偶然间在github上发现了这个IoT-vulnhub项目,这是个基于dockers搭好的环境,里面已经将环境布置好了,直接docker build一下就能用,但由于dockerhub的原因,把博主之前搭好的环境都从hub上删掉了,但还好dockerfile都有直接本地build不从dockerhub上pull就行,整个步骤稍微和博主之前说的有些不同,首先得基于ubuntu16.04构建一个基础镜像,其他的镜像像binwalk、qemu、firmdyne都是基于这个镜像做的一个升级,所以直接改dockerfile的文件头部名称from 接上你构建的ubuntu16.04的容器名称就行,然后如果觉得有些配置需要装上的,也可以直接在dockerfile里面修改,我就稍微改了下qemu-system的dockerfile安装了一个pwndbg。

后面就如漏洞调试环节了,这是一个摄像头的缓冲区溢出漏洞,是一个2017的漏洞,网上到处都是解析,所以我就不详细分析了,大概讲一下,主要还是讲述怎么依据这个平台调试这个漏洞。按照博主的介绍要通过qemu-system调试这个漏洞按照下面三条命令就能顺利进入你的环境了

1
2
3
docker-compose -f docker-compose-system.yml build
docker-compose -f docker-compose-system.yml up
docker exec -it vivotek-system /bin/bash

这个环境的优势在于利用docker的优势不需要在网络配置上下很多的功夫,你的测试机是能和你的物理机相通并且开放了ssh连接,你的靶机也是和你的测试机处在一个内网段上,通过ssh也能连接上,传输什么的就很方便,进入到测试机上可以看见什么pwntools还有gdb什么的都有,就是一个能做pwn题的ubuntu16的虚拟机,通过scp命令将gdbserver传递到靶机,开放端口附加到httpd的进程就行

1
./arm-gdbserver :port --attach PID

然后测试机上用gdb-multiarch squashfs-root/usr/sbin/httpd -q启动调试,进入到pwndbg下还有输入下面两条命令

1
2
set sysroot 固件的目录 /用于加载符号表
target remote ip:port

这样就已经附加上靶机上的进程了,这时候通过tools目录下给的poc.sh进行测试。

image-20201104230229346

image-20201104231320489

可以看到此时的PC为构造好的输入XXXX,说明成功触发了漏洞,再看下libc的地址。

image-20201104232522359

和exp的一样,后续的话就在尝试用exp拿shell了,但在这之前由于poc.sh导致httpd服务宕机,所以还需要在靶机上重启该服务,命令为

1
2
chroot squashfs-root/ sh
/usr/sbin/httpd

由于测试机上装的是python3的pwntools,由于python3对字节流和字符串有着明显的划分,所以脚本会报错,所以得将里面的字符串用bytes(str,encoding=’utf-8’)做一个转换,然后将payload输出到一个exp.sh的shell文件,按道理来说直接执行这个shell就能达到目的了,但还是因为python3对字节流和字符串的处理导致最后的payload的格式是b’str’把b、’‘这些标识符也读进去了,因此还得用python2的pwntools直接物理机执行exp.py生成exp.sh就能成功获取shell了。

image-20201105143443954

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2020-2022 llx-moon
  • Visitors: | Views:

请我喝杯咖啡吧~