<?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>暖月</title>
	<atom:link href="http://www.nuanyue.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.nuanyue.com</link>
	<description>专注Web应用安全</description>
	<lastBuildDate>Wed, 04 Jan 2012 02:54:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>WebCensor &#8211; 智能Web应用漏洞扫描器</title>
		<link>http://www.nuanyue.com/archives/30.webcensor</link>
		<comments>http://www.nuanyue.com/archives/30.webcensor#comments</comments>
		<pubDate>Wed, 28 Dec 2011 05:27:49 +0000</pubDate>
		<dc:creator>小饭</dc:creator>
				<category><![CDATA[WebCensor]]></category>
		<category><![CDATA[Web应用漏洞扫描器]]></category>

		<guid isPermaLink="false">http://www.nuanyue.com/?p=30</guid>
		<description><![CDATA[一、简介 WebCensor是一款基于Web2.0下的深度安全评估的扫描器，它致力于Web2.0下的应用安全测试和网站安全漏洞的综合扫描分析;它能自动发掘网站交互数据污点，支持网站深度遍历，能覆盖97%以上的网页分析，它优质准确的安全扫描策略，能精确发现漏洞威胁，为安全管理人员提供详细专业的漏洞扫描报告。 二、产品优势 WebCensor的主要优势： （1）网站深度遍历，完整爬行率达97%，保证了扫描的完整性。 （2）扫描频率自动调整，根据实际带宽和网站响应速度进行扫描速度控制，保证了扫描的准确性。 （3）专业的检测策略，其策略在经过测试验证的基础上，使用了去杂算法，排除了常见的干扰因素，保证了策略的针对性准确性。 （4）支持Ajax数据交互分析，支持XMLHttpRequest交互分析，支持JavaScript数据分析 。 （5）丰富的安全策略，支持11大类漏洞扫描。 （6）高效率的检测，低的误报率，支持漏洞自动验证 （7）支持登录验证，朴素详细的安全评估报告 。 三、技术优势 WebCensor的扫描策略制定是个人经验积累和实际扫描想结合，一步一步完善从爬行抓取特征，动态内容结合，关键标签分析等将干扰因素的排除，从实际测试和可回放的检测相互验证，具有更高的准确和易验证等优点，在针对流行的Sql注入和跨站等漏洞，添加了深度分析数据的功能，融合了部分开源工具的渗透测试功能。支持的扫描策略漏洞表如下 高 Sql注入,跨站脚本，文件包含，命令执行，弱口令，路径遍历，LDAP注入，中间件漏洞，源代码泄露，编辑器上传，Xpath注入 中 CSRF,框架注入，Falsh跨域，代码备份，网站管理后台，链接注入，目录可列 低 敏感目录，Web应用程序错误，非正常文件 参考信息 E-Main地址，个人信息 加载以上全部策略，扫描速度大致在1万Url/小时，2M独享宽带环境。 四、可扩展的扫描 WebCensor支持爬行扫描和代理扫描两种模式，爬行扫描是基于爬行引擎的数据，而代理扫描是基于Http Sniffer嗅探的数据。支持Url去重和漏洞检测参数去重，支持扫描速度智能控制。 五、其它工具 WebCensor附带了二款工具，一款是检测类的恶意脚本扫描器，一款是手工测试类的Http Sniffer。恶意脚本扫描器是针对流行的攻击手段而开发的一款检测识别恶意脚本的软件,内置了数据填充，字符变异等特殊算法，识别率高。 Http Sniffer是基于FiddlerCore组件开的一款代理嗅探Http数据包的工具，它支持嗅探截获，编辑发送数据包等功能，也是代理扫描所必须的功能组件。]]></description>
			<content:encoded><![CDATA[<p>一、简介<br />
WebCensor是一款基于Web2.0下的深度安全评估的扫描器，它致力于Web2.0下的应用安全测试和网站安全漏洞的综合扫描分析;它能自动发掘网站交互数据污点，支持网站深度遍历，能覆盖97%以上的网页分析，它优质准确的安全扫描策略，能精确发现漏洞威胁，为安全管理人员提供详细专业的漏洞扫描报告。</p>
<p>二、产品优势<br />
WebCensor的主要优势：<br />
（1）网站深度遍历，完整爬行率达97%，保证了扫描的完整性。<br />
（2）扫描频率自动调整，根据实际带宽和网站响应速度进行扫描速度控制，保证了扫描的准确性。<br />
（3）专业的检测策略，其策略在经过测试验证的基础上，使用了去杂算法，排除了常见的干扰因素，保证了策略的针对性准确性。<br />
（4）支持Ajax数据交互分析，支持XMLHttpRequest交互分析，支持JavaScript数据分析 。<br />
（5）丰富的安全策略，支持11大类漏洞扫描。<br />
（6）高效率的检测，低的误报率，支持漏洞自动验证<br />
（7）支持登录验证，朴素详细的安全评估报告 。<br />
<a href="http://www.nuanyue.com/wp-content/uploads/2011/12/111.jpg"><img src="http://www.nuanyue.com/wp-content/uploads/2011/12/111.jpg" alt="" title="111" width="580" height="657" class="aligncenter size-full wp-image-100" /></a></p>
<p>三、技术优势</p>
<p>WebCensor的扫描策略制定是个人经验积累和实际扫描想结合，一步一步完善从爬行抓取特征，动态内容结合，关键标签分析等将干扰因素的排除，从实际测试和可回放的检测相互验证，具有更高的准确和易验证等优点，在针对流行的Sql注入和跨站等漏洞，添加了深度分析数据的功能，融合了部分开源工具的渗透测试功能。支持的扫描策略漏洞表如下</p>
<div class="block-title">
<h2><strong> 高 </strong></h2>
</div>
<p>Sql注入,跨站脚本，文件包含，命令执行，弱口令，路径遍历，LDAP注入，中间件漏洞，源代码泄露，编辑器上传，Xpath注入</p>
<div class="block-title">
<h2><strong> 中 </strong></h2>
</div>
<p>CSRF,框架注入，Falsh跨域，代码备份，网站管理后台，链接注入，目录可列</p>
<div class="block-title">
<h2><strong> 低 </strong></h2>
</div>
<p>敏感目录，Web应用程序错误，非正常文件</p>
<div class="block-title">
<h2><strong> 参考信息 </strong></h2>
</div>
<p>E-Main地址，个人信息</p>
<p>加载以上全部策略，扫描速度大致在1万Url/小时，2M独享宽带环境。</p>
<p>四、可扩展的扫描<br />
WebCensor支持爬行扫描和代理扫描两种模式，爬行扫描是基于爬行引擎的数据，而代理扫描是基于Http Sniffer嗅探的数据。支持Url去重和漏洞检测参数去重，支持扫描速度智能控制。<br />
<a href="http://www.nuanyue.com/wp-content/uploads/2011/12/222.jpg"><img src="http://www.nuanyue.com/wp-content/uploads/2011/12/222.jpg" alt="" title="222" width="580" height="657" class="aligncenter size-full wp-image-101" /></a><br />
五、其它工具<br />
WebCensor附带了二款工具，一款是检测类的恶意脚本扫描器，一款是手工测试类的Http Sniffer。恶意脚本扫描器是针对流行的攻击手段而开发的一款检测识别恶意脚本的软件,内置了数据填充，字符变异等特殊算法，识别率高。 Http Sniffer是基于FiddlerCore组件开的一款代理嗅探Http数据包的工具，它支持嗅探截获，编辑发送数据包等功能，也是代理扫描所必须的功能组件。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuanyue.com/archives/30.webcensor/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>浅析路径遍历漏洞</title>
		<link>http://www.nuanyue.com/archives/22.webcensor</link>
		<comments>http://www.nuanyue.com/archives/22.webcensor#comments</comments>
		<pubDate>Fri, 23 Dec 2011 05:06:39 +0000</pubDate>
		<dc:creator>小饭</dc:creator>
				<category><![CDATA[技术研究]]></category>
		<category><![CDATA[路径遍历]]></category>

		<guid isPermaLink="false">http://www.nuanyue.com/?p=22</guid>
		<description><![CDATA[许多的Web应用程序一般会有对服务器的文件读取查看的功能，大多会用到提交的参数来指明文件名，形如：http://www.nuanyue.com/getfile=image.jgp 当服务器处理传送过来的image.jpg文件名后，Web应用程序即会自动添加完整路径，形如“d://site/images /image.jpg”，将读取的内容返回给访问者。 初看，在只是文件交互的一种简单的过程，但是由于文件名可以任意更改而服务器支持“~/”，“/..”等特殊符号的目录回溯，从而使攻击者越权访问 或者覆盖敏感数据，如网站的配置文件、系统的核心文件，这样的缺陷被命名为路径遍历漏洞。在检查一些常规的Web应用程序时，也常常有发现，只是相对隐蔽 而已。 发现路径遍历漏洞 路径遍历漏洞的发现，主要是对Web应用程序的文件读取交互的功能块，进行检测，面对这样的读取方式： “http://www.nuanyue.com/test/downfile.jsp?filename=fan.pdf” 我们可以使用 “../”来作试探，比如提交Url：“getfile=/fan/fan/*53.pdf”，而系统在解析是“d://site/test/pdf /fan/fan/../../*53.pdf”，通过“../”跳转目录“/fan”，即“d://site/test/pdf/*53.pdf”，返 回了读取文件的正常的页面。 路径遍历漏洞隐藏一般在文件读取或者展示图片功能块这样的通过参数提交上来的文件名，从这可以看出来过滤交互数据是完全有必要的。恶意攻击者当然后 会利用对文件的读取权限进行跨越目录访问，比如访问一些受控制的文件，“../../../../../../../etc/passwd“或者”.. /../../../boot.ini“，当然现在部分网站都有类似Waf的防护设备，只要在数据中会有/etc /boot.ini等文件名出直接进行拦截。 遍历路径攻击变异 路径遍历漏洞是很常见的，在Web应用程序编写过程，会有意识的对传递过来的参数进行过滤或者直接删除，存在风险的过滤方式，一般可以采用如下方式进行突破： 以下是一些绕过的方法，当然在实际运行过程中，可以组合使用。 (1) 加密参数传递的数据；在Web应用程序对文件名进行加密之后再提交，比如：“downfile.jsp?filename= ZmFuLnBkZg- “，在参数filename用的是Base64加密，而攻击者要想绕过，只需简单的将文件名加密后再附加提交即可。所以说，采用一些有规律或者轻易能识别 的加密方式，也是存在风险的。 (2) 编码绕过，尝试使用不同的编码转换进行过滤性的绕过，比如Url编码，通过对参数进行Url编码提交，“downfile.jsp?filename= %66%61%6E%2E%70%64%66“来绕过。 (3) 目录限定绕过；在有些Web应用程序是通过限定目录权限来分离的。当然这样的方法不值得可取的，攻击者可以通过某些特殊的符号“~“来绕过。形如这样的提 交“downfile.jsp?filename=~/../boot”。能过这样一个符号，就可以直接跳转到硬盘目录下了。 (4) 绕过文件后缀过滤；一些Web应用程序在读取文件前，会对提交的文件后缀进行检测，攻击者可以在文件名后放一个空字节的编码，来绕过这样的文件类型的检 查。例如：../../../../boot.ini%00.jpg，Web应用程序使用的Api会允许字符串中包含空字符，当实际获取文件名时，则由系 统的Api会直接截短，而解析为“../../../../boot.ini”。在类Unix的系统中也可以使用Url编码的换行符，例如：../.. /../etc/passwd%0a.jpg如果文件系统在获取含有换行符的文件名，会截短为文件名。也可以尝试%20，例如: ../../../index.jsp%20 (5) 绕过来路验证。在一些Web应用程序中，会有对提交参数的来路进行判断的方法，而绕过的方法可以尝试通过在网站留言或者交互的地方提交Url再点击或者直 接修改Http Referer即可，这主要是原因Http Referer是由客户端浏览器发送的，服务器是无法控制的，而将此变量当作一个值得信任源是错误的。 防范遍历路径漏洞 在防范遍历路径漏洞的方法中，最有效的是权限的控制，谨慎的处理向文件系统API传递过来的参数路径。主要是因为大多数的目录或者文件权限均没有得 到合理的配置，而Web应用程序对文件的读取大多依赖于系统本身的API，在参数传递的过程，如果没有得严谨的控制，则会出现越权现象的出现。在这种情况 下，Web应用程序可以采取以下防御方法，最好是组合使用。 (1) 数据净化，对网站用户提交过来的文件名进行硬编码或者统一编码，对文件后缀进行白名单控制，对包含了恶意的符号或者空字节进行拒绝。 (2) Web应用程序可以使用chrooted环境访问包含被访问文件的目录，或者使用绝对路径+参数来控制访问目录，使其即使是越权或者跨越目录也是在指定的目录下。 总结 路径遍历漏洞允许恶意攻击者突破Web应用程序的安全控制，直接访问攻击者想要的敏感数据 ，包括配置文件、日志、源代码等，配合其它漏洞的综合利用，攻击者可以轻易的获取更高的权限，并且这样的漏洞在发掘上也是很容易的，只要对Web应用程序 的读写功能块直接手工检测，通过返回的页面内容来判断，是很直观的，利用起来也相对简单。]]></description>
			<content:encoded><![CDATA[<p>许多的Web应用程序一般会有对服务器的文件读取查看的功能，大多会用到提交的参数来指明文件名，形如：http://www.nuanyue.com/getfile=image.jgp</p>
<p>当服务器处理传送过来的image.jpg文件名后，Web应用程序即会自动添加完整路径，形如“d://site/images /image.jpg”，将读取的内容返回给访问者。</p>
<p>初看，在只是文件交互的一种简单的过程，但是由于文件名可以任意更改而服务器支持“~/”，“/..”等特殊符号的目录回溯，从而使攻击者越权访问 或者覆盖敏感数据，如网站的配置文件、系统的核心文件，这样的缺陷被命名为路径遍历漏洞。在检查一些常规的Web应用程序时，也常常有发现，只是相对隐蔽 而已。<br />
发现路径遍历漏洞</p>
<p>路径遍历漏洞的发现，主要是对Web应用程序的文件读取交互的功能块，进行检测，面对这样的读取方式：</p>
<p>“http://www.nuanyue.com/test/downfile.jsp?filename=fan.pdf”</p>
<p>我们可以使用 “../”来作试探，比如提交Url：“getfile=/fan/fan/*53.pdf”，而系统在解析是“d://site/test/pdf /fan/fan/../../*53.pdf”，通过“../”跳转目录“/fan”，即“d://site/test/pdf/*53.pdf”，返 回了读取文件的正常的页面。</p>
<p>路径遍历漏洞隐藏一般在文件读取或者展示图片功能块这样的通过参数提交上来的文件名，从这可以看出来过滤交互数据是完全有必要的。恶意攻击者当然后 会利用对文件的读取权限进行跨越目录访问，比如访问一些受控制的文件，“../../../../../../../etc/passwd“或者”.. /../../../boot.ini“，当然现在部分网站都有类似Waf的防护设备，只要在数据中会有/etc /boot.ini等文件名出直接进行拦截。<br />
遍历路径攻击变异</p>
<p>路径遍历漏洞是很常见的，在Web应用程序编写过程，会有意识的对传递过来的参数进行过滤或者直接删除，存在风险的过滤方式，一般可以采用如下方式进行突破：</p>
<p>以下是一些绕过的方法，当然在实际运行过程中，可以组合使用。</p>
<p>(1) 加密参数传递的数据；在Web应用程序对文件名进行加密之后再提交，比如：“downfile.jsp?filename= ZmFuLnBkZg- “，在参数filename用的是Base64加密，而攻击者要想绕过，只需简单的将文件名加密后再附加提交即可。所以说，采用一些有规律或者轻易能识别 的加密方式，也是存在风险的。</p>
<p>(2) 编码绕过，尝试使用不同的编码转换进行过滤性的绕过，比如Url编码，通过对参数进行Url编码提交，“downfile.jsp?filename= %66%61%6E%2E%70%64%66“来绕过。</p>
<p>(3) 目录限定绕过；在有些Web应用程序是通过限定目录权限来分离的。当然这样的方法不值得可取的，攻击者可以通过某些特殊的符号“~“来绕过。形如这样的提 交“downfile.jsp?filename=~/../boot”。能过这样一个符号，就可以直接跳转到硬盘目录下了。</p>
<p>(4) 绕过文件后缀过滤；一些Web应用程序在读取文件前，会对提交的文件后缀进行检测，攻击者可以在文件名后放一个空字节的编码，来绕过这样的文件类型的检 查。例如：../../../../boot.ini%00.jpg，Web应用程序使用的Api会允许字符串中包含空字符，当实际获取文件名时，则由系 统的Api会直接截短，而解析为“../../../../boot.ini”。在类Unix的系统中也可以使用Url编码的换行符，例如：../.. /../etc/passwd%0a.jpg如果文件系统在获取含有换行符的文件名，会截短为文件名。也可以尝试%20，例如: ../../../index.jsp%20</p>
<p>(5) 绕过来路验证。在一些Web应用程序中，会有对提交参数的来路进行判断的方法，而绕过的方法可以尝试通过在网站留言或者交互的地方提交Url再点击或者直 接修改Http Referer即可，这主要是原因Http Referer是由客户端浏览器发送的，服务器是无法控制的，而将此变量当作一个值得信任源是错误的。<br />
防范遍历路径漏洞</p>
<p>在防范遍历路径漏洞的方法中，最有效的是权限的控制，谨慎的处理向文件系统API传递过来的参数路径。主要是因为大多数的目录或者文件权限均没有得 到合理的配置，而Web应用程序对文件的读取大多依赖于系统本身的API，在参数传递的过程，如果没有得严谨的控制，则会出现越权现象的出现。在这种情况 下，Web应用程序可以采取以下防御方法，最好是组合使用。</p>
<p>(1) 数据净化，对网站用户提交过来的文件名进行硬编码或者统一编码，对文件后缀进行白名单控制，对包含了恶意的符号或者空字节进行拒绝。</p>
<p>(2) Web应用程序可以使用chrooted环境访问包含被访问文件的目录，或者使用绝对路径+参数来控制访问目录，使其即使是越权或者跨越目录也是在指定的目录下。<br />
总结</p>
<p>路径遍历漏洞允许恶意攻击者突破Web应用程序的安全控制，直接访问攻击者想要的敏感数据 ，包括配置文件、日志、源代码等，配合其它漏洞的综合利用，攻击者可以轻易的获取更高的权限，并且这样的漏洞在发掘上也是很容易的，只要对Web应用程序 的读写功能块直接手工检测，通过返回的页面内容来判断，是很直观的，利用起来也相对简单。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuanyue.com/archives/22.webcensor/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>突破本地验证继续上传</title>
		<link>http://www.nuanyue.com/archives/20.webcensor</link>
		<comments>http://www.nuanyue.com/archives/20.webcensor#comments</comments>
		<pubDate>Fri, 23 Dec 2011 05:05:47 +0000</pubDate>
		<dc:creator>小饭</dc:creator>
				<category><![CDATA[技术研究]]></category>
		<category><![CDATA[本地验证]]></category>

		<guid isPermaLink="false">http://www.nuanyue.com/?p=20</guid>
		<description><![CDATA[一、前言 Web应用程序的编写，在满足其功能的同时却鲜有人关注其安全性，从市场上推出的各类Web应用防火墙不难理解，Web应用程序主要面临哪些安全威胁呢？如Sql注入、网页木马、表单绕过、跨站脚本、Xpath注入、口令爆力破解、客户端伪造请求 …等，而其漏洞根源在于开发者完全没有安全意识到而导致的。而本文将和大家讨论本地验证的缺陷，本地验证的最大的优点应该是减轻服务器端的计算负荷，而其带来的安全胁威却足以令服务器沦陷为肉机。 二、突破本地验证 本地验证的方法，一般是使用javaScript脚本简单验证，比如上传格式的验证，输入内容长度的验证，如果服务器端也不进行二次验证的话，易导致恶意攻击者只需在本地稍作修改就可以实现完全意义上的绕过。比如前些年比较流行的上传漏洞，其成因一般是因为对上传的文件类型或者扩展名过滤不严格造成的，导致可以直接或间接上传脚本木马，在检测一网站时，从扫描结果得到一上传网页，如图： 查看页面源代码时，发现判断上传后缀是使用运行在本地的JS代码。代码如下： &#60;script type="text/javascript" language="Javascript1.1"&#62; function validateDictCodeLibForm() //(validateForm ) { var physical = document.getElementById("upF").value; if(physical.length&#62;0){ var length = physical.length; var charindex = physical.lastIndexOf("."); var ExtentName = physical.substr(charindex,4) if(!(ExtentName == ".gif" &#124;&#124; ExtentName == ".png" &#124;&#124; ExtentName == ".jpg" &#124;&#124; ExtentName == ".bmp" &#124;&#124; ExtentName == ".jpeg")) { alert("商家图片只支持.gif/png/jpg/bmp/jpeg四种格式"); return false; } [...]]]></description>
			<content:encoded><![CDATA[<p>一、前言</p>
<p>Web应用程序的编写，在满足其功能的同时却鲜有人关注其安全性，从市场上推出的各类Web应用防火墙不难理解，Web应用程序主要面临哪些安全威胁呢？如Sql注入、网页木马、表单绕过、跨站脚本、Xpath注入、口令爆力破解、客户端伪造请求</p>
<p>…等，而其漏洞根源在于开发者完全没有安全意识到而导致的。而本文将和大家讨论本地验证的缺陷，本地验证的最大的优点应该是减轻服务器端的计算负荷，而其带来的安全胁威却足以令服务器沦陷为肉机。</p>
<p>二、突破本地验证</p>
<p>本地验证的方法，一般是使用javaScript脚本简单验证，比如上传格式的验证，输入内容长度的验证，如果服务器端也不进行二次验证的话，易导致恶意攻击者只需在本地稍作修改就可以实现完全意义上的绕过。比如前些年比较流行的上传漏洞，其成因一般是因为对上传的文件类型或者扩展名过滤不严格造成的，导致可以直接或间接上传脚本木马，在检测一网站时，从扫描结果得到一上传网页，如图：</p>
<p><a href="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-10-30-10-29-35.png"><img class="aligncenter size-full wp-image-41" title="2009-10-30 10-29-35" src="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-10-30-10-29-35.png" alt="" width="540" height="194" /></a></p>
<p>查看页面源代码时，发现判断上传后缀是使用运行在本地的JS代码。代码如下：</p>
<pre class="brush:js">&lt;script type="text/javascript" language="Javascript1.1"&gt;
function validateDictCodeLibForm() //(validateForm )
{
	var physical = document.getElementById("upF").value;
	if(physical.length&gt;0){
		var length = physical.length;
		var charindex = physical.lastIndexOf(".");
		var ExtentName = physical.substr(charindex,4)

		if(!(ExtentName == ".gif" || ExtentName == ".png"
|| ExtentName == ".jpg" || ExtentName == ".bmp" || ExtentName == ".jpeg"))
		{
			alert("商家图片只支持.gif/png/jpg/bmp/jpeg四种格式");
			return false;
		}
	}
	else
	{
		alert("请选择您要上传的商家图片");
		return false;
	}

	return true;
}

	function GetPicPath(obj)
	{
		var physical = document.getElementById(obj).value;
		if(physical.length&gt;0){
			var length = physical.length;
			var charindex = physical.lastIndexOf(".");
			var ExtentName = physical.substr(charindex,4)

			if(!(ExtentName == ".gif" || ExtentName == ".png" || ExtentName == ".jpg" || ExtentName == ".bmp" || ExtentName == ".jpeg"))
			{
				alert("商家图片只支持.gif/png/jpg/bmp/jpeg四种格式");
			}
		}
	}
&lt;/SCRIPT&gt;</pre>
<p>提交表单的代码如下：</p>
<pre class="brush:css">&lt;form name="photoimgForm" method="post" action=
"/photoimgAction.do?method=savePhotoimg"
 enctype="multipart/form-data" onsubmit="return validateDictCodeLibForm()"&gt;</pre>
<p>代码里“action”指的就是提交地址。针对上面简单的利用方法是：</p>
<p>只需要把上传页面保存到本地，扩展名必须是html或者是htm。再为提交地址补全路径，如上面的地址修改成</p>
<p><a href="http://www.xxx.com/photoimgAction.do?method=savePhotoimg">http://www.xxx.com/photoimgAction.do?method=savePhotoimg </a></p>
<p>即代码：</p>
<pre class="brush:applescript">&lt;form name="photoForm" method="post"
action="http://www.xxx.com/photoimgAction.do?method=savePhotoimg"
 enctype="multipart/form-data" onsubmit="return validateDictCodeLibForm()"&gt;</pre>
<p><a href="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-10-30-10-57-58.png"><img class="aligncenter size-full wp-image-42" title="2009-10-30 10-57-58" src="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-10-30-10-57-58.png" alt="" width="540" height="269" /></a></p>
<p>点击“保存”按钮就可以在没有文件名后缀限制能直接上传脚本了。</p>
<p>当然这种方法仅仅是对上传页面后缀为htm或者html的利用。当遇上到动态页面或者有更多限制时，还可以用Firefox的Firebug的插件进行动态调试，如图：</p>
<p><a href="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-11-3-11-23-38.png"><img class="aligncenter size-full wp-image-43" title="2009-11-3 11-23-38" src="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-11-3-11-23-38.png" alt="" width="540" height="474" /></a></p>
<p>可以动态调试JavaScript,添加监控点、断点，进行实时修改过程参数。但这种方法在利用时，可能会有些麻烦多处添加断点。一种更简单的方法是使用Opera浏览器，先启动Opera浏览器访问上传页面，点击查看源代码，如图：</p>
<p><a href="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-11-3-11-04-01.png"><img class="aligncenter size-full wp-image-44" title="2009-11-3 11-04-01" src="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-11-3-11-04-01.png" alt="" width="540" height="385" /></a></p>
<p>修改”.gif”为”.jsp”,再点击左上角的应用，修改过的源代码就已经应用到当前浏览的页面，通过修改javascript的本地验证流程，实行绕过上传。</p>
<p>返回页面直接上传，如图：</p>
<p><a href="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-11-3-11-09-181.png"><img class="aligncenter size-full wp-image-46" title="2009-11-3 11-09-18" src="http://www.nuanyue.com/wp-content/uploads/2011/10/2009-11-3-11-09-181.png" alt="" width="540" height="385" /></a></p>
<p>&nbsp;</p>
<p>三、结束</p>
<p>许多Web程序编写者，都喜欢把一些验证放在客户端，比如上传的后缀格式验证，用户和密码的验证等直接往服务端传送，而在服务端完全没有验证而直接利用。从而导致恶意攻击者只要在本地稍作修改就可以直接绕过本地验证，而本质上这种验证形同虚设，毫无意义。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuanyue.com/archives/20.webcensor/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>绕过单引号继续注入</title>
		<link>http://www.nuanyue.com/archives/18.webcensor</link>
		<comments>http://www.nuanyue.com/archives/18.webcensor#comments</comments>
		<pubDate>Fri, 23 Dec 2011 05:04:06 +0000</pubDate>
		<dc:creator>小饭</dc:creator>
				<category><![CDATA[技术研究]]></category>

		<guid isPermaLink="false">http://www.nuanyue.com/?p=18</guid>
		<description><![CDATA[一、前言 Web应用程序一般都会使用数据库来保存各种信息，比如电子商务网站的帐户信息、销售商品的价格，订单、支付细节、和各种不同的权限等。数据库中的信息的读取、更新、增加或者删除等都是通过SQL来实现的，因此，在数据交互的环节没有安全过滤净化，则可能易于受到SQL注入攻击，严重的可能导致数据库非法操作，但是随着时间的推移，Web应用程序的开发者安全意识的日渐增强，SQL注入漏洞已经呈下降消失状态，但是之前的Web程序在被动防范SQL攻击时，还是略显乏力，或者说是考虑不太周全。比如说普遍使用的过滤关键字的方法，如果仅仅过滤单引号或者小写类的关键字，则极易出现绕过的情形，而国内的安全公司相继推出的硬件WAF是否会存在同样的问题呢？从根本上说硬件WAF基于访问请求流量来鉴别攻击行为，可能在以后的攻防对立也会慢慢显现出被绕过的问题，所有的问题依然存在，安全厂商是否能更全面的考虑呢? 本文试着在注入的SQL语句中不引用单引号，来和大家讨论一下注入攻击的部分原理和技巧。在一次测试中，发现一注入点过滤了单引号和小写的关键字，提交语句如下： &#8216; AND 1=(SELECT @@VERSION)— 去掉单引号再次提交： AND 1=(SELECT @@VERSION)— 成功爆出数据库的系统版本了，说明在处理数据提交时，网站即使过滤了单引号了，依然可以注入。以下将和大家讨论获取数据库名、获取表名、获取列名、获取值等内容的部分SQL语句。 二、绕过单引号 2.1、获取数据库 在Mssql2005的master.dbo.sysdatabases表中存放着SQLSERVER数据库系统中的所有的数据库信息，仅需要PUBLIC权限就可以进行select操作： use master; SELECT * FROM MASTER.DBO.SYSDATABASES 一至四，都是系统自带的数据库名，所以可以通过dbid这个查询变量来一一进行爆出数据库名，提交查询语句： AND 1 IN (SELECT NAME FROM MASTER.DBO.SYSDATABASES WHERE DBID=3) 查询语句通过dbid取值从1至到无法爆出数据库名为至。 2.2、获取表名 在Mssql2005版本里每个数据库都有一个用来存放表名信息的表，其权限同样仅public权限就能查询了,表名为：INFORMATION_SCHEMA.TABLES。 use master ; select * from INFORMATION_SCHEMA.TABLES; 表名就存储在TABLE_NAME列里，通过使用条件查询语句限制型“Top 1”，一条条纪录爆出表名来。 AND 1 IN (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES) 其为爆出的第一条纪录。如想爆出第一条记录，即可以使用sql语法的条件语句“where table_name !=0x已经爆出表名的十六进制”来取内容。先取已爆表名的十六进制。 [...]]]></description>
			<content:encoded><![CDATA[<p>一、前言</p>
<p>Web应用程序一般都会使用数据库来保存各种信息，比如电子商务网站的帐户信息、销售商品的价格，订单、支付细节、和各种不同的权限等。数据库中的信息的读取、更新、增加或者删除等都是通过SQL来实现的，因此，在数据交互的环节没有安全过滤净化，则可能易于受到SQL注入攻击，严重的可能导致数据库非法操作，但是随着时间的推移，Web应用程序的开发者安全意识的日渐增强，SQL注入漏洞已经呈下降消失状态，但是之前的Web程序在被动防范SQL攻击时，还是略显乏力，或者说是考虑不太周全。比如说普遍使用的过滤关键字的方法，如果仅仅过滤单引号或者小写类的关键字，则极易出现绕过的情形，而国内的安全公司相继推出的硬件WAF是否会存在同样的问题呢？从根本上说硬件WAF基于访问请求流量来鉴别攻击行为，可能在以后的攻防对立也会慢慢显现出被绕过的问题，所有的问题依然存在，安全厂商是否能更全面的考虑呢?<br />
本文试着在注入的SQL语句中不引用单引号，来和大家讨论一下注入攻击的部分原理和技巧。在一次测试中，发现一注入点过滤了单引号和小写的关键字，提交语句如下：<br />
&#8216; AND 1=(SELECT @@VERSION)—</p>
<p>去掉单引号再次提交：<br />
AND 1=(SELECT @@VERSION)—</p>
<p>成功爆出数据库的系统版本了，说明在处理数据提交时，网站即使过滤了单引号了，依然可以注入。以下将和大家讨论获取数据库名、获取表名、获取列名、获取值等内容的部分SQL语句。</p>
<p>二、绕过单引号</p>
<p>2.1、获取数据库</p>
<p>在Mssql2005的master.dbo.sysdatabases表中存放着SQLSERVER数据库系统中的所有的数据库信息，仅需要PUBLIC权限就可以进行select操作：<br />
use master;<br />
SELECT * FROM MASTER.DBO.SYSDATABASES</p>
<p>一至四，都是系统自带的数据库名，所以可以通过dbid这个查询变量来一一进行爆出数据库名，提交查询语句：<br />
AND 1 IN (SELECT NAME FROM MASTER.DBO.SYSDATABASES WHERE DBID=3)</p>
<p>查询语句通过dbid取值从1至到无法爆出数据库名为至。</p>
<p>2.2、获取表名</p>
<p>在Mssql2005版本里每个数据库都有一个用来存放表名信息的表，其权限同样仅public权限就能查询了,表名为：INFORMATION_SCHEMA.TABLES。<br />
use master ;<br />
select * from INFORMATION_SCHEMA.TABLES;</p>
<p>表名就存储在TABLE_NAME列里，通过使用条件查询语句限制型“Top 1”，一条条纪录爆出表名来。<br />
AND 1 IN (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES)</p>
<p>其为爆出的第一条纪录。如想爆出第一条记录，即可以使用sql语法的条件语句“where table_name !=0x已经爆出表名的十六进制”来取内容。先取已爆表名的十六进制。</p>
<p>再提交语句如下：<br />
AND 1 IN (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME!=0x41006400760065007200740069007A0065007200)</p>
<p>成功爆出第二个表名，剩下的以此类推。当然读取数据库的INFORMATION_SCHEMA.TABLES表内容，只是当前数据库的表名，如果要读取整个数据库的表名，可以读sysobjects表的name列名，原理同上。</p>
<p>2.3、获取列名</p>
<p>在获取表名，得到列名是注入的下一个关键问题，在MSSQL 2005的数据库里，有张表名sys.all_objects里存放着表与列的信息，其表的列名object_id里存放着一个数值，对应着另一表名sys.all_columns里的列名ID,而sys.all_columns表里存放着列的信息。执行：<br />
Select * from sys.all_objects</p>
<p>由上图可知，列名name和列名object_id是有对应的。在注入时，可以通过指定name值来指定爆表的object_id的值。提交：<br />
AND 999999&lt; (SELECT TOP 1 CAST([OBJECT_ID] AS NVARCHAR(20)) FROM SYS.ALL_OBJECTS WHERE NAME=0x43006C00690063006B0049005000)—</p>
<p>以上语句是无法直接爆出数值来的，但是可以用折半法来进行猜解，由于其数值都在10位以上，所以，其法也不太可能，但是可以联合两张表来直接查询。再次提交：<br />
AND 9 in (SELECT B.NAME FROM SYSOBJECTS A,SYSCOLUMNS B WHERE A.ID=B.ID AND A.NAME=0x43006C00690063006B0049005000)—</p>
<p>已经爆出表名0x43006C00690063006B0049005000的第一个列名ID了，可以加入条件”and B.NAMe != 0x已经爆出的列名”， 类推可以依次爆出。<br />
AND 9 in (SELECT B.NAME FROM SYSOBJECTS A,SYSCOLUMNS B WHERE A.ID=B.ID AND A.NAME=0x43006C00690063006B0049005000 AND B.NAME!=0&#215;49004400)—</p>
<p>2.4、获取值</p>
<p>在获取了表名和列名之后，获取其值也是很简单的。比较常用的有比如这样的获取值的：<br />
Test.asp?id=1 AND 77= (SELECT ascii(@@VERSION))<br />
Test.asp?id=1 AND 1=2 UNSION SELECT 1,2,3..@@VERSION&#8211;…<br />
一种是爆错对比，一种是union操作。第一种是基于查询后值的对比，而union操作是将执行返回的结果直接在浏览器显示，从而避免繁琐的折半猜测，在使用union操作时，前提则是前后查询的两种结果的结构相同，即是列名数相同，可以通过“order by 列名数“来鉴别。<br />
order by 1—<br />
order by 2<br />
…<br />
Order by 8—<br />
此时，返回错误页面，即说明列名数是8，执行语句：<br />
Unsion select 1,2,3,4,5,6,7,8—<br />
来取出纪录。</p>
<p>三、总结</p>
<p>防范SQL注入攻击，尽管不同的数据库也会有不同的攻击技巧，复杂程序也各不相同，而许多SQL注入防范措施仅仅从某一处着手或者部分有效，从一个安全整体的角度立体的防护或许是值得借鉴的方法，比如从代码逻辑层、数据库层、网络层、系统层等，从本文阐述的原理来看，下次针对数据库的安全加固，你是否会调整一下“SYSOBJECTS、SYSCOLUMNS”等表的权限呢？好像数据库批量挂马也有用到这两个表哦！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuanyue.com/archives/18.webcensor/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>恶意脚本扫描器发布测试版本</title>
		<link>http://www.nuanyue.com/archives/16.webcensor</link>
		<comments>http://www.nuanyue.com/archives/16.webcensor#comments</comments>
		<pubDate>Fri, 23 Dec 2011 05:02:24 +0000</pubDate>
		<dc:creator>小饭</dc:creator>
				<category><![CDATA[恶意脚本]]></category>

		<guid isPermaLink="false">http://www.nuanyue.com/?p=16</guid>
		<description><![CDATA[相比较之前的版本，做了以下更新， （1）添加了对Jsp类木马的war的文件，支持拷贝自解压检测。 （2）添加了可疑率来帮助鉴别恶意脚本类木马，一般大于60%的即可认为木马。 （3）添加了对php木马字符类变异的检测。 （4）添加了对php无字母类型木马的检测。 下一个版本将更新数据填充算法。]]></description>
			<content:encoded><![CDATA[<p>相比较之前的版本，做了以下更新，<br />
（1）添加了对Jsp类木马的war的文件，支持拷贝自解压检测。<br />
（2）添加了可疑率来帮助鉴别恶意脚本类木马，一般大于60%的即可认为木马。<br />
（3）添加了对php木马字符类变异的检测。<br />
（4）添加了对php无字母类型木马的检测。</p>
<p>下一个版本将更新数据填充算法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nuanyue.com/archives/16.webcensor/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

