<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Leakon &#187; Security</title>
	<atom:link href="http://www.leakon.com/archives/category/security/feed" rel="self" type="application/rss+xml" />
	<link>http://www.leakon.com</link>
	<description>勤奋 - 创新 - 矢志不渝 - 锲而不舍</description>
	<lastBuildDate>Mon, 06 Feb 2012 02:43:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Apache 漏洞 PHP 文件 上传</title>
		<link>http://www.leakon.com/archives/310?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apache-%25e6%25bc%258f%25e6%25b4%259e-php-%25e6%2596%2587%25e4%25bb%25b6-%25e4%25b8%258a%25e4%25bc%25a0</link>
		<comments>http://www.leakon.com/archives/310#comments</comments>
		<pubDate>Mon, 05 Jan 2009 18:10:18 +0000</pubDate>
		<dc:creator>leakon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[默认分类]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://www.leakon.com/?p=310</guid>
		<description><![CDATA[标题党一下，其实这个不应该算是 Apache 的漏洞。
简述漏洞情况：
有的网站有文件上传功能，尤其是可以上传 rar 文件的。如果文件名是 abc.php.rar，而且这个文件被放在了 http://www.leakon.com/uploads/abc.php.rar，你在地址栏输入这个地址，Apache 就会调用 PHP 模块去解析 abc.php.rar。
为什么会解析呢？
因为 Apache 按照文件扩展名，寻找 handler，比如，如果扩展名是 php，就交给 PHP 模块，如果是 jpg，就会输出 image/jpg 类型 的 http 头。
Apache  [...]]]></description>
			<content:encoded><![CDATA[<p>标题党一下，其实这个不应该算是 Apache 的漏洞。</p>
<p>简述漏洞情况：</p>
<p>有的网站有文件上传功能，尤其是可以上传 rar 文件的。如果文件名是 abc.php.rar，而且这个文件被放在了 http://www.leakon.com/uploads/abc.php.rar，你在地址栏输入这个地址，Apache 就会调用 PHP 模块去解析 abc.php.rar。</p>
<p>为什么会解析呢？</p>
<p>因为 Apache 按照文件扩展名，寻找 handler，比如，如果扩展名是 php，就交给 PHP 模块，如果是 jpg，就会输出 image/jpg 类型 的 http 头。</p>
<p>Apache 有一些已知的文件类型，在 Apache 目录的 conf/mime.types 文件中可以查看。</p>
<p>但这里没有 rar 的 handler，这时 Apache 会把 php 当作 abc.php.rar 这个文件的扩展名！</p>
<p>这个可能是 Apache 的一个解析规则吧，反正在 2.2.4 版本测试是这样的。</p>
<p>最简单的测试方法，写一个文件，内容是：</p>
<p>&lt;?php<br />
phpinfo();<br />
?&gt;</p>
<p>保存为 abc.php.rar，然后上传到你的服务器，看能不能执行吧。</p>
<p>前面我也说过，可能这不应该算是漏洞，只是一个规则，如果把这个规则去掉，可能相当大的一部分网站会因此受到影响。不可否认的，也是具有讽刺意味的是：我们的程序能够正常运行，有时是因为它处在一个有“漏洞”的环境中……</p>
<p>避免问题的方法有很多，比如在 mime 文件中加上 rar 类型的定义，再给 rar 文件加个 handler，再限制 upload 目录的执行权限等等。</p>
<p>我觉得比较好的方法是在服务端检查文件扩展名，如果应用程序需要上传 rar 等类型的文件，建议把文件在服务端改名，写成没有扩展名的字母和数字的组合，然后把原始文件名保存在数据库里，当需要下载的时候，用 http 头声明文件名。</p>
<p>单点处理，可以避免很多后续的相互依赖的安全工作。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leakon.com/archives/310/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

