首页 -> 安全研究

安全研究

安全漏洞
Pserv Web服务器多个远程缓冲区溢出漏洞

发布日期:2002-12-01
更新日期:2002-12-04

受影响系统:
Pserv Pserv 2.0 beta5
Pserv Pserv 2.0 beta4
Pserv Pserv 2.0 beta3
Pserv Pserv 2.0 beta2
Pserv Pserv 2.0 beta1
描述:
Pico Server是一款由C语言编写的小型Web服务程序,可运行在多个POSIX兼容平台下。

Pico Server多处对缓冲区边界缺少正确检查,远程攻击者可以利用这些漏洞进行缓冲区溢出攻击,以root用户权限在系统上执行任意指令。

pServ存在多个缓冲区溢出:

* 在流读取过程中存在单字节缓冲区溢出:

pServer在堆栈中为字符串分配1024字节缓冲区,然后尝试读取整块缓冲区大小数据,由于对缓冲区缺少正确检查,如果攻击者发送刚好1024字节大小的数据给服务器,就可以导致EBP(x86)积存器被0覆盖,触发单字节缓冲区溢出,由于pServ以root用户权限运行,精心构建提交数据可能以root用户权限在系统上执行任意指令。

* 请求模式缓冲区溢出:

pServ可接收每行1024字节的请求,但是只分配16字节(根据main.h中的"request.method"定义请求)存储此数据,因此如下请求:

[buffer] / HTTP/1.0

会覆盖1008字节内存,可能允许任意代码执行。

* HTTP协议版本说明缓冲区溢出:

pServ在main.h中对"request.protocolVersion"请求协议版本只分配16字节缓冲区大小,并且没有进行正确检查,就拷贝请求中的数据到小缓冲区,发生缓冲区溢出:

GET / HTTP/1.[buffer]

* User-Agent缓冲区溢出:

pServ对User-Agent只分配了256字节的缓冲区大小,但可以接收1011字请求,允许超长User-Agent请求可导致发生缓冲区溢出:

GET / HTTP/1.0
User-Agent: [buffer]

* 请求解析可能导致缓冲区溢出:

pServ允许一行读取1024字节,然后尝试合并文件路径缓冲区和文档ROOT缓冲区,结果可能导致缓冲区溢出:

GET / HTTP/1.0[\n]

如果文件路径为1010,而Document ROOT路径又是14字节或者超过14字节,可导致内存破坏。精心构建提交数据可导致以root用户权限在系统上执行任意指令。

<*来源:Matthew Murphy (mattmurphy@kc.rr.com
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=103884399831294&w=2
*>

建议:
厂商补丁:

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

http://pserv.sourceforge.net/

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