Hack Me Please: 1
来自 <https://www.vulnhub.com/entry/hack-me-please-1,731/>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.182,靶场IP192.168.23.195
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.195
HTTP (80/tcp)
- 网页标题: "Welcome to the land of pwnland"(可能为测试环境或CTF挑战)。
- 服务器信息: Apache 2.4.41(Ubuntu系统),需检查是否存在CVE-2021-41773等漏洞。
MySQL (3306/tcp)
- 版本: 8.0.25(Ubuntu定制版)。
- 认证插件: caching_sha2_password(MySQL 8默认插件,旧客户端可能不支持)。
- SSL支持: 已启用,证书为自签名(CN=MySQL_Server_8.0.25_Auto_Generated_Server_Certificate)。
- 潜在风险: 若允许远程访问,需确保强密码策略并限制IP访问。
33060/tcp
- 行为: 返回与MySQL X协议相关的错误消息(如Invalid message)。
- 建议: 进一步验证是否为MySQL X Plugin端口,或提交指纹至nmap数据库。
4,80端口存在的http服务,是一个比较精美的web网站页面
对网站子目录进行枚举扫描
dirsearch -u http://192.168.23.195 -x 404,403,500
只扫描出来了一些目录,那就对这些子目录进一步探测
dirsearch -u http://192.168.23.195/js -x 404,403,500
main.js可能暗示了这是网站代码的入口?不管了,访问看看
/seeddms51x/seeddms-5.1.22/ 是一个典型的Web路径,指向 SEEDDMS文档管理系统 的特定版本目录。以下是关键信息解析:
1. 软件背景
- 名称: SEEDDMS(前身为 LetoDMS)
- 类型: 开源文档管理系统(DMS)
- 用途: 用于企业文档存储、分类、检索和权限管理。
- 官网: https://www.seeddms.org
- 版本: 5.1.22(发布于2021年左右)
5,信息收集扩大了我们的攻击面,再来搜索这个软件版本公开的漏洞
searchsploit seeddms
可以看到存在远程命令执行漏洞,来阅读这个漏洞利用文本
searchsploit -m 47022.txt
漏洞概述
- 影响版本:SeedDMS < 5.1.11
- 漏洞类型:远程命令执行(RCE)通过 未验证文件上传
- CVE 编号:CVE-2019-12744
- 发现者:Nimit Jain
攻击步骤分析
Step 1: 登录并上传恶意文件
攻击者首先需要登录到 SeedDMS 应用程序,并在某个文件夹下添加一个文档。SeedDMS 允许用户上传各种类型的文件,而该版本存在上传文件格式未严格验证的问题。
Step 2: 上传一个 PHP 后门文件
攻击者可以上传一个PHP Webshell(后门),使其在服务器上被执行。示例 PHP 代码如下:
<?php |
为什么这个文件会被 SeedDMS 接受?
- SeedDMS 版本 < 5.1.11 没有严格限制文件类型,攻击者可以上传 PHP 文件。
- 上传的文件存储在 默认的目录(如 data/1048576/)下,并可以通过 URL 直接访问。
Step 3: 查找文档 ID
- 文件上传成功后,SeedDMS 会为其分配一个唯一的 document_id(文档 ID)。
- 这个 ID 可能会在上传后的界面显示,或者可以通过拦截上传请求(如 Burp Suite)来获取。
Step 4: 远程执行命令
一旦攻击者获取到上传文件的 URL,便可以远程执行系统命令。
例如,攻击者可以访问以下 URL 运行 cat /etc/passwd 命令:
http://example.com/data/1048576/{document_id}/1.php?cmd=cat+/etc/passwd
- {document_id} 是上传文件的 ID。
- cmd=cat+/etc/passwd 让服务器执行 cat /etc/passwd,以读取 Linux 用户信息。
漏洞根本原因
- 文件上传没有严格验证:
- SeedDMS 允许上传任意格式的文件,而没有检查扩展名或 MIME 类型。
- 服务器端也没有限制可执行文件的存储路径。
- 上传目录对外可访问:
- SeedDMS 将上传的文件存储在 data/1048576/ 目录下,并且可以通过 URL 直接访问。
- Web 服务器执行 PHP 文件:
- 由于 PHP 文件可以上传到公开访问的目录,并且服务器允许执行 .php 文件,因此可以造成 RCE。
6,接着再做信息收集,网站可能存在信息泄露的风险,枚举扫描http://192.168.23.195/seeddms51x下的子目录
dirsearch -u http://192.168.23.195/seeddms51x -x 404,403,500
有一个conf文件,应该是存放配置文件的目录
dirsearch -u http://192.168.23.195/seeddms51x/conf -x 404,403,500
访问 http://192.168.23.195/seeddms51x/conf/settings.xml
得到了这个seeddms的数据库账户密码
7,尝试远程登录靶场的数据库
命令行登录失败,尝试Navicat Premium登录
查看seeddms数据库的users数据表,还有tblUsers数据表
admin用户是被MD5值强加密的,只能将123456计算为MD5值替换之e10adc3949ba59abbe56e057f20f883e
然后就能成功登录seeddms网站了
8,发现在添加文档的位置可以上传文档,那就上传反弹shell文件,使用kali自带的
/usr/share/webshells/php/php-reverse-shell.php
注意修改文件使其能够使用
然后访问 http://192.168.23.195/seeddms51x/data/1048576/6/1.php 与此同时kali需要打开对4444端口的监听
9,然后使用python脚本提升一下可交互shell,发现靶场存在一个普通用户saket
python3 -c 'import pty;pty.spawn("/bin/bash")'
然后根据数据库里面找到的用户,进行横向移动。靶场没有开放ssh服务,那就直接su切换用户
saket|Saket@#$1337
10,然后sudo -l查看一下提权
发现所有命令都允许免密sudo运行,直接sudo成root。提权成功