声明:本文介绍的内容仅用于学习和研究目的,请勿用做非法用途。
SUID代表set user ID,允许用户以指定用户的权限执行文件。例如,Linux ping命令通常需要root权限以便能够打开raw sockets。通过将ping程序标记为SUID,低权限用户执行时,ping将以root权限执行。
如下图,'s’代表设置了SUID位:
SUID位不应该设置给任何的文件编辑程序,因为攻击者可以利用修改系统任何文件。
- 利用漏洞SUID程序获得root访问
查看当前用户权限:
查找设置了suid位的可执行程序:
find / -perm -u=s -type f 2>/dev/null
可以看到nmap设置了suid位。
在nmap旧的版本中,可以以交互式模式运行nmap,此时可以逃逸到shell,如果nmap设置了SUID位,将以root权限运行shell。
nmap --interactive
!sh
从上图,可以看到利用设置了suid位的nmap进入shell后,普通用户的权限提升为了root。
- 应对措施:
1、SUID位不能设置给任何能够进入shell的程序。
2、不要对任何的文本编辑/编译/解释器设置SUID位,因为攻击者可以利用攻击者可以轻易的读/重写任何系统文件。