linux提权的几点小技巧

我其实并不精通Linux渗透,会的那丁点几乎都是跟小白学的,虽然学的很菜。 今天小白在群里发了一个英国的虚拟主机。很显然php的webshell没有权限,那么她是怎么拿到管理权限的?反弹连接呗。不过她说,对于Linux不 精通的人,她个人建议先从vi学起。当然了,现在她写的一些傻瓜化webshell有时一键就能搞定反弹连接。不过本章只讲,如何用vi来旁注服务器上的 其他网站。

一个实际例子(实际上小白用的方法比这个简单的简单多了,不过这篇我们从最菜的开始讲):
网站目录是:

执行命令dir回显得到:

ok,这就是悲剧的前兆。继续dir /var/www/vhosts/回显得到无数的网站的目录名称,直接以XX.com、XX.uk命名,让后面的操作方便了不少。
挑选第一个网站:

发现一个敏感的文件名contact.php
那么下面就是我们的关键人物,vi出场的时候了
说实话,vi虽然菜,但是参数我仍然没学精通。勉强看吧

可惜了,不是MySql的配置文件

回去,继续dir和vi,读到MySql配置文件位置。
下节讲改目录、文件属性或者复制文件


国际上最通用的Linux虚拟主机搭建方式是这样的:

Linux操作系统+Apache网站容器+PHP脚+MySQL数据库
一 个服务器上的网站配置信息显然都储存在Apache的配置文件中。通常Apache会安装在Linux的这个目录下:/usr/local,其 Apache的conf配置文件也会在Apache的目录下,当然,也有的Apache配置文件会单独拿出来,放到例如/etc/httpd/conf /httpd.conf这样的地方。今天我就拿两则cent os系统来说明一下读取配置文件的相关内容。既然前面老大Mr.Cool做了一篇Linux文章了,为了配合其连续性,我最终还是把作者名改成。
第 一则是一个电脑学校自己搭建的虚拟主机。Apache没有安装在/usr/local这个目录下,实际上管理员还对Apache做了userdir的权 限设定,也就是说虽然是Linux+Apache的主机,但是无法直接读取虚拟主机目录以外的文件夹内容。好在exec和system还能用。
这样的话我就用ls命令列目录。
/usr目录翻遍没有找到Apache的踪迹。web的目录是/server
那么我就用ls列/server的目录,最后确定在这里:

回显:

是Apache目录,读取conf里面的配置文件:

得到回显如下(出于隐私保护的原则已隐藏处理):

 

为什么要看这个配置呢?
首先,既然是虚拟主机,那就先要搞明白服务器上都有什么网站吧,目录在哪里。实话说,这个服务器的管理员水平不赖,URLrewrite都配置上了 – –
好吧,人不能夸,一夸尾巴容易翘天上去,他的web目录设置的,相当乱。。。
其次,管理员设置了目录权限,无法直接访问其他目录,那么就用system或者exec来执行command line命令,例如ls,再例如。。。

直接把webshell拷贝到目标网站的目录里。。。好邪恶。。。
好了,第二个是广岛大学研究所的一个服务器
这个大学的服务器依然是花了我不少时间去研究。。。研究所的目的难道就是让别人花老多时间去研究么。。。
服务器上PHP有执行command line的权限,也有直接读取其他目录文件的权限,独立服务器,权限比较宽松。这个大学的服务器上面,我搜索遍了,并没有找到Apache目录。显然我也没有找到配置文件。
原因是,我先入为主的认为Apache的配置文件应该在Apache目录下,没有找到Apache目录,自然找不到Apache的配置文件
其 实这是错误的想法,Apache的配置文件未必就在Apache的目录下,真正的conf配置目录被单独安置在:/etc/httpd这个文件夹里面。 VirtualHost的配置大同小异,我就不贴了。当然了,Apache的log也在这个httpd文件夹下,看着别人还在扫目录,而我已经进来 了。。。。

德国的黑客好可爱。。。
本文没有什么特别的高深技术,无非是一点点个人经历的总结


一些人一直觉得Linux提权是一项高深技术,其实Linux提权并不神秘。总结其步骤,可以简单分为5步:

1,获取webshell
2,具有执行command line权限,并获取Linux的系统版本
3,上传与Linux系统版本对应的漏洞提权脚本至可写可执行的目录下
4,执行提权脚本和反弹连接脚本
5,远程使用command line控制机器

本文所采用的实例仍然是广岛大学研究所的服务器,但是目前为止我并没有提权成功,虽然不是一个成功的实例,但是文章的目的在于说明过程而非说明结果
广岛大学研究所的网站服务器架设环境是:
Cent OS + PHP + Apache + PsotgreSQL
当然这些并不重要,我获得了webshell,并且发现有exec和system函数的权限,这样就好办多了
首先,读取password文件:

获得:

除了root之外,有bash权限的shell分别有

数据库账户line32:postgres

管理员自己的账户line36:ope

Apache是nologin的shell,当然这个似乎并不影响什么,只是看一下而已

顺便w一下

好吧,那么踩点结束。开始正事

执行命令:

回显:

2.6.18的内核,再看:

回显:

Cent OS 5.4的系统确实是2.6.18的内核。但是目前为止没有发现这个RedHat的系统有什么漏洞 – –

传了一个去年的2.6.18的提权脚本到/tmp目录

注意,一般来讲,提权脚本都是放在/tmp目录,原因很简单,目录简单,可写可执行~起名为:2618.c

好了,提权之前,这是一个c文件,是不能像rb或者pl那样直接脚本执行的,我们要先编译:

这样就把/tmp/2618.c编译成了可以执行的文件/tmp/2618了

此时直接执行这个文件就行了

当然,回显提示是失败的

Diagnostic tool for public CVE-2010-3081 exploit — Ksplice, Inc.
(see http://www.ksplice.com/uptrack/cve-2010-3081)

$$$ Kernel release: 2.6.18-164.15.1.el5PAE
$$$ Backdoor in LSM (1/3): checking…not present.
$$$ Backdoor in timer_list_fops (2/3): not available.
$$$ Backdoor in IDT (3/3): checking…not present.

Your system is free from the backdoors that would be left in memory
by the published exploit for CVE-2010-3081.

当然,直接对RedHat发布的Linux系统版本进行内核提权显然不是明智的选择。我的思路是,查找系统中含有漏洞的软件、驱动等,用它们来提权。不幸的是我目前还没成功 – –

文章总结:提权脚本有两点要注意,gcc命令编译无法编译出脚本未必是系统的问题,可能是c脚本本身有问题。如果系统无法gcc出可执行的文件,可以在本地或者其他地方gcc出来,然后直接传上去,直接执行

link:http://hi.baidu.com/h4ckw0rld/blog/item/948a500b32d91b5b42a9ad4b.html

本文摘自网络由网络安全攻防研究室(www.91ri.org) 信息安全小组收集整理.转载本文请著名原文地址及原作者版权信息。