安全研究

安全漏洞
Surfboard Web Server远程文件泄露漏洞

发布日期:2003-12-01
更新日期:2003-12-05

受影响系统:
Surfboard Surfboard httpd 1.1.8
描述:
BUGTRAQ  ID: 9132

Surfboard是一个简单的WEB服务程序。

Surfboard程序对典型的'../'攻击缺少充分的保护,远程攻击者可以利用这个漏洞以WEB进程权限查看任意文件内容。

Surfboard虽然对URI中'?'符号后的参数进行了类似目录遍历攻击的检查,但是对普通的URI请求却缺少过滤,提交包含多个"../'字符的请求,可绕过WEB限制,以WEB进程权限查看任意文件内容。

另外WEB服务对浏览器的输入请求采用奇怪的模式,在接收到第二个换行符前一直循环等待,因此攻击者可以提交连接,不发送任何数据进行拒绝服务攻击。

<*来源:Luigi Auriemma (aluigi@pivx.com
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=107029675703799&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

Luigi Auriemma (aluigi@pivx.com)提供了如下测试方法:

http://server/../etc/passwd
http://server/../../../etc/passwd

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 第三方补丁

--- surfboard.c 2001-04-11 19:23:36.000000000 +0000
+++ 1.c 2003-11-27 18:38:28.000000000 +0000
@@ -155,7 +155,7 @@
*/
while(1)
{
- while(read(s, &c, 1)<1);
+ if(read(s, &c, 1)<1) break;
if(c=='\r') { continue; }
if(c=='\n' && oldc=='\n') { break; }
oldc=c;
@@ -167,7 +167,7 @@
sprintf(buf, "Asked for %s", rawreq);
log_msg(LOG_DEBUG, buf);

- if(strstr(rawreq, "..")<strstr(rawreq, "?") || strstr(rawreq,
"`")<strstr(rawreq, "?"))
+ if((!strstr(rawreq, "?")&&strstr(rawreq, "..")) || strstr(rawreq,
"..")<strstr(rawreq, "?") || strstr(rawreq, "`")<strstr(rawreq, "?"))
{
log_msg(LOG_ERR, "Relative path and/or shell escape - ATTACK ATTEMPT");
add2header(http_header, "HTTP/1.1 400 Bad Request\r\n");

厂商补丁:

Surfboard
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://surfd.sourceforge.net/

浏览次数:3415
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障