如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
https://www.v2ex.com/pro/about

如果你经常使用铜币置顶主题,持有 V2EX Solana Token 会在每日签到时获得额外铜币:
https://www.v2ex.com/solana
rockuw
V2EX  ›  推广

如果给你一个 shell,你可以干什么?

  •  
  •   rockuw · Aug 8, 2017 · 7019 views
    This topic created in 3378 days ago, the information mentioned may be changed or developed.

    使用函数计算和API 网关做了一个web shell: 随时随地打开一个 shell,用完即走。

    screenshot

    欢迎大家来玩,项目地址:

    architecture

    这个项目中我们用到了以下组件:

    1. 使用 nodejs 开发,通过 reactify 生成浏览器代码
    2. 根据用户输入的命令,把请求发送到 API 网关
    3. API 网关把请求发送到后端的函数计算,在函数中执行 shell 命令

    函数的代码也非常简单:

    'use strict';
    
    var exec = require('child_process');
    
    exports.handler = function(event, context, callback) {
      console.log('event: %s', event.toString());
    
      var evt = JSON.parse(event.toString());
      var cmd = evt['queryParameters']['cmd'];
      exec.exec(cmd, {}, function(err, stdout, stderr) {
        console.log(stdout, stderr);
    
        var body = '';
        if (err) {
          body = new Buffer(stderr).toString('base64');
        } else {
          body = new Buffer(stdout).toString('base64');
        }
    
        var resp = {
          statusCode: 200,
          isBase64Encoded: true,
          body: body,
        };
        callback(null, resp);
      });
    };
    

    欢迎大家来体验 serverless 构架的函数计算服务;
    也欢迎有兴趣的同学加入一起开发函数计算:

    33 replies  •  2017-08-09 16:57:48 +08:00
    lulinux
    lulinux
    Aug 8, 2017 via Android
    1
    这是什么字体这么漂亮?
    ynyounuo
    ynyounuo
    Aug 8, 2017
    2
    @lulinux Inconsolata,如果你喜欢这种细瘦字体也不妨看看 V 友的 Iosevka
    minamike
    minamike
    Aug 8, 2017
    3
    输入 rm -rf /*会怎样
    w88975
    w88975
    Aug 8, 2017
    4
    不支持 tap ctrl vi nano 等快捷键 编辑器也没法用 很鸡肋
    这种需求 直接用 Wetty 搭建一个就足够了
    rockuw
    rockuw
    OP
    Aug 8, 2017
    5
    @minamike 试一下 :)
    imnpc
    imnpc
    Aug 8, 2017
    6
    无 root 权限的...
    但是还是感觉有风险
    hzwjz
    hzwjz
    Aug 8, 2017
    7
    我可以这么干

    `rm -rf --no-preserve-root /`


    ```
    packages/mercurial/hgweb/hgweb_mod.pyc': Permission denied
    rm: cannot remove '/usr/lib/python2.7/dist-packages/mercurial/hgweb/__init__.pyc': Permission denied
    rm: cannot remove '/usr/lib/python2.7/dist-packages/mercurial/hgweb/wsgicgi.py': Permission denied
    rm: cannot remove '/usr/lib/python2.7/dist-packages/mercurial/context.pyc': Permission denied
    rm: cannot remove '/usr/lib/python2.7/dist-packages/mercurial/strutil.py': Permission denied
    rm: cannot remove '/usr/lib/python2.7/dist-packages/mercurial/unionrepo.py': Permission denied
    rm: cannot remove '/usr/lib/python2.7/dist-packages/mercurial/httppeer.pyc': Permission denied
    rm: cannot remove '/usr/lib/python2.7/dist-packages/mercurial/ancestor.pyc': Permission denied
    rm: cannot remove '/usr/lib/python2.7/dist-packages/mercurial/dagparser.pyc': Permission denied
    ```
    hzwjz
    hzwjz
    Aug 8, 2017
    8
    @minamike #3
    @rockuw #5
    亲自实验了一把
    timothyye
    timothyye
    Aug 8, 2017
    9
    @hzwjz sudo
    hzwjz
    hzwjz
    Aug 8, 2017
    10
    @timothyye #9 /bin/sh: 1: sudo: not found
    hellove1985
    hellove1985
    Aug 8, 2017
    11
    反馈 bug

    cat /tmp/test.txt

    TypeError: e.data.split is not a function
    hellove1985
    hellove1985
    Aug 8, 2017
    12
    echo 123 > /tmp/test.txt
    cat /tmp/test.txt

    TypeError: e.data.split is not a function
    rockuw
    rockuw
    OP
    Aug 8, 2017
    13
    @hellove1985 已修复
    ihainan
    ihainan
    Aug 8, 2017
    14
    快捷键用不了,不开心……
    binux
    binux
    Aug 8, 2017
    15
    `:(){ :|: & };:` 都运行不了好意思叫 shell ?
    hjc4869
    hjc4869
    Aug 8, 2017
    16
    当然是上 Fork bomb 了
    helica
    helica
    Aug 8, 2017 via iPhone
    17
    @binux 我虚拟机怎么卡死了…
    rockuw
    rockuw
    OP
    Aug 8, 2017
    18
    @hjc4869 防弹的
    hjc4869
    hjc4869
    Aug 8, 2017
    19
    @rockuw 没屏蔽掉网络访问,可以拿来做很多不好的事情,比如写个 while 循环拿来 DDoS
    rockuw
    rockuw
    OP
    Aug 8, 2017
    20
    @hjc4869 函数计算有一些限制项,能够有效地防止被拿来做 DDoS: https://help.aliyun.com/document_detail/51907.html

    默认情况下一个用户并发执行数是 100,即他最多有 100 个实例在跑。
    lslqtz
    lslqtz
    Aug 8, 2017
    21
    非常有趣,收藏了。
    nutting
    nutting
    Aug 8, 2017 via Android
    22
    我上次在这里分享了一个匿名聊天,一群尝试发送 js 代码的,各种破解的,看看楼主这个能撑多久?搞挂了免责不?
    araraloren
    araraloren
    Aug 9, 2017
    23
    我应该怎么回答?
    删库跑路。。还是撬动整个地球。。。
    mosliu
    mosliu
    Aug 9, 2017
    24
    rm -rf /
    qiuyk
    qiuyk
    Aug 9, 2017
    25
    第一个反应肯定是 rm -rf /的吧哈哈哈哈
    bintianbaihua
    bintianbaihua
    Aug 9, 2017
    26
    rm -rf
    NoAnyLove
    NoAnyLove
    Aug 9, 2017
    27
    喜欢 Fantasque Sans Mono 字体的用户路过
    rockuw
    rockuw
    OP
    Aug 9, 2017
    28
    @nutting 搞挂了给我发邮件,有阿里云代金券相送 :)
    rockuw
    rockuw
    OP
    Aug 9, 2017
    29
    @araraloren 参考答案是:撬动整个地球
    rockuw
    rockuw
    OP
    Aug 9, 2017
    31
    @xqin 我早上回复了一些 comments 啊
    O3YwA1ENkb7i35XJ
    O3YwA1ENkb7i35XJ
    Aug 9, 2017
    32
    @rockuw 刚看到了, 之前没收到 github 的提醒, 我又改了一些内容, 一并看看.
    你提的那些疑问, 我也已经回复了.
    rockuw
    rockuw
    OP
    Aug 9, 2017
    33
    @xqin updated. Thanks.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1620 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 02:12 · PVG 10:12 · LAX 18:12 · JFK 21:12
    ♥ Do have faith in what you're doing.