iOS系统下的浏览器MobileSafari,当前对MobileSafari做模糊测试,让浏览器加载畸形的pdf文件,测试MobileSafari是否会崩溃,如果发生崩溃则把崩溃日志写入文件。
1、iOS设备越狱并安装sbutils
(1)设备越狱,可使用”爱思助手“或者”PP助手“,一键越狱很方便
(2) sbutils 中包含 sbopenurl 工具,该程序可以直接对作为命令行参数传入的 URL 调用SpringBoardService 专有框架中的 SBSOpenSensitiveURLAndUnlock API,启动 MobileSafari 并访问指定的url。
Cydia 的 Bigboss 源中的 sbutils 是老版本,只支持 armv6 架构,因此弃用。
可用版本下载见文末。下载内容是一个deb文件,安装到手机。
2、crash.sh 脚本文件
当前的 crash.sh 文件时可运行与iOS中的:
# ! /bin/bash
url=$1
sleeptime=$2
filename=/private/var/mobile/Library/Logs/CrashReporter/LatestCrash-MobileSafari.plist
rm $filename 2> /dev/null
echo Going to do $url
/usr/bin/sbopenurl $url
sleep $sleeptime
cat $filename 2>/dev/null
/usr/bin/killall -9 MobileSafari 2>/dev/null
如果crash.sh中的路径有误,可自行修改。
这个脚本的作用是调用 /usr/bin/sbopenurl 让 MobileSafari 加载指定的 url
把这个 crash.sh 文件复制到越狱手机的 /var/mobile/Documents 目录下,方便后续使用。你也可以放到自己熟悉的其他目录下。
3、使用flask框架在电脑端搭建一个简易服务器
你可以把 畸形的pdf文件放到这个本地服务器中,并提供局域网访问。
教程:等我写一个
4、开始模糊测试
(1)启动电脑上的 flask 服务器,提供 pdf 文件的访问能力。
(2)手机通过usb连接电脑,打开 MacOS 电脑终端
使用iproxy映射端口:
iproxy 2222 22
使用 ssh 连接到手机:
ssh root@localhost -p 2222
(3)ssh连接成功后,终端进入 /var/mobile/Documents 路径下,也就是 crash.sh 文件所在路径。此时终端运行命令:
./crash.sh http://192.168.31.172/static/test_1.pdf 4
命令中的 ./crash.sh 是调用crash.sh脚本
命令中的 http://192.168.31.172/static/test_1.pdf 是我的 flask 提供的静态pdf文件的请求地址,其中 192.168.31.172 是我电脑局域网的 ip 地址,/static/test_1.pdf 是pdf文件路径。
命令中的 4 是间隔4秒后杀死MobileSafari进程。
MobileSafari就被启动并访问到pdf文件,要达到模糊测试找到崩溃,必须批量执行这个操作,当出现崩溃后可查看崩溃日志做进一步分析。
sbutils下载地址:
链接: https://pan.baidu.com/s/1Nd92DixALSbpJ1HubEmSEw 密码: tq6a