Metasploit框架提供了可让你用于开发浏览器exploit的不同mixin,主要有[Msf::Exploit::Remote::HttpServer](https://github.com/rapid7/metasploit-framework/wiki/How-to-write-a-browser-exploit-using-HttpServer), Msf::Exploit::Remote::HttpServer::HTML and [Msf::Exploit::Remote::BrowserExploitServer](https://github.com/rapid7/metasploit-framework/wiki/How-to-write-a-browser-exploit-using-BrowserExploitServer). 这篇文章主要涵盖HttpServer mixin.
HttpServer mixin是所有HTTP服务器 mixin的母亲(像 BrowserExploitServer 和 HttpServer::HTML).要使用它,你的模块需要有一个“on_request_uri”方法,这个方法是HTTP服务器收到来自浏览器的HTTP请求时触发的回调。设置“on_request_uri”的例子:
```ruby
#
# Listens for a HTTP request.
# cli is the socket object, and request is a Rex::Proto::Http::Request object
#
def on_request_uri(cli, request)
print_status("Client requests URI: #{request.uri}")
end
```
“on_request_uri”方法也是您可以创建HTTP响应的地方。这里有几个选择可以用来做这一点:
* **send_not_found(cli)** - 发送404到客户端。确保传递cli(套接字)对象。
* **send_redirect(cli, location='/', body='', headers={})** - 将客户端重定向到一个新的位置。
* **send_response(cli, body, headers={})** - 向客户端发送响应。这种方法可能是你大部分时间使用的方法。
如果你看过我们的一些exploit模块,你也可以使用Exploit::Remote::HttpServer::HTML 代替 Exploit::Remote::HttpServer.用法大多相同,区别在于Exploit::Remote::HttpServer::HTML mixin可以让你访问一些Javascript函数,如Base64,heap spraying,OS detection,等。
以下是发送HTTP响应的示例:
```ruby
#
# Sends a "Hello, world!" to the client
#
def on_request_uri(cli, request)
html = "Hello, world!"
send_response(cli, html)
end
```
另请注意,为了处理HTTP请求,它必须包含基本的URIPATH,默认情况下是随机的。这意味着如果你想处理多个URI(如果你需要处理重定向或链接的话可能),你还需要确保它们具有基本的URIPATH。要检索基本的URIPATH,可以使用“get_resource”方法,下面是一个例子:
```ruby
def serve_page_1(cli)
html = "This is page 1"
send_response(cli, html)
end
def serve_page_2(cli)
html = "This is page 2"
send_response(cli, html)
end
def serve_default_page(cli)
html = %Q|
<html>
<a href="#{get_resource.chomp('/')}/page_1.html">Go to page 1</a><br>
<a href="#{get_resource.chomp('/')}/page_2.html">Go to page 2</a>
</html>
|
send_response(cli, html)
end
def on_request_uri(cli, request)
case request.uri
when /page_1\.html$/
serve_page_1(cli)
when /page_2\.html$/
serve_page_2(cli)
else
serve_default_page(cli)
end
end
```
当然,当你编写Metasploit浏览器漏洞的时候,还有很多需要考虑的东西。例如,您的模块可能需要执行浏览器检测,因为允许Chrome浏览器接收IE漏洞是没有意义的。您可能还需要构建特定于目标的负载,这意味着您的模块需要知道它的目标是什么,并且必须构建一个方法来相应地定制漏洞利用等。HttpServer和HttpServer::HTML mixin提供各种方法让你完成所有这些。确保查看API文档(可以通过运行msf / documentation / gendocs.sh,或者只是在msf目录中运行“yard”)或者检查现有的代码示例(特别是最近的代码示例)。
为了使事情开始,您可以始终使用以下模板开始开发浏览器利用:
```ruby
##
# This module requires Metasploit: http://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
include Msf::Exploit::Remote::HttpServer
def initialize(info={})
super(update_info(info,
'Name' => "HttpServer mixin example",
'Description' => %q{
Here's an example of using the HttpServer mixin
},
'License' => MSF_LICENSE,
'Author' => [ 'sinn3r' ],
'References' =>
[
[ 'URL', 'http://metasploit.com' ]
],
'Platform' => 'win',
'Targets' =>
[
[ 'Generic', {} ],
],
'DisclosureDate' => "Apr 1 2013",
'DefaultTarget' => 0))
end
def on_request_uri(cli, request)
html = "hello"
send_response(cli, html)
end
end
```
如果你想仔细看看mixin可以做什么,请看
https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/http/server.rb
- Home
- 开始使用
- 安装metasploit开发环境
- 使用metasploit
- 使用git
- 报告一个bug
- 贡献代码
- 贡献给metasploit
- 创建一个loginscans Metasploit模块
- 接受模块和增强功能的指导
- 常见的Metasploit模块代码错误
- 样式提示
- metasploit提交者
- metasploit开发
- 为什么是ruby
- 样式提示
- 如何开始写一个exploit
- 如何开始写一个辅助模块
- 如何开始写一个post模块
- 如何开始写一个Meterpreter脚本
- 载入外部模块
- exploit rank
- Metasploit模块引用标识符
- 怎么在你的exploit中确认window补丁程序级别
- 如何使用filedropper清理文件
- 如何弃用metasploit模块
- 如何在模块开发中报告或储存数据
- 在metasploit如何使用日志
- 如何在metasploit对JavaScript进行混淆
- 如何解析一个http响应
- 如何使用HTTPClient发送HTTP请求
- 如何使用命令阶段
- 如何使用数据储存选项
- 如何在window后期开发中使用railgun
- 如何在exploit中使用powershell
- 如何使用PhpEXE来利用任意文件上传漏洞
- 如何使用FILEFORMAT mixin创建一个文件格式exploit
- 如何使用BrowserExploitServer编写一个浏览器exploit
- 如何使用HttpServer编写浏览器exploit
- 如何编写一个check()方法
- 如何使用Seh mixin来利用异常处理程序
- 如何在Windows上使用WbemExec进行写入权限攻击
- 如何使用httpserver和httpclient编写一个模块
- payloads如何工作
- 如何免杀
- 如何正确使用metasploit模块