FTP协议
FTP协议有多种泄露信息的途径:
1.anonymous登录,上传下载文件
2.Wireshark抓取FTP的数据包,并还原传输内容。
FTP协议设置
cat /etc/vsftpd.conf | grep -v "#"
FTP禁用用户列表
cat /etc/ftpusers
危险参数
递归显示
ftp> ls -R
下载文件
ftp> get Important\ Notes.txt
下载所有文件
[!bash!]$ wget -m --no-passive ftp://anonymous:[email protected]
上传文件
ftp> put testupload.txt
FTP端口搜集信息
发现FTP
该方法会自动执行NSE
[!bash!]$ sudo nmap -sV -p21 -sC -A 10.129.14.136
发现NSE中FTP有关插件
使用nmap的NSE扫描可以快速确定ftp服务
##更新nmap NSE库
[!bash!]$ sudo nmap --script-updatedb
##查找NSE有关ftp的插件
find /usr/ -type f -name ftp* 2>/dev/null | grep scripts
FTP使用了SSL情况
当FTP使用ssl,情况会变得很不一样。我们需要用以下方式完成交互。虽然变麻烦了,但同时我们拿到了SSL证书,它会非常有用。
[!bash!]$ openssl s_client -connect 10.129.14.136:21 -starttls ftp
SMB 协议
Server Message Block
( SMB
) 是一种客户端-服务器协议,用于规范对文件和整个目录以及其他网络资源(例如打印机、路由器或为网络发布的接口)的访问。
SMB版本
SMB 版本 | 支持 | 特征 |
---|---|---|
互联网金融 | Windows NT 4.0 | 通过 NetBIOS 接口进行通信 |
SMB 1.0 | Windows 2000 | 通过 TCP 直接连接 |
SMB 2.0 | Windows Vista、Windows Server 2008 | 性能升级、改进的消息签名、缓存功能 |
SMB 2.1 | Windows 7、Windows Server 2008 R2 | 锁定机制 |
SMB 3.0 | Windows 8、Windows Server 2012 | 多通道连接、端到端加密、远程存储访问 |
SMB 3.0.2 | Windows 8.1,Windows Server 2012 R2 | |
SMB 3.1.1 | Windows 10、Windows Server 2016 | 完整性检查,AES-128加密 |
SMB的配置
cat /etc/samba/smb.conf | grep -v "#\|\;"
环境 | 描述 |
---|---|
[sharename] | 网络共享的名称。 |
workgroup = WORKGROUP/DOMAIN | 客户查询时会出现的工作组。 |
path = /path/here/ | 授予用户访问权限的目录。 |
server string = STRING | 当发起连接时将显示的字符串。 |
unix password sync = yes | 将 UNIX 密码与 SMB 密码同步? |
usershare allow guests = yes | 是否允许未经身份验证的用户访问定义的共享? |
map to guest = bad user | 当用户登录请求与有效的 UNIX 用户不匹配时该怎么办? |
browseable = yes | 该股票是否应显示在可用股票列表中? |
guest ok = yes | 允许不使用密码连接服务吗? |
read only = yes | 只允许用户读取文件吗? |
create mask = 0700 | 新创建的文件需要设置什么权限? |
SMB的危险配置
环境 | 描述 |
---|---|
browseable = yes | 允许列出当前共享中的可用共享吗? |
read only = no | 禁止创建和修改文件? |
writable = yes | 允许用户创建和修改文件? |
guest ok = yes | 允许不使用密码连接服务吗? |
enable privileges = yes | 是否尊重分配给特定 SID 的特权? |
create mask = 0777 | 必须为新创建的文件分配什么权限? |
directory mask = 0777 | 必须为新创建的目录分配哪些权限? |
logon script = script.sh | 用户登录时需要执行什么脚本? |
magic script = script.sh | 当脚本关闭时应该执行哪个脚本? |
magic output = script.out | 魔法脚本的输出需要存储在哪里? |
SMB链接
smbclient -N -L //10.129.14.128
smbclient L //10.129.14.128 -U xxx
smbclient //192.168.1.10/shared_folder -U user1
smbclient //10.129.14.128/notes
SMB下载文件
smb: \> get prep-prod.txt
SMB执行系统命令
SMB中只要在指令钱加上!就可以执行系统命令。
smb: \> !ls
smb: \> !cat prep-prod.txt
SMB状态查看
smb可以查看当前主机和其他主机的联系情况。
root@samba:~# smbstatus
SMB收集信息
nmap NSE
nmap是一个收集的好办法,但是nmap的效率是十分有限的。所以建议还是手动收集
sudo nmap 10.129.14.128 -sV -sC -p139,445
rpcclient
它rpcclient
为我们提供了许多不同的请求,我们可以使用这些请求在 SMB 服务器上执行特定功能来获取信息。
##链接smb
rpcclient -U "" 10.129.14.128
询问 | 描述 |
---|---|
srvinfo | 服务器信息。 |
enumdomains | 枚举网络中部署的所有域。 |
querydominfo | 提供已部署域的域、服务器和用户信息。 |
netshareenumall | 枚举所有可用的共享。 |
netsharegetinfo <share> | 提供有关特定共享的信息。 |
enumdomusers | 枚举所有域用户。 |
queryuser <RID> | 提供有关特定用户的信息。 |
rpcclient用户枚举
再次我们可以获得用户的RID和组的RID
<span style="background-color:#141d2b"><span style="color:#a4b1cd"><code class="language-shell-session"><span style="color:#a4b1cd">rpcclient </span><span style="color:#ff8484"><strong>$</strong></span><span style="color:#5cb2ff">></span> enumdomusers
user:[mrb3n] rid:[0x3e8]
user:[cry0l1t3] rid:[0x3e9]
<span style="color:#a4b1cd">rpcclient </span><span style="color:#ff8484"><strong>$</strong></span><span style="color:#5cb2ff">></span> queryuser 0x3e9
User Name : cry0l1t3
Full Name : cry0l1t3
Home Drive : \\devsmb\cry0l1t3
Dir Drive :
Profile Path: \\devsmb\cry0l1t3\profile
Logon Script:
Description :
Workstations:
Comment :
Remote Dial :
Logon Time : Do, 01 Jan 1970 01:00:00 CET
Logoff Time : Mi, 06 Feb 2036 16:06:39 CET
Kickoff Time : Mi, 06 Feb 2036 16:06:39 CET
Password last set Time : Mi, 22 Sep 2021 17:50:56 CEST
Password can change Time : Mi, 22 Sep 2021 17:50:56 CEST
Password must change Time: Do, 14 Sep 30828 04:48:05 CEST
unknown_2[0..31]...
user_rid : 0x3e9
group_rid: 0x201
acb_info : 0x00000014
fields_present: 0x00ffffff
logon_divs: 168
bad_password_count: 0x00000000
logon_count: 0x00000000
padding1[0..7]...
logon_hrs[0..21]...</code></span></span>
rpcclient组信息获取
从用户详细信息获得的用户组ID可以帮助我们判断用户的权限。
querygroup 0x201
Group Name: None
Description: Ordinary Users
Group Attribute:7
Num Members:2</code></span></span>
暴力破解用户RID
由于有时候权限会被限制,导致我们无法正常访问这些功能。但queryuser <RID> 一般是被允许的,所以我们可以连接后直接使用这个接口,从而完成爆破。
for i in $(seq 500 1100);do rpcclient -N -U "" 10.129.14.128 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
为什么爆破的是500-1100的RID的用户?
常见的 RID 范围说明
500:
这是 Windows 系统内置管理员账户的 RID。它通常标识内置的 Administrator 账户。501:
这是来宾账户(Guest)的 RID。一般用于访客用户,权限通常较低。512-514:
这些值通常用来标识特定的组,例如 Domain Admins、Domain Users 和 Domain Guests。1000 及以上的 RID:
用户在系统中创建的本地用户账户或域用户通常从 1000 开始分配。因此,当扫描 500-1100 范围时,你会覆盖到常见的系统账户和较低编号的用户账户。
samrdump
samrdump.py
是一个用于枚举和收集与 Windows 安全账户管理器 (SAM) 相关信息的脚本,通常用于渗透测试和安全研究中。
samrdump.py 10.129.14.128
主要功能
- 用户和组枚举:
samrdump.py
可以连接到远程 Windows 主机并通过 SAMR(Security Account Manager Remote)协议来枚举用户、组以及相关的权限信息。- 远程账户信息收集:通过利用 SAMR 接口,
samrdump.py
可以从目标机器中提取账户和组的列表,这些信息可能包括用户名、RID(相对标识符)等。- 基于网络的操作:通常,它是通过与目标机器的网络通信来收集这些信息,而无需本地访问,这使得它在远程渗透测试中特别有用。
SMBmap
SMBmap
是一个用于扫描和枚举远程服务器上 SMB(Server Message Block)共享资源的工具。
smbmap -H [目标IP地址]
smbmap -H [目标IP] -u [用户名] -p [密码]
主要功能
- 枚举 SMB 共享:
SMBmap
可以列出目标服务器上所有可访问的共享资源,并显示有关它们的详细信息(如读/写权限)。- 访问文件和目录:允许你递归地查看共享目录中的文件和子目录,还可以显示其访问权限。
- 上传和下载文件:可以上传或下载文件到指定的共享位置,用于测试和验证权限。
- 执行命令:在适当的权限下,
SMBmap
甚至可以在目标系统上远程执行命令。- 支持身份验证:支持使用用户名和密码进行身份验证(如果需要访问受保护的共享)。
- 权限评估:帮助测试人员评估 SMB 共享的读写权限,确定敏感数据可能的泄漏点。
CrackMapExec
CrackMapExec
(简称 CME) 是一个强大的网络渗透测试工具,专门设计用于在大规模网络环境中测试和管理 Windows/Active Directory 网络。
主要功能
- SMB 协议测试:
CrackMapExec
主要用来测试 SMB 服务的安全性,支持认证尝试、密码喷洒和凭据测试。它可以快速识别网络中的 SMB 共享并列出其权限。- Active Directory 枚举:支持对 Active Directory 域用户、组和权限的枚举,有助于深入了解目标网络的结构和用户信息。
- 凭据管理和利用:CME 支持利用密码哈希(例如 NTLM 哈希)进行认证和访问,甚至在不需要明文密码的情况下进行操作(Pass-the-Hash 攻击)。
- 远程命令执行:在具备合适权限的情况下,可以远程在目标机器上执行命令或脚本。
- 支持多协议:除了对 SMB 的强大支持外,
CrackMapExec
还支持 RDP(远程桌面协议)、WinRM(Windows 远程管理)等多种协议,允许用户在大范围内测试和管理 Windows 机器。- 集成模块:CME 具备模块化的功能,可以扩展并执行更多复杂的任务,如 Mimikatz 集成用于提取凭据、Kerberos 票据利用等。
Enum4Linux-ng
Linux快速信息搜集工具。
git clone https://github.com/cddmp/enum4linux-ng.git
cd enum4linux-ng
pip3 install -r requirements.txt
./enum4linux-ng.py 10.129.14.128 -A
NFS协议
Network File System
( NFS
) 是 Sun Microsystems 开发的网络文件系统,其用途与 SMB 相同。其目的是通过网络访问文件系统,就像访问本地文件系统一样。
NFS配置
选项 | 描述 |
---|---|
rw | 读写权限。 |
ro | 只读权限。 |
sync | 同步数据传输。(速度稍慢) |
async | 异步数据传输。(速度稍快) |
secure | 1024 以上的端口将不会被使用。 |
insecure | 将使用 1024 以上的端口。 |
no_subtree_check | 该选项禁用子目录树的检查。 |
root_squash | 将根 UID/GID 0 的文件的所有权限分配给匿名的 UID/GID,从而阻止root 访问 NFS 挂载上的文件。 |
NFS危险的配置
选项 | 描述 |
---|---|
rw | 读写权限。 |
insecure | 将使用 1024 以上的端口。 |
nohide | 如果在导出目录下安装了另一个文件系统,则该目录将通过其自己的导出条目导出。 |
no_root_squash | 所有由 root 创建的文件都保留 UID/GID 0。 |
NFS信息搜集
nmap NSE
sudo nmap 10.129.14.128 -p111,2049 -sV -sC
sudo nmap --script nfs* 10.129.14.128 -sV -p111,2049
展现NFS共享文件夹
showmount -e 10.129.14.128
将NFS共享文件夹绑定于本地
mkdir target-NFS
sudo mount -t nfs 10.129.14.128:/ ./target-NFS/ -o nolock
cd target-NFS
tree .
卸载NFS共享文件夹
sudo umount ./target-NFS
DNS协议
DNS协议会暴露很多内网域名和域名IP映射关系。这对于我们确定目标非常有效。
DNS记录类型
DNS 记录 | 描述 |
---|---|
A | 返回请求域的 IPv4 地址作为结果。 |
AAAA | 返回请求域的 IPv6 地址。 |
MX | 返回负责的邮件服务器。 |
NS | 返回域的 DNS 服务器 (名称服务器)。 |
TXT | 此记录可以包含各种信息。例如,可以使用全能型工具来验证 Google Search Console 或验证 SSL 证书。此外,还设置了 SPF 和 DMARC 条目来验证邮件流量并保护其免受垃圾邮件的侵害。 |
CNAME | 此记录用作另一个域名的别名。如果您希望域名 www.hackthebox.eu 指向与 hackthebox.eu 相同的 IP,则需要为 hackthebox.eu 创建 A 记录,并为 www.hackthebox.eu 创建 CNAME 记录。 |
PTR | PTR 记录的工作方式相反(反向查找)。它将 IP 地址转换为有效的域名。 |
SOA | 提供有关相应 DNS 区域和管理联系人的电子邮件地址的信息。 |
DNS服务器配置
DNS配置文件主要有以下3个:
named.conf.local
named.conf.options
named.conf.log
root@bind9:~# cat /etc/bind/named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "domain.com" {
type master;
file "/etc/bind/db.domain.com";
allow-update { key rndc-key; };
};
DNS服务器区域文件
简而言之,所有的正向记录都按照 BIND 格式输入,这允许 DNS 服务器识别 IP 地址所对应的域名、主机名和角色。简单来说,这就像是 DNS 服务器用于查找域名地址的电话簿
cat /etc/bind/db.domain.com
DNS服务器反查域名文件
cat /etc/bind/db.10.129.14
DNS服务器危险配置
选项 | 描述 |
---|---|
allow-query | 定义哪些主机被允许向 DNS 服务器发送请求。 |
allow-recursion | 定义哪些主机被允许向 DNS 服务器发送递归请求。 |
allow-transfer | 定义哪些主机被允许从 DNS 服务器接收区域传输。 |
zone-statistics | 收集区域的统计数据。 |
DNS信息搜集
DNS ns查询
dig ns <domain> @<dns server ip>
dig ns inlanefreight.htb @10.129.14.128
DNS 版本查询
dig CH TXT version.bind <dns_server_ip>
dig CH TXT version.bind 10.129.120.85
DNS any查询
dig any inlanefreight.htb @10.129.14.128
DNS AXFR区域传输
dig axfr inlanefreight.htb @10.129.14.128
dig axfr internal.inlanefreight.htb @10.129.14.128
子域名暴力破解
for sub in $(cat /opt/useful/seclists/Discovery/DNS/subdomains-top1million-110000.txt);do dig $sub.inlanefreight.htb @10.129.14.128 | grep -v ';\|SOA' | sed -r '/^\s*$/d' | grep $sub | tee -a subdomains.txt;done
dnsenum --dnsserver 10.129.14.128 --enum -p 0 -s 0 -o subdomains.txt -f /opt/useful/seclists/Discovery/DNS/subdomains-top1million-110000.txt inlanefreight.htb
SMTP协议
SMTP被攻破会导致发送电子邮件,并且枚举SMTP用户。有趣的是,SMTP的用户通常为域账号,所以他变得非常有用。
SMTP配置
cat /etc/postfix/main.cf | grep -v "#" | sed -r "/^\s*$/d"
smtpd_banner = ESMTP Server
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2
<span style="color:#a4b1cd">smtp_tls_session_cache_database = btree<span style="color:#a4b1cd">:</span></span><span style="color:#ff8484"><strong>$</strong></span><span style="color:#a4b1cd">{</span>data_directory<span style="color:#a4b1cd">}</span>/smtp_scache
myhostname = mail1.inlanefreight.htb
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
smtp_generic_maps = hash:/etc/postfix/generic
<span style="color:#a4b1cd">mydestination = </span><span style="color:#ff8484"><strong>$</strong></span>myhostname, localhost
<span style="color:#a4b1cd">masquerade_domains = </span><span style="color:#ff8484"><strong>$</strong></span>myhostname
mynetworks = 127.0.0.0/8 10.129.0.0/16
mailbox_size_limit = 0
recipient_delimiter = +
smtp_bind_address = 0.0.0.0
inet_protocols = ipv4
smtpd_helo_restrictions = reject_invalid_hostname
home_mailbox = /home/postfix</code></span></span>
SMTP使用
命令 | 描述 |
---|---|
AUTH PLAIN | AUTH 是用于验证客户端的服务扩展。 |
HELO | 客户端使用其计算机名称登录并开始会话。 |
MAIL FROM | 客户端指定电子邮件发件人。 |
RCPT TO | 客户指定电子邮件收件人的姓名。 |
DATA | 客户端启动电子邮件的传输。 |
RSET | 客户端中止已发起的传输,但保持客户端和服务器之间的连接。 |
VRFY | 客户端检查邮箱是否可用于传输消息。 |
EXPN | 客户端还会使用此命令检查邮箱是否可用于发送消息。 |
NOOP | 客户端向服务器请求响应,以防止由于超时而断开连接。 |
QUIT | 客户端终止会话。 |
验证用户
但这并非总是有效,SMTP会返回不存在的用户。
<span style="background-color:#141d2b"><span style="color:#a4b1cd"><code class="language-shell-session">[!bash!]<span style="color:#ff8484"><strong>$</strong></span> telnet <span style="color:#ffaf00">10.129</span>.14.128 <span style="color:#ffaf00">25</span>
Trying 10.129.14.128...
Connected to 10.129.14.128.
Escape character is '^]'.
220 ESMTP Server
VRFY root
252 2.0.0 root
VRFY cry0l1t3
252 2.0.0 cry0l1t3
VRFY testuser
252 2.0.0 testuser
VRFY aaaaaaaaaaaaaaaaaaaaaaaaaaaa
252 2.0.0 aaaaaaaaaaaaaaaaaaaaaaaaaaaa</code></span></span>
发送电子邮件
<span style="background-color:#141d2b"><span style="color:#a4b1cd"><code class="language-shell-session">[!bash!]<span style="color:#ff8484"><strong>$</strong></span> telnet <span style="color:#ffaf00">10.129</span>.14.128 <span style="color:#ffaf00">25</span>
Trying 10.129.14.128...
Connected to 10.129.14.128.
Escape character is '^]'.
220 ESMTP Server
EHLO inlanefreight.htb
250-mail1.inlanefreight.htb
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
MAIL FROM: <[email protected]>
250 2.1.0 Ok
RCPT TO: <[email protected]> NOTIFY=success,failure
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: <[email protected]>
To: <[email protected]>
Subject: DB
Date: Tue, 28 Sept 2021 16:32:51 +0200
Hey man, I am trying to access our XY-DB but the creds don't work.
Did you make any changes there?
.
250 2.0.0 Ok: queued as 6E1CF1681AB
QUIT
221 2.0.0 Bye
Connection closed by foreign host.</code></span></span>
SMTP危险配置
开放中继配置
mynetworks = 0.0.0.0/0
通过此设置,此 SMTP 服务器可以发送虚假电子邮件,从而初始化多方之间的通信。另一种攻击可能性是伪造电子邮件并阅读它。
SMTP信息搜集
Nmap NSE
sudo nmap 10.129.14.128 -p25 --script smtp-open-relay -v
smtp-user-enum 用户名枚举
smtp-user-enum -M VRFY -U /home/kali/Desktop/HTB/footprinting-wordlist.txt -t 10.129.75.47
IMAP/POP3协议
借助Internet Message Access Protocol
( IMAP
),可以从邮件服务器访问电子邮件。与Post Office Protocol
( POP3
) 不同,IMAP 允许直接在服务器上在线管理电子邮件,并支持文件夹结构。另一方面,POP3 不具备与 IMAP 相同的功能,它仅提供在电子邮件服务器上列出、检索和删除电子邮件的功能。因此,必须使用诸如 IMAP 之类的协议来实现其他功能,例如直接在邮件服务器上使用分层邮箱、在会话期间访问多个邮箱以及预先选择电子邮件。
IMAP/POP3协议,可以帮助我们读取用户的邮箱内容,翻企业邮箱通常可能有些意想不到的收获。
IMAP命令
命令 | 描述 |
---|---|
1 LOGIN username password | 用户的登录名。 |
1 LIST "" * | 列出所有目录。 |
1 CREATE "INBOX" | 创建具有指定名称的邮箱。 |
1 DELETE "INBOX" | 删除邮箱。 |
1 RENAME "ToRead" "Important" | 重命名邮箱。 |
1 LSUB "" * | active 从用户已声明为或 的名称集合中返回名称子集subscribed 。 |
1 SELECT INBOX | 选择一个邮箱以便可以访问邮箱中的消息。 |
1 UNSELECT INBOX | 退出选定的邮箱。 |
1 FETCH <ID> all | 检索与邮箱中的消息相关的数据。 |
1 FETCH <ID> BODY[] | 检索与邮箱中的消息详细内容 |
1 CLOSE | 删除所有设置了标志的消息Deleted 。 |
1 LOGOUT | 关闭与 IMAP 服务器的连接。 |
POP3命令
命令 | 描述 |
---|---|
USER username | 识别用户。 |
PASS password | 使用密码对用户进行身份验证。 |
STAT | 向服务器请求已保存的电子邮件数量。 |
LIST | 向服务器请求所有电子邮件的数量和大小。 |
RETR id | 请求服务器通过 ID 传递所请求的电子邮件。 |
DELE id | 请求服务器通过ID删除请求的电子邮件。 |
CAPA | 请求服务器显示服务器功能。 |
RSET | 请求服务器重置传输的信息。 |
QUIT | 关闭与 POP3 服务器的连接。 |
IMAP/POP3 危险配置
环境 | 描述 |
---|---|
auth_debug | 启用所有身份验证调试日志记录。 |
auth_debug_passwords | 此设置可调整日志详细程度、提交的密码以及记录的方案。 |
auth_verbose | 记录不成功的身份验证尝试及其原因。 |
auth_verbose_passwords | 用于身份验证的密码会被记录,并且可能会被截断。 |
auth_anonymous_username | 这指定使用匿名 SASL 机制登录时要使用的用户名。 |
IMAP/POP3信息搜集
Nmap NSE
sudo nmap 10.129.14.128 -sV -p110,143,993,995 -sC
curl
curl -k 'imaps://10.129.14.128' --user user:p4ssw0rd
curl -k 'imaps://10.129.14.128' --user cry0l1t3:1234 -v
Openssl
openssl s_client -connect 10.129.14.128:pop3s
openssl s_client -connect 10.129.14.128:imaps
SNMP协议
SNMP协议是简单的网络管理协议,但这个协议中会包含一些敏感信息。我们需要特别注意STRING字段,很有可能会出现惊喜。
SNMP配置信息
cat /etc/snmp/snmpd.conf | grep -v "#" | sed -r '/^\s*$/d'
SNMP危险配置
设置 | 描述 |
---|---|
rwuser noauth | 无需身份验证即可访问完整 OID 树。 |
rwcommunity <community string> <IPv4 address> | 无论请求从何处发送,都可以访问完整的 OID 树。 |
rwcommunity6 <community string> <IPv6 address> | rwcommunity 与使用 IPv6 的访问方式相同,不同之处在于。 |
SNMP信息搜集
snmpwalk 搜集信息
snmpwalk -v2c -c public 10.129.14.128
onesixtyone 爆破社区口令搜集信息
onesixtyone -c /opt/useful/seclists/Discovery/SNMP/snmp.txt 10.129.14.128
braa提取敏感信息
braa <community string>@<IP>:.1.3.6.*
braa [email protected]:.1.3.6.*
10.129.14.128:20ms:.1.3.6.1.2.1.1.1.0:Linux htb 5.11.0-34-generic #36~20.04.1-Ubuntu SMP Fri Aug 27 08:06:32 UTC 2021 x86_64
10.129.14.128:20ms:.1.3.6.1.2.1.1.2.0:.1.3.6.1.4.1.8072.3.2.10
10.129.14.128:20ms:.1.3.6.1.2.1.1.3.0:548
10.129.14.128:20ms:.1.3.6.1.2.1.1.4.0:[email protected]
10.129.14.128:20ms:.1.3.6.1.2.1.1.5.0:htb
10.129.14.128:20ms:.1.3.6.1.2.1.1.6.0:US
10.129.14.128:20ms:.1.3.6.1.2.1.1.7.0:78
为什么使用
.1.3.6.*
爬取信息?
- 涵盖重要的管理对象:
.1.3.6.*
是标准 SNMP 对象的主要根路径,它包含了所有网络管理相关的信息,如设备信息、接口信息、协议状态等。大多数常用的MIB(管理信息库)对象,例如system
、interfaces
、ip
等,都在这个子树中。- 广泛的适用性:在大多数网络设备中,所有标准的MIB变量都位于这个树下。因此,使用
.1.3.6.*
作为扫描或爬取对象,可以获取广泛的设备状态和信息。- 管理信息的标准化:所有符合SNMP标准的设备制造商都会将标准对象放置在
.1.3.6.*
的分支中,这使得管理系统可以统一地访问设备的信息。厂家私有的OID通常会在这个基础上进一步扩展,具有唯一性。- 获取系统信息的常见策略:例如,系统描述(
sysDescr
)位于.1.3.6.1.2.1.1.1
,而设备的接口信息则在.1.3.6.1.2.1.2
下。通过爬取.1.3.6.*
,您可以很容易获得设备的基本信息和各种接口状态。
Mysql协议
Mysql登录成功后则可以挖掘所有数据库内容。并且可以做到文件上传,或者RCE。
Mysql危险配置
设置 | 描述 |
---|---|
user | 设置 MySQL 服务将以哪个用户身份运行。 |
password | 设置 MySQL 用户的密码。 |
admin_address | 在管理网络接口上侦听 TCP/IP 连接的 IP 地址。 |
debug | 此变量指示当前的调试设置 |
sql_warnings | 此变量控制单行 INSERT 语句是否在出现警告时生成信息字符串。 |
secure_file_priv | 此变量用于限制数据导入和导出操作的影响。 |
Mysql信息搜集
Nmap NSE
sudo nmap 10.129.14.128 -sV -sC -p3306 --script mysql*
登录mysql的搜集命令
命令 | 描述 |
---|---|
mysql -u <user> -p<password> -h <IP address> | 连接到 MySQL 服务器。'- p' 标志和密码之间不应有空格。 |
show databases; | 显示所有数据库。 |
use <database>; | 选择其中一个现有数据库。 |
show tables; | 显示所选数据库中所有可用的表。 |
show columns from <table>; | 显示所选数据库中的所有列。 |
select * from <table>; | 显示所需表中的所有内容。 |
select * from <table> where <column> = "<string>"; | string 在所需表中搜索所需内容。 |
MSSQL协议
暴露后泄露数据
MSSQL数据结构
默认系统数据库 | 描述 |
---|---|
master | 跟踪 SQL 服务器实例的所有系统信息 |
model | 模板数据库充当每个新创建的数据库的结构。在模型数据库中更改的任何设置都将反映在对模型数据库进行更改后创建的任何新数据库中 |
msdb | SQL Server 代理使用此数据库来安排作业和警报 |
tempdb | 存储临时对象 |
resource | 包含 SQL Server 附带的系统对象的只读数据库 |
MSSQL危险配置
-
MSSQL clients not using encryption to connect to the MSSQL server
-
The use of self-signed certificates when encryption is being used. It is possible to spoof self-signed certificates
-
The use of named pipes
-
Weak & default
sa
credentials. Admins may forget to disable this account
MSSQL信息搜集
Nmap NSE
sudo nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config,ms-sql-ntlm-info,ms-sql-tables,ms-sql-hasdbaccess,ms-sql-dac,ms-sql-dump-hashes --script-args mssql.instance-port=1433,mssql.username=sa,mssql.password=,mssql.instance-name=MSSQLSERVER -sV -p 1433 10.129.201.248
MSF ping MSSQL
msf6 auxiliary(scanner/mssql/mssql_ping) > set rhosts 10.129.201.248
rhosts => 10.129.201.248
msf6 auxiliary(scanner/mssql/mssql_ping) > run
MSSQL sa无法登录问题
有时候我们在获取了mssql的sa账户和密码,但是却无法通过远程管理工具登录。这个原因是mssql采用了混合认证模式。在混合认证模式下,我们只能在使用管理员权限的情况下登录mssql。当我们碰到这种情况,可以想办法使用3389远程桌面以登录,或者使用runas工具。
runas /user:<ServerName>\Administrator "ssms.exe"
Oracle TNS协议
它已成为医疗保健、金融和零售行业管理大型复杂数据库的首选解决方案。此外,其内置的加密机制可确保传输数据的安全性,使其成为数据安全至关重要的企业环境的理想解决方案。
Oracle 数据库和mysql相同,会导致读写文件和密码泄露
Oracle配置文件
Oracle TNS 的配置文件称为tnsnames.ora
和listener.ora
,在$ORACLE_HOME/network/admin
目录中。
Tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.129.11.102)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
Listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PDB1)
(ORACLE_HOME = C:\oracle\product\19.0.0\dbhome_1)
(GLOBAL_DBNAME = PDB1)
(SID_DIRECTORY_LIST =
(SID_DIRECTORY =
(DIRECTORY_TYPE = TNS_ADMIN)
(DIRECTORY = C:\oracle\product\19.0.0\dbhome_1\network\admin)
)
)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = orcl.inlanefreight.htb)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
环境 | 描述 |
---|---|
DESCRIPTION | 提供数据库名称及其连接类型的描述符。 |
ADDRESS | 数据库的网络地址,包括主机名和端口号。 |
PROTOCOL | 与服务器通信所用的网络协议 |
PORT | 与服务器通信使用的端口号 |
CONNECT_DATA | 指定连接的属性,例如服务名称或 SID、协议和数据库实例标识符。 |
INSTANCE_NAME | 客户端想要连接的数据库实例的名称。 |
SERVICE_NAME | 客户端想要连接的服务的名称。 |
SERVER | 用于数据库连接的服务器类型,例如专用或共享。 |
USER | 用于与数据库服务器进行身份验证的用户名。 |
PASSWORD | 用于与数据库服务器进行身份验证的密码。 |
SECURITY | 连接的安全类型。 |
VALIDATE_CERT | 是否使用 SSL/TLS 验证证书。 |
SSL_VERSION | 用于连接的 SSL/TLS 版本。 |
CONNECT_TIMEOUT | 客户端与数据库建立连接的时间限制(以秒为单位)。 |
RECEIVE_TIMEOUT | 客户端从数据库接收响应的时间限制(以秒为单位)。 |
SEND_TIMEOUT | 客户端向数据库发送请求的时间限制(以秒为单位)。 |
SQLNET.EXPIRE_TIME | 客户端检测连接的时间限制(以秒为单位)已失败。 |
TRACE_LEVEL | 数据库连接的跟踪级别。 |
TRACE_DIRECTORY | 存储跟踪文件的目录。 |
TRACE_FILE_NAME | 跟踪文件的名称。 |
LOG_FILE | 存储日志信息的文件。 |
Oracle信息搜集
odat安装方法
sudo apt-get install libaio1 python3-dev alien -y
git clone https://github.com/quentinhardy/odat.git
cd odat/
git submodule init
git submodule update
wget https://download.oracle.com/otn_software/linux/instantclient/2112000/instantclient-basic-linux.x64-21.12.0.0.0dbru.zip
unzip instantclient-basic-linux.x64-21.12.0.0.0dbru.zip
wget https://download.oracle.com/otn_software/linux/instantclient/2112000/instantclient-sqlplus-linux.x64-21.12.0.0.0dbru.zip
unzip instantclient-sqlplus-linux.x64-21.12.0.0.0dbru.zip
export LD_LIBRARY_PATH=instantclient_21_12:$LD_LIBRARY_PATH
export PATH=$LD_LIBRARY_PATH:$PATH
pip3 install cx_Oracle
sudo apt-get install python3-scapy -y
sudo pip3 install colorlog termcolor passlib python-libnmap
sudo apt-get install build-essential libgmp-dev -y
pip3 install pycryptodome
Nmap
sudo nmap -p1521 -sV 10.129.204.235 --open
Nmap 暴力破解SID
sudo nmap -p1521 -sV 10.129.204.235 --open --script oracle-sid-brute
ODAT爆破
./odat.py all -s 10.129.204.235
登录Oracle
sqlplus scott/[email protected]/XE
##报错解决办法
sudo sh -c "echo /usr/lib/oracle/12.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf";sudo ldconfig
Oracle数据库交互
用户权限&权限提升&所有表格
###展示所有表
SQL> select table_name from all_tables;
TABLE_NAME
------------------------------
DUAL
SYSTEM_PRIVILEGE_MAP
TABLE_PRIVILEGE_MAP
STMT_AUDIT_OPTION_MAP
AUDIT_ACTIONS
WRR$_REPLAY_CALL_FILTER
HS_BULKLOAD_VIEW_OBJ
HS$_PARALLEL_METADATA
HS_PARTITION_COL_NAME
HS_PARTITION_COL_TYPE
HELP
...SNIP...
###显示用户权限
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
SCOTT CONNECT NO YES NO
SCOTT RESOURCE NO YES NO
###权限提升
sqlplus scott/[email protected]/XE as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on Mon Mar 6 11:32:58 2023
Version 21.4.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
###展示用户权限
SQL> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
SYS ADM_PARALLEL_EXECUTE_TASK YES YES NO
SYS APEX_ADMINISTRATOR_ROLE YES YES NO
SYS AQ_ADMINISTRATOR_ROLE YES YES NO
SYS AQ_USER_ROLE YES YES NO
SYS AUTHENTICATEDUSER YES YES NO
SYS CONNECT YES YES NO
SYS CTXAPP YES YES NO
SYS DATAPUMP_EXP_FULL_DATABASE YES YES NO
SYS DATAPUMP_IMP_FULL_DATABASE YES YES NO
SYS DBA YES YES NO
SYS DBFS_ROLE YES YES NO
USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
SYS DELETE_CATALOG_ROLE YES YES NO
SYS EXECUTE_CATALOG_ROLE YES YES NO
提取密码hash
SQL> select name, password from sys.user$;
NAME PASSWORD
------------------------------ ------------------------------
SYS FBA343E7D6C8BC9D
PUBLIC
CONNECT
RESOURCE
DBA
SYSTEM B5073FE1DE351687
SELECT_CATALOG_ROLE
EXECUTE_CATALOG_ROLE
DELETE_CATALOG_ROLE
OUTLN 4A3BA55E08595C81
EXP_FULL_DATABASE
NAME PASSWORD
------------------------------ ------------------------------
IMP_FULL_DATABASE
文件上传
./odat.py utlfile -s 10.129.204.235 -d XE -U scott -P tiger --sysdba --putFile C:\\inetpub\\wwwroot testing.txt ./testing.txt
[1] (10.129.204.235:1521): Put the ./testing.txt local file in the C:\inetpub\wwwroot folder like testing.txt on the 10.129.204.235 server
[+] The ./testing.txt file was created on the C:\inetpub\wwwroot directory on the 10.129.204.235 server like the testing.txt file
IPMI协议
( IPMI
)是一套标准化的规范,用于基于硬件的主机管理系统,用于系统管理和监控。它充当一个自主子系统,独立于主机的 BIOS、CPU、固件和底层操作系统工作。IPMI 使系统管理员能够管理和监控系统,即使系统已关闭或处于无响应状态。它使用与系统硬件的直接网络连接运行,不需要通过登录 shell 访问操作系统。IPMI 还可用于远程升级系统,而无需物理访问目标主机。IPMI 通常以三种方式使用:
- 在操作系统启动之前修改 BIOS 设置
- 当主机完全断电时
- 系统故障后访问主机
IPMI 通过端口 623 UDP 进行通信。我们在内部渗透测试中经常看到的最常见的 BMC 是 HP iLO、Dell DRAC 和 Supermicro IPMI。
IPMI协议如果采用RAKP协议,那么则会泄露登录账户的密码hash。
IPMI危险配置
如果默认凭据无法访问 BMC,我们可以转向IPMI 2.0 中的 RAKP 协议中的缺陷。在身份验证过程中,服务器会在进行身份验证之前将用户密码的加盐 SHA1 或 MD5 哈希发送到客户端。可以利用此漏洞获取 BMC 上任何有效用户帐户的密码哈希。然后可以使用Hashcat
模式的字典攻击离线破解这些密码哈希7300
。如果 HP iLO 使用出厂默认密码,我们可以使用此 Hashcat 掩码攻击命令hashcat -m 7300 ipmi.txt -a 3 ?1?1?1?1?1?1?1?1 -1 ?d?u
,该命令会尝试所有大写字母和数字的组合来获取八个字符的密码。
IPMI信息搜集
默认账密
Product | Username | Password |
---|---|---|
Dell iDRAC | root | calvin |
HP iLO | Administrator | randomized 8-character string consisting of numbers and uppercase letters |
Supermicro IPMI | ADMIN | ADMIN |
nmap
sudo nmap -sU --script ipmi-version -p 623 ilo.inlanfreight.local
MSF扫描
msf6 > use auxiliary/scanner/ipmi/ipmi_version
msf6 auxiliary(scanner/ipmi/ipmi_version) > set rhosts 10.129.42.195
msf6 auxiliary(scanner/ipmi/ipmi_version) > show options
Module options (auxiliary/scanner/ipmi/ipmi_version):
Name Current Setting Required Description
---- --------------- -------- -----------
BATCHSIZE 256 yes The number of hosts to probe in each set
RHOSTS 10.129.42.195 yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 623 yes The target port (UDP)
THREADS 10 yes The number of concurrent threads
msf6 auxiliary(scanner/ipmi/ipmi_version) > run
MSF dump哈希
BMC的hash是可以被获取的,如果这个密码被用于其他服务器,那么就会造成其他服务器的沦陷。
sf6 > use auxiliary/scanner/ipmi/ipmi_dumphashes
msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > set rhosts 10.129.42.195
msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > show options
Module options (auxiliary/scanner/ipmi/ipmi_dumphashes):
Name Current Setting Required Description
---- --------------- -------- -----------
CRACK_COMMON true yes Automatically crack common passwords as they are obtained
OUTPUT_HASHCAT_FILE no Save captured password hashes in hashcat format
OUTPUT_JOHN_FILE no Save captured password hashes in john the ripper format
PASS_FILE /usr/share/metasploit-framework/data/wordlists/ipmi_passwords.txt yes File containing common passwords for offline cracking, one per line
RHOSTS 10.129.42.195 yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 623 yes The target port
THREADS 1 yes The number of concurrent threads (max one per host)
USER_FILE /usr/share/metasploit-framework/data/wordlists/ipmi_users.txt yes File containing usernames, one per line
msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > run
SSH协议
SSH多么美妙的协议,功能是啥咱就不多赘述了
SSH危险配置
环境 | 描述 |
---|---|
PasswordAuthentication yes | 允许基于密码的身份验证。 |
PermitEmptyPasswords yes | 允许使用空密码。 |
PermitRootLogin yes | 允许以 root 用户身份登录。 |
Protocol 1 | 使用过时的加密版本。 |
X11Forwarding yes | 允许 GUI 应用程序进行 X11 转发。 |
AllowTcpForwarding yes | 允许转发 TCP 端口。 |
PermitTunnel | 允许隧道传输。 |
DebianBanner yes | 登录时显示特定横幅。 |
SSH信息搜集
Nmap
nmap --script ssh* -sV -p22 <ip>
SSH连接
ssh -i private.key <user>@<FQDN/IP> | Log in to the SSH server using private key. |
ssh <user>@<FQDN/IP> -o PreferredAuthentications=password | Enforce password-based authentication |
Rsync枚举共享卷
该协议是SSH的一个文件共享协议,这个协议会暴露给我们可以访问的共享文件。
nc -nv 127.0.0.1 873
Rsync 枚举共享卷内容
rsync -av --list-only rsync://127.0.0.1/dev
R-services信息搜集
R-services是一个古老的协议,用于unix,开放端口为512,513,514。其功能和ssh类似,也是提供远程控制的能力。
容易被滥用的端口和命令
命令 | 服务守护进程 | 港口 | 传输协议 | 描述 |
---|---|---|---|---|
rcp | rshd | 514 | TCP | 将文件或目录从本地系统双向复制到远程系统(反之亦然),或从一个远程系统复制到另一个远程系统。其工作原理类似于cp Linux 上的命令,但提供no warning to the user for overwriting existing files on a system 。 |
rsh | rshd | 514 | TCP | 无需登录过程即可打开远程计算机上的 shell。依靠/etc/hosts.equiv 和.rhosts 文件中的受信任条目进行验证。 |
rexec | rexecd | 512 | TCP | 使用户能够在远程计算机上运行 shell 命令。需要通过使用username 和通过未加密的网络套接字进行身份验证。身份验证被和文件password 中的受信任条目覆盖。/etc/hosts.equiv .rhosts |
rlogin | rlogind | 513 | TCP | 使用户能够通过网络登录到远程主机。其工作原理与telnet Unix 类主机类似,但只能连接到此类主机。身份验证被/etc/hosts.equiv 和.rhosts 文件中的受信任条目所覆盖。 |
Nmap
sudo nmap -sV -p 512,513,514 10.0.17.2
RDP信息搜集
Nmap
nmap -sV -sC 10.129.201.248 -p3389 --script rdp*
RDP安全检查
git clone https://github.com/CiscoCXSecurity/rdp-sec-check.git && cd rdp-sec-check
./rdp-sec-check.pl 10.129.201.248
启用RDP会话
xfreerdp /u:cry0l1t3 /p:"P455w0rd!" /v:10.129.201.248
WinRM信息搜集
Nmap
nmap -sV -sC 10.129.201.248 -p5985,5986 --disable-arp-ping -n
Windows使用WinRM
Powershell
Linux使用WinRM
evil-winrm -i 10.129.201.248 -u Cry0l1t3 -p P455w0rD!
WMI信息搜集
Windows 管理规范 ( WMI
) 是 Microsoft 的实现,也是通用信息模型 ( CIM
) 的扩展,是WBEM
Windows 平台标准化基于 Web 的企业管理 ( ) 的核心功能。WMI 允许对 Windows 系统上的几乎所有设置进行读写访问。
连接WMI
/usr/share/doc/python3-impacket/examples/wmiexec.py Cry0l1t3:"P455w0rD!"@10.129.201.248 "hostname"
标签:14.128,10.129,--,用户,渗透,集合,服务器,YES,SMB
From: https://blog.csdn.net/weixin_44368093/article/details/143725463