iOS_模糊测试_MobileSafari加载pdf

469 阅读2分钟

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