如果给你一个 shell,你可以干什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rockuw
V2EX    推广

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

  •  
  •   rockuw 2017 年 8 月 8 日 6374 次点击
    这是一个创建于 3097 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    `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
        8
    hzwjz  
       2017 年 8 月 8 日
    @minamike #3
    @rockuw #5
    亲自实验了一把
    timothyye
        9
    timothyye  
       2017 年 8 月 8 日
    @hzwjz sudo
    hzwjz
        10
    hzwjz  
       2017 年 8 月 8 日
    @timothyye #9 /bin/sh: 1: sudo: not found
    hellove1985
        11
    hellove1985  
       2017 年 8 月 8 日
    反馈 bug

    cat /tmp/test.txt

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

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

    默认情况下一个用户并发执行数是 100,即他最多有 100 个实例在跑。
    lslqtz
        21
    lslqtz  
       2017 年 8 月 8 日
    非常有趣,收藏了。
    nutting
        22
    nutting  
       2017 年 8 月 8 日 via Android
    我上次在这里分享了一个匿名聊天,一群尝试发送 js 代码的,各种破解的,看看楼主这个能撑多久?搞挂了免责不?
    araraloren
        23
    araraloren  
       2017 年 8 月 9 日
    我应该怎么回答?
    删库跑路。。还是撬动整个地球。。。
    mosliu
        24
    mosliu  
       2017 年 8 月 9 日
    rm -rf /
    qiuyk
        25
    qiuyk  
       2017 年 8 月 9 日
    第一个反应肯定是 rm -rf /的吧哈哈哈哈
    bintianbaihua
        26
    bintianbaihua  
       2017 年 8 月 9 日
    rm -rf
    NoAnyLove
        27
    NoAnyLove  
       2017 年 8 月 9 日
    喜欢 Fantasque Sans Mono 字体的用户路过
    rockuw
        28
    rockuw  
    OP
       2017 年 8 月 9 日
    @nutting 搞挂了给我发邮件,有阿里云代金券相送 :)
    rockuw
        29
    rockuw  
    OP
       2017 年 8 月 9 日
    @araraloren 参考答案是:撬动整个地球
    O3YwA1ENkb7i35XJ
        30
    O3YwA1ENkb7i35XJ  
       2017 年 8 月 9 日
    rockuw
        31
    rockuw  
    OP
       2017 年 8 月 9 日
    @xqin 我早上回复了一些 comments 啊
    O3YwA1ENkb7i35XJ
        32
    O3YwA1ENkb7i35XJ  
       2017 年 8 月 9 日
    @rockuw 刚看到了, 之前没收到 github 的提醒, 我又改了一些内容, 一并看看.
    你提的那些疑问, 我也已经回复了.
    rockuw
        33
    rockuw  
    OP
       2017 年 8 月 9 日
    @xqin updated. Thanks.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2031 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:51 PVG 12:51 LAX 20:51 JFK 23:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86