黑盒渗透DC-1报告总结

一、渗透设备

kali、vsphere(两台网络连接都为NAT模式,两台在同一个网段中)

二、任务描述

黑盒渗透:在渗透拿到授权之后,什么信息都没有,需要找出风险点;

何为渗透,在定义好目标之后,朝着目标前进,中间碰到阻碍要么攻击掉要么绕过(详尽的信息收集(打点、踩点))

三、步骤

1)扫描

1、nmap -sP

探测指定网络中有哪些主机在线(存活),它通过发送ARP请求或ICMP Echo请求来快速判断一个IP地址是否有活跃的设备。

2、nmap -sS

nmap -sS 执行的是 TCP SYN 扫描,通常被称为 “半开放扫描” 或 “ stealth scan”(隐秘扫描) 。它主要用于快速、相对隐蔽地探测目标主机上哪些TCP端口是开放的。

工作原理(核心)

-sS 扫描的巧妙之处在于,它不会完成三次握手:

  1. Nmap(客户端)向目标服务器的指定端口发送一个 SYN 包。

  2. 如果目标端口开放,目标服务器会回复一个 SYN/ACK 包。

  3. Nmap收到 SYN/ACK 后,不会发送 ACK 包来确认,而是直接发送一个 RST 包来重置连接

为什么这样做?
  • 速度更快: 只完成握手过程的一半,节省了数据包往返的时间。

  • 更加隐蔽: 因为连接从未完全建立,许多简单的应用程序日志不会记录这种连接尝试(尽管专业的防火墙和IDS/IPS系统仍然可以检测到)。它不会像全连接扫描(-sT)那样在目标服务上产生完整的连接日志,因此得名“隐秘扫描”。

3、nmap -A

nmap -A 执行的是 “激进扫描” 或 “全面侦察扫描” 。它不仅仅扫描端口,还会综合多种技术来识别操作系统、服务版本、脚本扫描,甚至尝试进行 traceroute,旨在一次性获取关于目标的最全面信息。

它包含了什么?
1、操作系统检测 (-O)
  • 作用: 探测目标主机的操作系统类型和版本(如 Windows 10、Linux Kernel 5.4、Ubuntu 20.04 等)。
  • 原理: 通过分析目标对一系列精心设计的TCP、UDP和ICMP探测包的响应特征(如TCP/IP协议栈指纹),与Nmap内置的数据库进行比对,从而得出判断。

2、版本检测 (-sV)
  • 作用: 不仅告诉你端口是开放的,还告诉你端口上运行的是什么软件及其具体版本号(如 OpenSSH 8.4p1Apache httpd 2.4.41Microsoft IIS 10.0)。

  • 原理: 与端口上的服务进行真正的通信,分析其响应标语(Banner)和行为特征。例如,向80端口发送一个HTTP请求,分析返回的Server头字段。

3、脚本扫描 (-sC)
  • 作用: 使用Nmap脚本引擎(NSE)运行一系列默认的脚本。这些脚本可以完成各种任务,如:

    • 发现: 查找网络共享、SNMP信息等。

    • 漏洞: 检测已知的常见漏洞。

    • 安全检查: 检查简单的配置错误(如匿名FTP登录)。

  • 原理: 在版本检测的基础上,用专门的Lua脚本与服务进行更深入的交互,提取有价值的信息。

4、Traceroute (--traceroute)
  • 作用: 显示从你的主机到目标主机之间的网络路径(经过哪些路由器)。

  • 原理: 通过设置数据包的TTL(生存时间)字段,追踪数据包到达目标所经过的每一跳。

简单来说:-A ≈ -O -sV -sC --traceroute

注意: 由于 -A 包含了操作系统检测 (-O),而 -O 需要原始套接字权限,因此通常需要使用 sudo

2)攻击

msfconsole

它是什么?
  • Metasploit Framework (MSF): 一个开源的、强大的渗透测试和安全审计平台,由Rapid7公司维护。它提供了大量现成的漏洞利用代码、辅助工具和 payloads。

  • msfconsole: 是访问和控制这个框架的核心命令行界面。它提供了一个统一的、功能丰富的环境,让用户能够高效地使用Metasploit的所有功能。

核心功能与工作原理

msfconsole 的核心是模块化的。它包含了不同类型的模块,你可以像搭积木一样组合它们来完成一次完整的渗透测试。

领域说明
渗透测试主要用途。安全专业人员模拟黑客攻击,评估系统安全性。
漏洞研究与验证安全研究员用它来验证新发现的漏洞(PoC)。
安全教学在可控环境中教授网络安全和 Ethical Hacking 的核心概念。
红色团队演练作为红队工具包的一部分,进行更复杂的模拟攻击。

重要警告
msfconsole 是一个专业的网络安全工具,绝非给“脚本小子”用来进行非法活动的玩具。未经授权使用 Metasploit 对任何系统进行扫描或攻击都是违法的犯罪行为。务必仅在你自己拥有或已获得明确书面授权的环境中使用它。

进入msf6
1)search Drupal

在 Metasploit 庞大的模块库中,快速搜索所有与XXXXX内容管理系统相关的漏洞利用、辅助扫描和后渗透模块,帮助你发现和利用目标系统的已知弱点。

执行完这步操作会出现一个表格化的结果

如何阅读这个表格:

  • Name: 模块的完整路径和名称。auxiliary/ 是辅助模块,exploit/ 是漏洞利用模块,post/ 是后渗透模块。

  • Disclosure Date: 漏洞被公开的日期。日期越近,目标系统可能还未打补丁。

  • Rank: 模块的可靠性评级。excellent 通常意味着高稳定性和高成功率。

  • Check: Yes 表示该模块支持安全检查功能,可以在真正攻击前先验证目标是否存在此漏洞,避免“盲打”和不必要的日志记录。

  • Description: 模块的简短描述,说明了它利用的是什么漏洞或执行什么功能

2)use 1

快速选择并加载当前搜索结果列表中的第X个模块,以便后续进行配置和利用。

    show options(它通常在 use 了一个模块之后立即执行)

show options 的作用是:显示当前已加载模块的所有可配置参数及其当前状态,告诉你需要设置哪些信息才能让这个模块正常工作。

  • Name: 参数的名称。

  • Current Setting: 该参数的当前值。如果为空(如 RHOSTSLHOST),说明你必须手动设置它

  • Required: 该参数是否是必须的yes 表示必须设置,no 表示可选。

  • Description: 参数的简要描述。

3)set RHOSTS 192.168.X.X
      show options
4)run

run 的作用是:执行当前已经配置好的模块。根据模块类型的不同,它可能是发起一次攻击(Exploit),运行一次扫描(Auxiliary),或是执行一个后渗透动作(Post)。

3)权限提升

1、初始 Meterpreter 操作

输入以下命令获取基础 shell:

shell

作用:从Meterpreter会话中启动一个非交互式的、极其简单的命令行Shell

2、升级为完整功能 shell

执行 Python 命令生成交互式终端:

python -c 'import pty;pty.spawn("/bin/bash")'
  • 作用:利用Python生成一个交互式的TTY Shell,大幅改善用户体验和功能。

  • 命令分解

    • python -c:告诉Python解释器执行后面单引号内的字符串代码。

    • import pty:导入Python的pty(伪终端)模块。这个模块可以用来启动一个虚拟的终端。

    • pty.spawn("/bin/bash"):使用pty模块生成一个新的/bin/bash进程。这个新的Bash进程会认为自己是在一个真实的终端中运行的,因此它会启用所有交互式功能,例如命令历史、作业控制、行编辑(Tab补全)等。

成功执行后提示符将显示为类似 www-data@DC-1:/var/www$ 的格式。

3、提权信息收集

查找具有 SUID 权限的可执行文件:

find / -perm -4000 2>/dev/null
  • 作用:在整个文件系统中搜索所有设置了SUID权限位的可执行文件。这是Linux/Unix系统中一种常见的提权方法。

  • 命令分解

    • find /:从根目录开始搜索整个文件系统。

    • -perm -4000:查找权限模式包含-表示包含)八进制数4000的文件。4000正是SUID权限位的标志。

    • 2>/dev/null:将命令执行过程中的所有错误信息(标准错误流,文件描述符为2)重定向到Linux的“垃圾箱”/dev/null。这样做是为了屏蔽大量“Permission denied”等错误提示,使输出结果更清晰,只显示我们有权限查看的文件。

该命令会列出所有具备 SUID 权限的程序路径。渗透测试者需要在这些结果中寻找那些不常见、版本较老或有已知漏洞的程序,作为下一步攻击的目标。

4、尝试利用 find 命令本身提权

     cd /tmp(这是一个所有用户都有读写权限的临时目录,是进行此类测试的常见位置。)
     mkdir 123
     find 123 -exec '/bin/sh' \; 
  • find 123 -exec '/bin/sh' \;

    • find 123:在当前目录(/tmp)下查找名为123的文件或目录。它肯定会找到我们刚创建的那个。

    • -exec ... \;find命令的参数,表示对找到的每一个结果,执行...指定的命令。\;是结束符。

    • '/bin/sh':要执行的命令。这里我们让它执行/bin/sh,即启动一个Shell。

4)继续寻找其他的 flag

如图所示,命令提示符已经从 www-data@DC-1:/tmp$ 变成了简单的 #。在 Linux 中,# 就是 root 用户的特权提示符。权限已从普通的 www-data 用户提升到了 root 用户。

敏感信息收集,特别是寻找Web应用程序的配置文件和其他可能包含敏感数据(如flag、数据库密码)的文件。

1)cd /var/www
  • 详细讲解

    • 在标准的LAMP(Linux, Apache, MySQL, PHP)或LEMP(Linux, Nginx, MySQL, PHP)环境中,/var/www/ 是Apache或Nginx服务器默认的网站根目录

    • 所有通过Web浏览器访问的网站文件(如HTML、PHP、图片、CSS等)通常都存放在这个目录或其子目录下。

    • 切换到这里是进行Web应用渗透测试的第一步,从这里开始可以分析网站的整体结构。

2)ls
  • 典型的输出可能包括:

    • html/ 或 public_html/:主网站目录。

    • sites/:一个包含多个站点配置的目录(常见于Drupal等CMS)。

    • 直接的flag1.txt文件。

    • 其他自定义的目录或文件。

  • 这个命令帮助攻击者绘制出网站的初步地图,决定下一步的探查方向。

3)cat flag1.txt
  • 详细讲解

    • 在CTF挑战中,flag是一段特殊的字符串(如FLAG{Th1s_1s_4_Fl4g}),是通关的目标。

    • cat (concatenate) 命令本用于连接和显示文件。这里它直接显示第一个flag的内容。

    • 找到并提交这个flag通常代表完成了“初始访问”或“基础信息收集”阶段的目标。

4)cd sites
  • 在Drupal中,/var/www/sites/ 目录用于存放所有与站点相关的配置、模块、主题和文件。/var/www/sites/default/ 是默认站点的核心配置目录。

5)cd default
  • 详细讲解

    • 这是Drupal默认站点的核心配置目录。这里存放着最关键的文件。

6)ls
  • 详细讲解

    • 攻击者再次使用ls来查看这个关键目录里有什么。

    • 最重要的目标文件通常会立刻出现:settings.php

    • 其他可能存在的文件包括:

      • files/:存放用户上传文件的目录。

      • modules/:站点特定的模块。

      • themes/:站点特定的主题。

7)cat settings.php

详细讲解

  • 文件重要性:在Drupal中,settings.php核心配置文件。它包含了数据库连接信息、站点安全盐(Hash Salt)等所有让网站正常运行所必需的最高机密。

  • 预期收获:攻击者执行此命令的目的是寻找以下信息:

    • 数据库连接凭据:

    • 第二个flag:CTF挑战中也经常将flag放在这个配置文件中作为一部分。

    • 其他配置:了解网站结构,为后续攻击做准备。

 

到此为止,我已经从网站的配置文件里找到了第二个flag(flag2)和数据库的用户名密码。

思路,直接脱库,构造可登录账密(1.直接连接并导出整个数据库(脱库);2. 利用数据库中的信息,构造一个可以登录网站后台的管理员账户(或者修改现有管理员密码),从而获得网站的最高管理权限。)

5)数据库攻破 

侦察数据库

1、进入shell命令行
2、mysql -udbuser -pR0ck3t
  • 作用登录MySQL数据库

  • 详解

    • mysql:调用MySQL客户端程序。

    • -udbuser:使用用户名 dbuser 进行连接。

    • -pR0ck3t:使用密码 R0ck3t 进行连接(-p和密码之间没有空格)。

  • 结果:如果账密正确,命令行提示符会变为 mysql>,表示成功进入数据库管理系统。

3、show databases;
  • 作用列出当前MySQL服务器上所有的数据库

  • 详解:攻击者需要查看有哪些数据库,以识别出哪个是网站使用的数据库(通常根据名字判断,如drupaldb)。

4、use drupaldb;
  • 作用选择要操作的数据库

  • 详解:切换到名为 drupaldb 的数据库。后续的所有命令(如查询、更新)都将在这个数据库上执行。

5、show tables;
  • 作用列出当前数据库中的所有表

  • 详解:攻击者需要找到存储用户信息的表。在Drupal等CMS中,这个表通常就叫 users

6、select * from users \G
  • 作用查看users表中的所有数据

  • 详解

    • select * from users:标准的SQL查询语句,意思是“从users表中选择所有字段(*)”。

    • \G:这是MySQL客户端的命令,不是SQL语句。它将查询结果的显示方式从“行模式”改为“垂直模式”。

    • 为什么用 \G:因为users表的pass(密码哈希)字段非常长,用传统行模式会换行,难以阅读。垂直模式让每个字段单独一行显示,清晰可读。*************************** 1. row ***************************

  •            uid: 1
             name: admin
             pass: $S$ExAmPlEHaShFrOmThEDaTaBaSe123456789
        ...

生成攻击载荷

1、再次回到shell命令行
2、ls
  • 作用列出当前目录的文件和文件夹

  • 详解:攻击者现在位于网站的根目录(如/var/www/html)。他需要确认当前目录包含Drupal的核心文件,特别是包含用于生成密码哈希的脚本。

3、php scripts/password-hash.sh 123
  • 作用为新密码生成Drupal认可的加密哈希值。这是最关键的一步。

  • 详解

    • php:调用PHP解释器。

    • scripts/password-hash.sh:这是Drupal框架自带的一个命令行工具,专门用于为给定的明文密码生成对应的加密哈希值。

    • 123:是攻击者想要设置的新密码(一个非常弱、容易记住的密码)。password: 123

  • hash: $S$F1fB6LgqJGNMW4412gG4gC5W7B5uUOq6v6b5b5b5b5b5b5b5b5b5b5

实施攻击

1、mysql -udbuser -pR0ck3t
  • 作用再次登录MySQL数据库。准备执行最终的更新操作。

2、show databases;
3、use drupaldb;
  • 作用再次确认操作目标数据库。确保在正确的数据库上执行危险操作。

4、update users set pass="密文" where name="admin";
  • 作用执行最终的攻击操作——修改管理员密码

  • 详解

    • update users:更新users表。

    • set pass="...":将pass字段的值设置为上一步生成的新哈希字符串

    • where name="admin":这是一个条件子句,指定只更新name字段为"admin"的那一条记录。如果没有这个条件,将会重置所有用户的密码,这是非常危险的。

  • 最终结果:执行成功后,数据库会返回提示:Query OK, 1 row affected。这表示admin用户的密码已被成功重置为123

6)获取最终凭证

拿到root权限

1、cd /root
2、ls
3、cat thefinalflag.txt

这三条简单的命令代表了一次渗透测试的终极胜利和终点

  1. cd /root验证权限。成功进入此目录是获得root权限的象征。

  2. ls寻找目标。定位最终要获取的凭证文件。

  3. cat thefinalflag.txt获取战利品。读取最终flag,标志着完全彻底地控制了目标系统。

在现实世界中,这相当于攻击者已经:

  • 完全掌控了服务器:可以安装软件、修改系统配置、查看所有用户的文件、窃取所有数据。

  • 实现了权限持久化:可以在系统中埋藏后门,确保以后随时可以回来。

  • 可以作为跳板:以此服务器为基地,向网络内部的其他机器发起新的攻击(横向移动)。

因此,这条命令序列是整个渗透过程的高潮,表明系统已被完全攻陷。对于防御方来说,一旦发现攻击者到达此阶段,意味着事态已经非常严重,需要立即进行应急响应。

四、总结

1、最经典 & 最常被扫描的端口

端口号协议服务名称说明
20, 21TCPFTP文件传输协议。20用于数据传输,21用于控制连接。注意:FTP默认不加密。
22TCPSSH安全外壳协议。用于加密的远程登录、文件传输(SCP/SFTP)和管理。是Telnet的安全替代品
23TCPTelnet远程登录协议。明文传输,非常不安全,现已基本被SSH取代。
25TCPSMTP简单邮件传输协议。用于发送电子邮件。
53TCP/UDPDNS域名系统。将域名解析为IP地址。TCP用于区域传输,UDP用于常规查询。
67, 68UDPDHCP动态主机配置协议。67是服务器端,68是客户端,用于自动分配IP地址。
80TCPHTTP超文本传输协议。用于未加密的网页传输。
110TCPPOP3邮局协议版本3。用于从邮件服务器下载电子邮件到本地客户端。
123UDPNTP网络时间协议。用于同步网络内计算机的时间。
139, 445TCPSMB服务器消息块。用于Windows文件和打印机共享。139是NetBIOS over TCP,445是直接SMB
143TCPIMAP互联网消息访问协议。用于在邮件服务器上管理电子邮件(邮件留在服务器上)。
443TCPHTTPSHTTP Secure。用于加密的网页传输(HTTP over SSL/TLS)。
993TCPIMAPSIMAP over SSL。加密的IMAP。
995TCPPOP3SPOP3 over SSL。加密的POP3。
3306TCPMySQLMySQL数据库默认端口。
3389TCPRDP远程桌面协议。用于远程连接Windows图形化界面。
5432TCPPostgreSQLPostgreSQL数据库默认端口。
6379TCPRedisRedis 内存数据库默认端口,如果配置不当会有未授权访问漏洞。
27017TCPMongoDBMongoDB NoSQL数据库默认端口。

2、端口敲门(Port Knocking) 

是一种隐蔽式安全技术,它通过在一系列预先定义好的封闭端口上发送特定序列的数据包,来“敲开”真正需要访问的服务端口(如SSH)。在敲门序列正确之前,服务端口对外界是完全隐藏(关闭或过滤)的。

1. 核心思想

想象一栋建筑有一个秘密俱乐部。俱乐部的大门(服务端口,如22/SSH)平时看起来是锁死且不起眼的(端口显示为closedfiltered)。只有先在附近几个特定的、不相关的门(敲门端口,如序列1000, 2000, 3000)上按正确顺序敲击(发送数据包),俱乐部的大门才会悄然打开一段时间,允许你进入。

2. 工作原理
  1. 初始状态

    • 服务器上的关键服务(如SSH)实际在运行并监听,但防火墙(如iptables)规则主动丢弃(DROP) 所有发往该服务端口的包。因此,外部扫描器(如Nmap)会看到该端口是 filtered(被过滤)** 或 closed(关闭)**,无法得知服务是否存在。

  2. 敲门过程

    • 授权用户使用一个客户端工具(或简单的telnet/nmap命令),按照预设的秘密序列,依次向服务器的一系列敲门端口发送数据包(例如TCP SYN包到端口 1000, 然后 2000, 然后 3000)。

    • 服务器上运行着一个 “敲门守护进程”(knockd),它持续监控防火墙日志,寻找这个特定的序列。

  3. 权限授予

    • 一旦knockd检测到正确的敲门序列,它会动态地修改防火墙规则,将你的源IP地址临时加入到允许访问目标服务(如SSH)的白名单中。

  4. 访问服务

    • 现在,你可以在短暂的时间窗口内(例如10秒),像正常一样连接SSH服务了。

  5. 自动关闭

    • 超时后,或者在你连接之后,knockd会自动再次修改防火墙规则,将你的IP从白名单中移除,重新隐藏服务端口。

3、nmap -A  192.168.X.X  -p-  中-p-的作用

   -p-

         作用: 告诉Nmap扫描所有TCP端口(从端口1到端口65535)。

         对比: 默认情况下,Nmap只扫描最常见的1000个端口。-p- 确保了不会有任何端口被遗漏,常用于发现那些运行在非常见端口上的隐蔽服务。

4、重点关注文件与端口分析、网页交互与漏洞探测、框架识别与利用

1、在nmap -A扫描结果中,install文件通常包含关键配置信息或漏洞入口,需优先检查其内容。如果看到site站点,判断出网页是集成CMS框架,不是程序员手写代码。

2、若发现80端口开放,对应的网址可直接访问。

访问网页后,系统性地点击所有可交互元素(如按钮、链接、表单)。用户名密码登录处可尝试以下方法:

  • 输入常见弱密码组合(如admin/admin.)。若页面报错或无解析,证明.没被解析,可能无法执行攻击;若特殊字符.被解析,可插入攻击语句。
  • 测试XSS注入点

3、页面底部若显示power by XXXX,表明使用了特定框架(如WordPress、Django)。此时应:

  • 访问框架官网,核对最新版本号。
  • 确认是否为集成CMS框架(如Joomla),而非自定义开发代码,此类框架通常存在公开漏洞利用方式(到漏洞库进行查找)。

5、在msf中,养成 use → show options → set → run 的习惯性工作流至关重要。

### 黑盒测试中的DC-5和DC-7概述 黑盒测试是一种专注于软件功能性的测试方法,它不涉及内部实现细节。在黑盒测试领域,决策表(Decision Table, DT)是一种常用的测试用例设计技术,用于分析复杂的逻辑条件及其对应的操作[^4]。 #### DC-5 (Decision Coverage Level 5) DC-5 是指 **决策覆盖率级别 5**,通常表示对布尔表达式的每种可能取值都进行了至少一次的测试。这意味着对于每一个 `if` 或者类似的控制语句,其真值和假值都被验证了一次。这种级别的覆盖确保了程序中每个分支至少被执行一次。 #### DC-7 (Decision Coverage Level 7) DC-7 则进一步扩展了测试范围,不仅涵盖了所有单个条件的结果,还考虑到了不同条件之间的组合情况。这相当于更高层次的路径覆盖,即不仅要测试单一条件下的行为,还要测试多条件联合时的行为模式。这种方法更接近于完全路径覆盖,但仍然避免了一些极端冗余的情况。 ### 区别与联系 两者的根本差异在于所达到的覆盖程度: - **DC-5** 主要是针对简单分支的覆盖; - 而 **DC-7** 更加深入,涉及到多个条件交互作用后的全面覆盖。 因此可以说,DC-7 是一种更为严格且详尽的测试策略,它可以发现更多潜在缺陷,但也相应增加了测试成本和复杂度。 ### 总结和个人体会 通过对比两种不同的决策覆盖等级可以看出,在实际项目应用过程中需权衡资源投入与收益关系。如果追求极致的质量保障,则应选用较高水平如DC-7这样的方案;但如果时间和预算有限制的话,则可以选择相对基础一点的方式比如DC-5来进行初步筛查工作。 另外值得注意的是,无论采取何种具体措施,保持良好的文档记录习惯以及团队间有效沟通都是非常重要的环节之一。只有这样才能够真正意义上提高整体工作效率并减少后期维护困难等问题的发生几率[^3]。 ```python def test_condition(a, b): if a > 0 and b < 10: # 这里体现了DC-7的概念,因为存在两个条件a>0,b<10的不同组合情形需要被考虑到 return True else: return False ``` 上述代码片段展示了当有两个独立输入参数a和b时,为了满足DC-7的要求,我们需要分别尝试四种可能性:(a正数&b小于十),(a负数&b小于十),(a正数&b大于等于十)还有最后一种就是两者都不符合条件的状态下函数返回值是否正确无误地反映了预期结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值