Linux提权总结
2020-07-17 11:01:52 Author: xz.aliyun.com(查看原文) 阅读量:679 收藏

0x01 利用内核栈溢出

利用已知的漏洞,如脏牛等。

0x02 密码提权

首先需要介绍两个文件 /etc/passwd/etc/shadow
1. /etc/passwd
passwd 文件储存了用户的具体信息,全用户可读,root可写

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

由冒号分割,第一列是用户名(daemon);
第二列是密码,x表示密码的hash值保存在shadow文件中
第三列是UID
第四列是GID
第五列是用户全名或本地账号
第六列是home目录
第七列是登录之后使用的终端命令

passwd文件是可写的,如果将密码X替换成我们自己的hash,就可以改变目标的root密码

2. /etc/shadow
shadow文件只有root可读,可以将这个文件的值取出来后用 hashcat、john爆破

root:$6$JNHsN5GY.jc9CiTg$MjYL9NyNc4GcYS2zNO6PzQNHY2BE/YODBUuqsrpIlpS9LK3xQ6coZs6lonzURBJUDjCRegMHSF5JwCMG1az8k.:18134:0:99999:7:::

同样以分号分割,第一列是用户名称(root)
第二列是加密后的密码($6$JNHsN5GY.jc9CiTg$MjYL9NyNc4GcYS2zNO6PzQNHY2BE/YODBUuqsrpIlpS9LK3xQ6coZs6lonzURBJUDjCRegMHSF5JwCMG1az8k.)
第三列是最近改动密码的日期(18134)
第四列是密码不可被变更的天数:设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是0的话,则表示没有限制
第五列是密码需要重新变更的天数:如果是99999,则表示没有限制
第六列是密码过期预警天数(7)
第七列是密码过期的宽恕时间
第八列是账号失效时间
第九列是保留的

0x03 密码复用

如数据库、后台web密码,可能就是root密码

0x04 sudo滥用

sudo是平常用来提权的命令,当执行权限不够时,可以用这个命令来提升权限。其配置文件是 /etc/sudoers,这个文件中记录了可以执行sudo的用户、定义应用程序是否可以root访问、是否需要密码验证。

sudo -l这个命令可以查看有哪些命令可以执行,即不需要知道用户密码,只需验证自身权限的密码即可

如上图所示,可以用cat命令提升为root权限

0x05 定时任务

可以使用pspy64查看系统后台任务执行状况
比如找到下图这个定时任务

根据这个UID1183,结合/etc/passwd 可以找到执行这个脚本的用户(vanshal)
接下来可以在这个脚本中写入反弹shell

在backup.sh中写入反弹shell

在kali监听

成功提权为vanshal

0x06 SUID

参考链接:【安全科普】Linux提权——利用可执行文件SUID
SUID 是一种特殊的文件属性,允许用户以该文件的拥有者的身份运行
查找SUID文件

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

例如,下图找到了一个 /scripts/find 文件具有s属性

ls -l /scripts/find 查看find

可以看到这是属于nightfall的

利用suid执行时可以获取文件所有者权限的特性,获得nightfall
/scripts/find . -exec "/bin/sh" -p \;

-exec:将find内容放到后面的指令执行
/bin/sh:执行sh
-p:用文件的所有者权限执行sh
\; :用分号转义


得到了nightfall权限

0x07 参考链接

  1. Linux 提权的各种姿势总结
  2. Linux下/etc/passwd 和/etc/shadow详解
  3. linux /etc/passwd文件各参数的意义

文章来源: http://xz.aliyun.com/t/7998
如有侵权请联系:admin#unsafe.sh