Apache,IIS等多种http服务器允许通过发送回车符伪造日志

/ns/ld/softld/data/20011124014434.htm

原创:tombkeeper(tombkeeper)
来源:tombkeeper@126.com in whitecell.org

Apache,IIS等多种http服务器允许通过发送回车符伪造日志

发现时间:2001.11.15
发现者:tombkeeper@126.com in whitecell.org

描述:
多数http服务器在收到包含%0d%0a的请求时会解析为回车并在日志中换行,利用这
一特性可以伪造日志。

详细:
大多数http服务器都支持形如%00编码方式的请求,主要目的是提供可靠的双字节信
息的传输。但在记录日志时记录的是解码后的请求而不是原始请求。这就导致了一个安全
问题:入侵者可以通过发送%0d%0a或%u0d0a在日志中产生换行,从而可以伪造日志,使
入侵行为淹没在大量虚假日志中,难于找到真正的入侵者,给入侵分析带来困难。

例如,对于Win32版的Apache,我们可以发送如下请求:
GET /index.htm%0d%0a[Thu%20Nov%2044%2066:88:66%202666]%20[error]%20[client%20666.999.666.999]%20File%20does%20not%20exist:%20c:/web/index.html HTTP/1.1
这个日志会把管理员吓坏的。

因为IIS在日志中把所有空格都记录为“+”,所以就有一点困难,但可以用其他不可
见字符来代替,如%00、%ff、%7f等,完全可以欺骗绝大多数日志分析工具。

在请求中用多个%0d%0a甚至可以逼真的模拟一次CGI扫描,或者也可以把一篇《岳阳
楼记》写到日志里

*UNIX系统未作测试,可能需要使用%0a来作为换行。

解决方案:
暂无,请连系服务器软件提供商。