教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

PHP漏洞挖掘-SQL注入漏洞(二)

来源:网络收集 时间:2026-09-15
导读: 适合读者:入侵爱好者前置知识:PHP、Linux PHP漏洞挖掘之旅—— (二)SQL注入漏洞 文/图 cnbird[H.U.C]河北泊头杨宁 大家好,我是cnbird,很高兴又可以在挖掘PHP漏洞系列中和大家见面,不知看了前两期以后感觉如何啊?是不是已经挖掘到了属于自己的PHP漏洞

适合读者:入侵爱好者前置知识:PHP、Linux

PHP漏洞挖掘之旅——

(二)SQL注入漏洞

文/图 cnbird[H.U.C]河北泊头杨宁

大家好,我是cnbird,很高兴又可以在挖掘PHP漏洞系列中和大家见面,不知看了前两期以后感觉如何啊?是不是已经挖掘到了属于自己的PHP漏洞呢?如果发现了什么好漏洞,记得告诉我一声哦,让我也能分享大家的快乐。

废话不多说,下面开始我们的挖掘之旅,继续讲

解PHP漏洞系列中最重要的部分——SQL注入。上期

我们讲的是普通变量没有过滤的,本次我们将提高一个层次,重点说说$_SERVER变量的注入。

前期基础知识

在介绍$_SERVER注入之前,我们还要重复的唠叨一下GPC的设置问题,因为这是SQL注入的关键所

在。magic_quotes_gpc选项是PHP中的一个重要安全设置,当该选项为ON,也就是打开的时候,所有从Get、Post、Cookie传递过来的数据中的“'”“、"”“、\”,以及NULL等元字符都会被自动的加上“\”实现转义。这个选项使得SQL注入、插入代码以及XSS中引入字符串或者改变程序流程变得困难。但是在PHP5中,一些特殊变量的存在使得在某些情况下,还是会被恶意用户引入元字符到数据库以及程序中。

PHP中的变量除了来源于$_GET、$_POST、$_Cookie的提交之外,还来源于$_SERVER、$_ENV、$_SESSION等,其中$_ENV和$_SESSION我们不能很方便地控制和自由提交,所以只剩下一个$_SERVER变量了。而$_SERVER变量包括的内容除了来自服务器本身外,还有很大一部分来源于用户提交的HTTP请求,比如下面的代码。

如上的变量在PHP5.0以下是受magic_quotes_gpc选项影响的,当magic_quotes_gpc选项为ON时,该数组中的元字符等内容就会做转义处理;为OFF时,用户的提交就会不做任何处理,直接送到数组中。现在的大部分稍安全一点的程序都已经注意到$_GET、$_POST以及$_Cookie的危险性。以下的内容摘自Discuz!的变量初始化时的代码。

很好,已经注意到来自$_GET、$_POST、$_FILES以及$_Cookie的变量的安全性,但是$_SERVER变量呢?尽管在magic_quotes_gpc为ON的情况下,这些变量可能受到保护。但是很明显,忽视$_SERVER的结果就是安全隐患的增加,你就可以去寻找程序取得$_SERVER的地方,很可能就是脆弱点了!

所以,我们要注意任何的从客户端输入的变量,

因为所有的输入都是有害的。

PH

PBB这方面做得很好,

如图1所示,

在PHPBB的common.php中的第100~161

行,把所有的输入,不管是$_GET、$_POST、$_SERVER等变量都做了过滤处理。

现在,防止SQL注入,大家普遍使用的方式是用

addslashes()函数和intval()函数,下面我就简单介绍一下这两个函数。

addslashes()的函数原形是string addslashes(stringstr),返回字符串,该字符串为了数据库查询语句等的需要,而在某些字符前加上了反斜杠。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL字符)。

一个使用addslashes()的例子是当你要往数据库中输入数据时。例如,将名字O'reilly插入到数据库中,这就需要对其进行转义。大多数据库使用“\”作为转义符:O\'reilly,这样就可以将数据放入数据库中,而不会插入额外的“\”。当PHP指令magic_quotes_sybase被设置成ON时,意味着插入“'” 时将使用“'\”进行转义。

默认情况下,PHP 指令magic_quotes_gpc为ON,它主要是对所有的Get、Post和Cookie数据自动运行addslashes()。不要对已经被magic_quotes_gpc转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时,我们可以使用函数get_magic_quotes_gpc()进行检测。

intval()的函数原形为int intval(mixed var, int[base]);,可将变量转成整数类型。可省略的参数base是转换的基底,默认值为10。转换的变量var可以为数组或类之外的任何类型的变量。

以上就是我们详细记录的基础知识了,下面我们结合一个漏洞程序来详细地讲解$_SERVER[]注入漏洞。

图1

详细分析$_SERVER注入

今天的程序主角是MyBulletinBoard,也就是MyBB,一套基于PHP+MySQL搭建的功能强大高效的开源论

坛系统。在国外使用的比较多,在Google搜索大概有150多万个网站采用这套程序。如图2所示是其界面,

很简洁,但是功能非常全面。

图2

下面我们就来具体分析一下MyBB的漏洞。按照以前我们在Linux下挖掘PHP漏洞的步骤,先下载源代码并安装好,之后输入“grep –n –r ‘\$_POST’ *”,如图3所示。结果很多,仔细看了一下,发现有几个提交的变量,如fid、tid、pid、uid、eid。用“grep -n -r '\$_POST' * | grep pid”查找了几个,没有发现明显的漏洞;再看一下$_GET和$_COOKIE等变量,

也没有明

显的漏洞。

忽然眼睛一亮,

在MyBB主目录下的inc/functions.php的1219处出现了传说中的HTTP_X_FORWARDED_FOR,

如图4所示,

这里或许我们可以进行注

入的。

图3

图4

尽管在magic_quotes_gpc为ON的情况下,这些变量可能受到保护,但是很明显,忽视$_SERVER的结果

就是安全隐患的增加,就可以去寻找程序取得$_SE

RVER的地方,很可能就是脆弱点了!由于很多程序本身就疏于对$_SERVER变量的防范,所以我们只要绕过PHP本身对“'”的转义就可以了。在PHP4中,如果magic_quotes_gpc为OFF的话就不用管了,但是如果magic_quotes_gpc为ON的话,我们几乎就无法再操作下去了!但这种情况在PHP5中获得了彻底的改观,在测试中我发现,PHP5中无论magic_quotes_gpc是ON还是OFF,对$_SERVER变量都不会做转义处理的。这意味着我们可以很轻松地带进程序“'”“、"”和NULL字

符,这对于那些变量过滤不严格的程序来说是致命的!

我们继续分析代码,用vi打开inc/functions.php文

件,

输入Esc,

然后点1219就来到了第1219行,

其主要

作用是得到客户的IP地址。

继续往下看,

到了1292行,

我们找到了一个getip()函数,

如下所示。

在Fedora的命令中输入“grep –n

–r

‘getip’

*”

,我们看看都什么地方用到了这个函数。结果如图5所示。

图5

我们一个一个地看,结果在inc/class_session.php文件中发现了问题,存在问题的代码如下。

大家仔细看最后一句代码“$query = $db->query("SELECT sid,uid FROM ".TABLE_PREFIX."sessions

WHERE sid='".$this->sid."' AND ip='".$this->ipaddress."'");”,这里把我们从客户端得到的IP地址未经过任何过滤(其实人家做了检测了,只不过检测的是IP地址是否合法而已,与没过滤一个样)就带入MySQL查询了!呵呵,比普通注入更高级的注入漏洞就这样出现了。我们接下来要做的事,就是上传类似如下的代码。

上面的POST代码是该漏洞利用程序的一部分,

已由rgod在上公布出来了。我们利用代码下载后实际测试一下漏洞,看看效果如何。

实践漏洞测试

我们把利用代码保存在Fedora机器上,如图6所示,然后我们找一个目标,Google一下后找到了一个地址http://121.16.39.90。

利用rgod的利用程序,

们输入

“php mybb.php 121.16.39.90 /mybb/ -

d …… 此处隐藏:2298字,全部文档内容请下载后查看。喜欢就下载吧 ……

PHP漏洞挖掘-SQL注入漏洞(二).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/136910.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)