我们一个一个地看,结果在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在http://www.70edu.com上公布出来了。我们利用代码下载后实际测试一下漏洞,看看效果如何。
实践漏洞测试
我们把利用代码保存在Fedora机器上,如图6所示,然后我们找一个目标,Google一下后找到了一个地址http://121.16.39.90。
利用rgod的利用程序,
我
们输入
“php mybb.php 121.16.39.90 /mybb/ -
d”,
即可得到用户名为admin密码为lovejq。
用获得的
用户名和密码,
即可以Admin身份成功登录论坛,
如
图7
所示,
再点击画线部分即可进入论坛后台。
图6
图7总结
本文最重要的部分是利用了$_SERVER变量中HTTP_X_FORWARDED_FOR没有充分过滤和PHP 5本身的特性来入侵的。本文之后,PHP的SQL注入部分就差不多结束了。总结一下,其实所谓的注入就是用户提交的变量没有得到充分的过滤就带入到了MySQL中查询,进而可以让我们进入后台,拿到系统权限等。大家可以参考本期我写的《入侵Windows 2003系统》,
就是成功地利用PHP注入漏洞拿到系统权限的。一句话,只要是客户端的输入,就都是有害的。奉劝各位写程序的朋友们,还是多想想如何过滤变量吧。
下期我们将继续讲解PHP中的远程代码执行漏洞和PHP本身程序的弱点导致的漏洞,这部分的内容就又上一个台阶了,希望大家不要错过哦。