导语:本文介绍了如何在受限制的shell中执行任意命令,实现交互。其相应的利用场景是说当我们通过一些手段拿到当前Linux机器的shell时,由于当前shell的限制,很多命令不能执行,导致后续的渗透无法进行,在这篇文章中,就介绍了一些常见的绕过方法,同时在文章末尾提供了一个线上的练习环境。

0x01 前言

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

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)

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命令检查环境变量
通过以上操作,我们已收集到一些游泳的信息,接下来尝试一下通用的利用方法。

0x04 通用利用技巧

1、如果"/"命令可用的话,运行/bin/sh或者/bin/bash
2、运行cp命令,将/bin/sh或者/bin/bash复制到当前目录
3、在ftp中运行!/bin/sh或者!/bin/bash,如下图所示

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几种方法暂未在本地复现。

渗透技巧——如何逃逸Linux的受限制shell执行任意命令的更多相关文章

  1. Linux下的crontab定时执行任务命令详解

    在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为“cr ...

  2. (二)Linux下的crontab定时执行任务命令详解

    在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为&qu ...

  3. Linux下的at定时执行任务命令详解

    之前说了使用crontab实现定时执行任务,假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了.一.at服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下 ...

  4. Linux下的crontab定时执行任务命令

    0x00 简介 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的 ...

  5. Linux下的crontab定时执行任务命令详解(参考:https://www.cnblogs.com/longjshz/p/5779215.html)

    在Linux中,周期执行的任务一般由cron这个守护进程来处理[ps -ef | grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行以及调用时间. cron的配置文件成为 ...

  6. linux shell 执行远程命令

    我在本地的shell脚本中,想要直接执行远程服务器的一个shell脚本: ssh -l root 192.168.1.1 "/data/t.sh" 记得提前给远程服务器的 /dat ...

  7. linux笔记-多服务器同时执行相同命令

    1.服务器的ip地址写到文件中,命名为nodelist.txt 192.168.1.160 192.168.1.166 2.编写运行脚本 for i in `cat nodelist.txt`do s ...

  8. 〖Linux〗bash和expect执行ssh命令行sshcmd.exp

    #!/usr/bin/expect -f # sudo apt-get install expect # ./ssh.exp user passwd server set user [lrange $ ...

  9. Linux:普通用户不能执行ifconfig命令问题

    有客户现场服务器禁用了root帐号,在普通帐号下,执行ifconfig,提示bash:ifconfig command not found: 导致业务系统无法用普通帐号获取ifcnofig的MAC地址 ...

随机推荐

  1. 【Python】中国有哪些同名的省市县?

    这道题适合写个脚本来解. 首先从百度地图API下载一份行政区划数据. 开发资源 | 百度地图API SDK 然后做一个简单的数据统计就可以啦~ 行政区划同一级同名的: import pandas as ...

  2. Docker数据目录迁移解决方案

    场景 在docker的使用中随着下载镜像越来越多,构建镜像.运行容器越来越多, 数据目录必然会逐渐增大:当所有docker镜像.容器对磁盘的使用达到上限时,就需要对数据目录进行迁移. 如何避免: 1. ...

  3. JVM重新认识(一)oop-klass模型--HSDB使用验证

    一:oop-kclass模型 思考:我们平时写的java类编译成.class文件,JVM加载.class文件,那么加载.class文件之后在JVM中就是oop-kclass(C++)模型形式存在的. ...

  4. 使用Jmeter对SHA1加密接口进行性能测试

    性能测试过程中,有时候会遇到需要对信息头进行加密鉴权,下面我就来介绍如何针对SHA1加密鉴权开发性能测试脚本1.首先了解原理,就是需要对如下三个参数进行SHA1加密,(AppSecret + Nonc ...

  5. 一键配置 github 可用的 hosts

    最近发现访问 Github 各种不畅通, 静态资源经常加载不出来. 写了一个一键脚本修改本机 /etc/hosts 文件, 切换到可用的 IP (数据来自 https://gitee.com/xuew ...

  6. 回归测试_百度百科 https://baike.baidu.com/item/%E5%9B%9E%E5%BD%92%E6%B5%8B%E8%AF%95

    回归测试_百度百科https://baike.baidu.com/item/%E5%9B%9E%E5%BD%92%E6%B5%8B%E8%AF%95

  7. pull push 监控指标

    Prometheus 原理介绍 - 知乎 https://zhuanlan.zhihu.com/p/70090800 Prometheus由Go语言编写而成,采用Pull方式获取监控信息,并提供了多维 ...

  8. (009)每日SQL学习:Oracle各个键说明(转)

    原文地址:http://www.agiledata.org/essays/keys.html 本文概述关系数据库中为表指定主键的策略.主要关注于何时使用自然键或者代理键的问题.有些人会告诉你应该总是使 ...

  9. Routine Subroutine Coroutine 子程序 协程 子例程

    https://en.wikipedia.org/wiki/Subroutine In computer programming, a subroutine is a sequence of prog ...

  10. Zookeeper C API的学习 以及样例 很赞

    https://www.cnblogs.com/haippy/archive/2013/02/21/2920280.html