复习一下基本知识
postgresql数据库操作
如果是安装好了postgresql
数据库就会新建一个postgreql
用户
sudo su - postgres
切换到postgresql
psql
就可以直接登陆
基本操作如下:
\l
列出所有的数据库\c
选择数据库\dt
列出所有表\d
描述表的信息
使用firmadyne
会将信息保存到postgresql
数据库中
ubuntu安装burp
然后java -jar .jar
就可以启动了
D-Link850L RCE分析
信息泄露
位于fatlady.php
文件中,很明显的看到了参数拼接的行为
构造恶意数据发送
1 | <postxml><module><service>../../../htdocs/webinc/getcfg/DEVICE.ACCOUNT.xml</service></module></postxml> |
可以看到其解析了但是并没有返回数据
尝试多次均失败,于是用默认密码直接登录上去
漏洞点:
1 | $server = query("/device/time/ntp/server"); |
这里直接把$server
变量拼接在了命令执行的代码中,存在命令注入
首先,获取DEVICE.TIME服务的xml文件格式
使用如下payload尝试
1 |
|
但是还是失败了
DIR-619L&605L 栈溢出漏洞
漏洞点在/bin/boa
程序处
通过ghidra
反编译代码可以看到:
formLanguageChange
函数
1 | if (pcVar2 != (char *)0x0) { |
websGetVar
函数获取到参数之火传入uVar3
变量,之后sprintf
函数将其写入到local_f8
中,再调用websRedirect
函数进行URL跳转
websGetVar
函数
1 | } |
继续分析websRedirect
函数
1 | undefined4 websRedirect(int iParm1,char *pcParm2) |
可以看到调用了send_r_moved_perm
函数
1 | req_write(iParm1,uVar1); |
在send_r_moved_perm
函数中两次调用了sprintf
函数分别向acStack224(sp+0x19f8-0xe0)和acStack480(sp+0x19f8-0x1e0)中输入字符。
通过第二两个sprintf修改返回地址,构造ROP链,导致程序控制流被劫持。(也可以通过两个sprintf的配合来实现栈的迁移,漏洞作者是这么实现的)
在mips虚拟机中尝试运行程序但是失败了,firmadyne
模拟固件也没成功
记录一下其实是文件损坏了所以qemu模拟不了
1 | ecutable, MIPS, MIPS-I version 1 (SYSV), dynamically linked (uses shared libs), corrupted section header size |
在我的WSL中使用最新的qemu是可以模拟的
1 | ➜ squashfs-root-0 sudo chroot . ./qemu ./bin/boa Initialize AP MIB failed! |
那看来需要更新一下qemu版本了
记录一下exp
1 | import requests |