PHP 是一种HTML内嵌式的语言(类似 IIS 上的 ASP)。而PHP独特的语法混合了C、Java、Perl 以及 PHP 式的新语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。PHP 的功能十分强大,但同时 PHP的漏洞也是很多的。
1. phpMyAdmin 执行任意命令漏洞
漏洞描述:
phpMyAdmin 是一个免费工具,为管理MySQL提供了一个WWW接口。phpMyAdmin中存在一个输入验证错误,允许远程攻击者执行任意命令。攻击者可能获取敏感信息或者以HTTPED运行身份执行任意命令。问题是在“tbl_copy.php” 和 “tbl_rename.php”中的下列代码中:
tbl_copy.php : eval("\$message = \"$strCopyTableOK\";");tbl_rename.php : eval("\$message =\"$strRenameTableOK\";");
如果用户可以控制$strCopyTableOK 或 $strRenameTableOK 的内容,就可能利用 eval()执行任意代码。
但是直接利用:http://victim/phpmyadmin/tbl_copy.php?strCopyTableOK=".passthru('cat%20/etc/passwd')."这样的
URL并不能真正执行cat命令。这是因为在执行eval()函数之前,phpMyAdmin会检查mySQL请求是否正常返回,如果没有正常返回,程序会终止。因此,攻击者首先必须有一个允许创建表的数据库。
攻击者可以使用下列URL来在“test”库中创建一个表(haxor):
http://victim/phpmyadmin/tbl_create.php?db=test&table=haxor&query=dummy+integer+primary+key+auto_increment&submit=1
这样攻击者就可以进行真正的攻击了:
http://victim/phpmyadmin/tbl_copy.php?db=test&table=haxor&new_name=test.haxor2&strCopyTableOK=".passthru('cat%20/etc/passwd').
防范措施:
临时解决方法:在“tbl_copy.php”和“tbl_rename.php”中的问题行(包含eval函数的行)前面加“#”来注释掉问题行。目前厂商还没有提供补丁或者升级程序。
2. PHPNuke 插入SQL语句漏洞
漏洞描述:
PHP-Nuke是一个使用PHP开发的WEB站点创建和维护工具,它所带的某些脚本不能正确检查用户输入,这可能导致改变脚本的预期行为,泄漏数据库信息或者造成其他进一步的危害。下面是有问题的脚本:
'reviews.php'http://target/reviews.php?id=12345 or ........
防范建议:目前厂商还没有提供补丁或者升级程序,建议使用此软件的用户随时关注厂商的主页以获取最新版本:http://www.ncc.org.ve/php-nuke.php3?op=english。
3. phpBB 远程SQL查询处理漏洞
漏洞描述:
phpBB是一个免费开放源代码且很容易使用的WEB论坛软件。由于phpBB没有正确处理用户的输入,导致恶意用户可能通过构造一个特殊的请求使自己升级为论坛的超级管理员。
在prefs.php中存在的一个漏洞是可能使用户执行任意的SQL请求。攻击者只需要在$viewmail变量中输入特定的SQL语句即可。以下是有问题的代码(prefs.php):
$sql = "UPDATE users SET user_viewemail='$viewemail', user_theme='$themes', user_attachsig = '$sig',user_desmile = '$smile', user_html = '$dishtml', user_bbcode= '$disbbcode', user_lang = '$lang' WHERE (user_id ='$userdata[user_id]')";
防范措施:
在prefs.php的51行后增加以下代码: fviewemail = str_replace('=','',$viewemail);$fthemes = str_replace('=','',$themes);$fsig = str_replace('=','',$tsig);$fsmile = str_replace('=','',$smile);$fdishtml = str_replace('=','',$dishtml);$fdisbbcode = str_replace('=','',$disbbcode);$flang = str_replace('=','',$lang);$sql = "UPDATE users SET user_viewemail='$fviewemail',user_theme='$fthemes',user_attachsig = '$fsig',user_desmile = '$fsmile',user_html ='$fdishtml',user_bbcode = '$fdisbbcode',user_lang = '$flang' WHERE (user_id='$userdata[user_id]')"
目前厂商还没有提供补丁或者升级程序,建议使用此软件的用户随时关注厂商的主页以获取最新版本(http://www.phpbb.com/)。