Metasploit官网 :www.metasploit.com
安装metasploit:
在Linux上安装需要先下载ruby(一种简单快捷的面向对象(面向对象程序设计)脚本语言)
kali自带msf不用安装,推荐使用kali
更新metasploit:
1.先运行metasploit:msfconsole
在进入msf后输入svn update
2.msfupdate
总结使用metasploit的步骤:
1.查找cve公布的漏洞
2.查找对应的exploit模块
3.配置模块参数
4.添加payload后妈
5.执行exploit
msf反弹shell后保存在后台
exploit -j
显示后台所有会话
sessions
进入会话
sessions -i ID号
将当前会话保存在后台
background
查看帮助
sessions -h
清除会话
sessions -K 清除全部会话
sessions -k ID号 清除选定会话
msf exploit:
RHOST 远程主机IP地址
LPORT 本地端口
RPORT 远程主机端口
exploit 启动
Ctrl+z 把会话放到后台
sessions 列出正在后台运行的会话
sessions -i 进入正在后台运行的会话
sessions -h 查看sessions的所有选项
一个完整的exploit过程:exploit--nop(可选)--payload
核心命令中的connect命令:
connect命令主要用于远程连接主机。一般用于内网安全,比较常用的命令就是“connect”
metasploit主要命令: (查看有关命令的详细信息+ -h)
? 帮助菜单
back 从当前环境返回(相当于Windows的返回键)
cd 切换目录(Linux上的大部分命令在msf上同样可用)
color 颜色转换(有true和Flase两个选项 分别是开和关)
connect 连接一个主机
exit 退出msf
info 显示一个或多个模块的详细信息
irb 进入ruby脚本模式
jobs 显示和管理作业(相当于Windows的任务管理器)
kill 杀死一个作业(相当于任务管理器上的关闭程序 kill+程序编号)
load 加载一个插件(msf中有很多插件 load+插件名)
unload 卸载一个模块
loadpath 在一个路径搜索并加载插件
resource 运行存储在一个文件中的命令
route 查看一个会话的路由信息
save 保存动作(操作)
search 搜索模块名和描述
set 给一个变量赋值
setg 把一个值赋给全局变量
unset 解除一个或多个变量
unsetg 解除一个或多个全局变量
show 显示所给类型的模块 或所有模块
sleep 在限定的秒数内什么也不做
use 通过名称选择一个模块
version 显示msf和控制台库版本号
-----------------------msfconsole接口-----------------------------------------
(进入msf操作)
Exploits module: (针对不同的已知漏洞的利用程序)
show exploits 输入后显示3列 分别为 exploit名称,等级(rank 代表好用程度),漏洞描述
exploit命名规则 操作系统/服务/模块名称
info 模块名 查看exploit详细信息(例如:info exploit windows/wins/ms04_045_wins)
use 模块名 选择一个exploit
show options 列出exploit设置选项(options中required选项如果是yes则是必须设定的选项)
show targets 列出所有目标类型
set option 值 如:set RHOST 192.168.0.1
set TARGET 编号 如:set TARGET 2
payloads module: (payloads也就是shellcode(利用软件漏洞而执行的代码) 就是在漏洞利用成功后所要做的事情)
show payloads 查看当前exploit可以用哪些payloads(要在exploit设置完成后)
payloads命名规则 操作系统/类型/名称 如:windows/shell/bind_tcp
payloads主要类型:
shell 得到一个shell
DLLinject 上传DLL并注入到进程
Patchup* 修补漏洞
Upexec 上传并执行一个文件
Meterpreter 高级payload
vncinject 高级payload
Passivex 高级payload、
Payloads名称命名规则:
shell_find_tag 在一个已建立的连接上创建一个shell
shell_reverse_tcp 反向连接到主机并创建一个shell
bind_tcp 监听一个tcp连接
reverse_tcp 反向建立tcp连接
reverse_http 通过HTTP隧道通信并创建一个新用户添加到管理组
add_user 创建一个新用户并添加到管理组
xxx_ipv6_tcp 基于ipv6
set PAYLOAD payload_name 设置payload(与exploit一样)
show options 与exploit一样
set RHOST 192.168.0.1 与exploit一样
注:exploit和payload设置完毕 可以对目标主机进行利用了
payloads需要被编码并且变化nop用于躲避IDS或IPS检测 通常nop在payloads前面
----------------------------msfcli接口-----------------------------
(直接在终端运行 不需要进入msf 可理解为msfconsole的快捷方式)
说明:
msfcli接口允许用户从命令行直接执行利用 而不需要先启动msfconsole 适合迅速发动exploit
msfcli -h 查看帮助
S 显示模块信息
P 显示可用payloads
O 显示所有选项
T 列出目标
E 执行利用
例如:
msfcli <exploit_name> S
msfcli <exploit_name> P
msfcli <exploit_name> PAYLOAD=<payload_name> O
msfcli <exploit_name> PAYLOAD=<payload_name> option=value T
msfcli <exploit_name> PAYLOAD=<payload_name> option=value target=number E
------------------------------msfweb接口--------------------------
(msf的网页版)
说明:直接输入msfweb 给出一个msf网页版网址 进入浏览器输入网址就进入了msfweb
网页版模块:
exploits 利用模块 提供搜索功能
auxiliarys 辅助程序模块
payloads payloads模块
console 基于web的控制台 相当于msfconsole
sessions 会话模块 当前的会话信息
options 风格设定
about msfweb版本信息
-------------------------------msfd命令接口-----------------------
msfd工具打开一个网络接口到msfconsole,他可以被指定的IP地址执行,并且监听端口等待进入
的连接,允许一个或多个用户从远程系统连接进msf。
实例:
如下命令将执行msfd监听IP 192.168.0.14和端口55554
msfd -a 192.168.0.14 -p 55554
这时可以从远程系统连接进去,比如Windows系统用NC
nc 192.168.0.14 55554
------------------------msfpayload和msfencode-------------------
msfpayload: (使用户可以在命令行修改现有的payload 需要选定一个特定payload)
-h 列出可用选项
S 显示具体payload的信息
C 输出c程序的格式
P 输出Perl脚本的格式
R 输出Raw格式
CMD 创建在成功利用后要执行的特定命令
实例:(以设置一个dir命令并输出Perl脚本为例)
msfpayload windows/exec(payload名称) CMD=dir P
msfencode: (一个可以直接访问payload编码器的框架)
-l 列出可用编码器
-h 列出可选项
注:用msfpayload是生成raw格式payload的一个简单方法,并可以通过管道输出,直接传递给msfencode
或从文件中读取他,编码确保不良字符不会出现在payload,最终也改进了躲避IDS的能力。
--------------------------数据库后台命令---------------------------
(msf可以支持多种不同的数据库,包括MySQL等,用于探测目标的漏洞和自动利用,并且支持加载amap
,nmap或Nessus扫描报告后,根据目标系统开放端口和可能存在的漏洞进行自动尝试利用)
以下命令均可输入help查看
数据库命令:
db_connect 连接到数据库
db_create 创建数据库
db_destroy 删除数据库
db_disconnect 与数据库断开连接
db_driver 数据库类型
db_add_host 添加一个或多个主机到数据库
db_add_note 添加一个注释到主机
db_add_port 添加一个端口到主机
db_del_host 从数据库删除一个或多个主机
db_del_port 从数据库删除一个端口
db_hosts 列出数据库所有主机
db_nmap 执行Nmap并记录输出 (例如db_nmap -A 192.168.1.15)
db_notes 列出数据库中所有注释
db_services 列出数据库中所有服务
db_vulns 列出数据库中的所有漏洞
db_workspace 转换数据库工作区
db_import_ip_list 引入一个IP列表文件
db_import_nessus_xml 引入一个nessus扫描结果文件
db_import_nmap_xml 引入一个nmap扫描结果文件(-oX)
--------------------------autopwn命令---------------------
(相当于msf exploit的自动操作)
db_autopwn 【选项】:
-h 显示帮助
-t 显示所有匹配的利用模块
-x 选择基于漏洞的模块
-p 选择基于开放端口的模块
-e 运行所有匹配目标的利用程序
-r 用一个反向连接的shell(reverse)
-b 用一个随机端口的绑定shell(bind)
-q 禁用利用程序输出
-l(范围) 只对此范围内的主机进行利用
-X(范围)永远排除此范围内的主机
-PI(范围)只对开放这些的端口的主机进行利用
-PX(范围)永远排除对开放这些端口的主机
-m(范围)只运行名字与正则表达式匹配的模块
-------------------------meterpreter payload--------------------
(meterpreter真正的妙处在于他可以把自身注入到远程系统的漏洞进程,这样可以避免Antivirus检查和取证)
核心命令:
? 帮助菜单
background 当前会话抛到后台
channel 显示动态频道的信息
close 关闭一个频道
exit 终止meterpreter会话
interact 频道交互
irb IRB脚本模式
migrate 转移meterpreter到其他进程
read 从频道读取数据
run 执行一个meterpreter脚本
use 加载一个或多个扩展
write 向频道写数据
文件系统命令:
(与Linux相同)
cat
cd
del
download 下载一个文件或目录
edit 编辑一个文件
。。。。
系统命令:
clearev 清除事件日志
execute 执行一个命令
getpid 取得当前进程ID
getuid 取得服务器运行用户
kill 杀死一个进程
ps 列出进程列表
reboot 重启远程计算机
reg 修改远程注册表
shell 返回一个cmdshell
shutdown 关闭远程系统
sysinfo 取得远程系统的信息
密码数据库命令:
hashdump 获得账号密码
meterpreter命令详细参考:http://www.mo60.cn/post-49.html
标签:web,数据库,db,学习,exploit,模块,msf,MSF,payload From: https://blog.51cto.com/u_15941183/6006331