-
Notifications
You must be signed in to change notification settings - Fork 3
怎么使用 FILEFORMAT mixin 来创建文件格式 Exploit
Msf::Exploit::FILEFORMAT
是用于创建文件格式漏洞的 mixin. mixin 中实际上并没有太多, 但最重要的方法是 file_create
:
顾名思义, file_create
方法允许你创建文件. 你应该使用这种方法, 因为它不仅仅是将数据写入磁盘. 它所做的一件重要的事情就是它将文件创建以 #{ltype}.localpath
的格式报告给数据库, 并且文件将始终写入 Msf::Config.local_directory
中定义的 Metasploit 本地目录 (默认情况下这个路径是 ~/.msf4/local
), 它使文件保持良好和有条理.
要使用 mixin, 首先在 Metasploit3 类的范围内包含 Msf::Exploit::FILEFORMAT
:
include Msf::Exploit::FILEFORMAT
下面是一个使用 file_create
虚构的漏洞利用示例:
# 这是虚构的 exploit
buf = ""
buf << "A" * 1024
buf << [0x40201f01].pack("V")
buf << "\x90" * 10
buf << payload.encoded
file_create(buf)
Msf::Exploit::FILEFORMAT
默认情况下, mixin 具有已注册的 FILENAME
数据存储选项, 它实际上是可选的. 如果没有提供文件名, mixin 将按以下格式设置名称: "exploit.fileformat.#{self.shortname}"
, 其中 self.shortname
表示模块名称的较短版本.
如果你希望设置一个默认值 (但仍可由用户更改) , 那么你只需在模块中再次注册它, 如下所示:
register_options(
[
OptString.new('FILENAME', [true, 'The malicious file name', 'msf.jpg'])
], self.class)
有时, 你可能根本不希望你的用户更改文件名. 一个懒惰的技巧是在运行时修改 FILENAME 数据存储选项, 但非常不推荐这样做. 事实上, 如果你这样做, 你就不会通过 msftidy. 相反, 这是正确完成的方式:
1 - 取消注册 FILENAME
选项
deregister_options('FILENAME')
2 - 接下来, 覆盖 file_format_filename
方法, 并使其返回你想要的文件名:
def file_format_filename
'something.jpg'
end
3 - 最后, 请在模块说明中对此进行说明.
https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/fileformat.rb
https://github.com/rapid7/metasploit-framework/tree/master/modules/exploits/windows/local