WebInspect:强大的网页程序扫描器

安全
SPI Dynamics' WebInspect应用程序安全评估工具帮你识别已知和未知的网页层漏洞。它还能检测到Web服务器的配置属性,以及进行常见的网页攻击,例如参数注入、跨网站脚本、目录游走等等。

SPI Dynamics' WebInspect应用程序安全评估工具帮你识别已知和未知的网页层漏洞。它还能检测到Web服务器的配置属性,以及进行常见的网页攻击,例如参数注入、跨网站脚本、目录游走等等。

下载试用版链接:https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&cp=1-11-201-200^9570_4000_313

>>去网络安全工具百宝箱看看其它安全工具

有趣的WebInspect的加密方法

从去年开始,我开始关注这款优秀的WEB application漏洞扫描软件,这东西除了速度比较慢以外,其它的功能真是不错。我当时研究了一下,被它的用来验证license的那几个dll给吓住了,里面霍然写着一串RSA的key,我就认为这东西除了暴力破解,应该没有其它方法。最近研究了一下RSA算法,正打算用它练练手。结果我仔细研究一下这东西,发现居然出奇的简单,令我真是感到非常不可思议。

WebInspect在你注册后,会给你发一个key文件,这个就是所谓的注册文件,里面有你的注册信息,然后webinspect在启动的时候会把它解密,读出里面的信息,所用的加密函数是hostinfo.crypt,这个函数即用来加密也用来解密,所谓的加密无非就是简单的xor了一下,我也写了一个程序,来调用这个crypt:

  1. #include "stdafx.h"  
  2. #include   
  3. #include   
  4.  
  5. int Crypt (  
  6.               int encrypt,  
  7.               int key,  
  8.               int keysize,  
  9.               int msg,  
  10.               int msgsize);  
  11.  
  12. typedef int(WINAPI* pCrypt) (  
  13.               int encrypt,  
  14.               int key,  
  15.               int keysize,  
  16.               int msg,  
  17.               int msgsize);  
  18.  
  19. void main(int argc, char* argv[])  
  20. {  
  21.        HINSTANCE m_hDll;  
  22.        pCrypt m_crypt;  
  23.        FILE *stream;  
  24.        FILE *fout;  
  25.        int numread;  
  26.        char key[50];  
  27.        char msg[2048];  
  28.        memset((void *)msg,0,2048);  
  29.        m_hDll=LoadLibrary("hostinfo.dll");  
  30.        if (m_hDll < (HINSTANCE) HINSTANCE_ERROR)  
  31.        {  
  32.               m_hDll = NULL;  
  33.               return;  
  34.        }  
  35.        m_crypt = (pCrypt)GetProcAddress(m_hDll, "crypt");  
  36.        if( (stream = fopen( "mmm1.key""r+b" )) != NULL )  //这里是我的原始注册文件  
  37.     {  
  38.               numread = fread( key, sizeofchar ), 50, stream );//头上50字节是key  
  39.               if (numread != -1)   
  40.                      printf("key is : %s",key);  
  41.          
  42.               numread = fread( msg, sizeofchar ), 2048, stream );//剩下的是加密后的内容  
  43.               if (numread != -1){   
  44.                             m_crypt(1,(int )key,50,(int )msg,numread); //参数1的值等于1的,是解密  
  45.                             if( (fout = fopen( "mmm1.txt""w+t" )) != NULL )  
  46.                             {  
  47.                                    fwrite(key,sizeof(char),50,fout);                          
  48.                                    fwrite(msg,sizeof(char),numread,fout);  
  49.                                    fclose(fout);  
  50.                             }  
  51.                             printf("msg is : %s",msg);  
  52.               }  
  53.               fclose(stream);  
  54.                 
  55.        }  
  56.  
  57.        return ;  

#p#

运行一下,我们得到了mmm1.txt,它的内容如下:

  1. //下面是文件内容  
  2.  
  3. 33383131352E31313131363839383135                  SPI License File  
  4.  
  5. Company=xxx ltd.  
  6.  
  7. Contact=xxx xxx-  
  8.  
  9. Address1=xxx#  
  10.  
  11. Address2=  
  12.  
  13. City=xxx  
  14.  
  15. State=  
  16.  
  17. PostalCode=xxx  
  18.  
  19. Country=CHN  
  20.  
  21. Phone=xxxx  
  22.  
  23. Fax=  
  24.  
  25. EMail=  
  26.  
  27. [Start IP Range]  
  28.  
  29. 216.183.127.201 216.183.127.201  
  30.  
  31. [End IP Range]  
  32.  
  33. MaxPageCount=0  
  34.  
  35. MaxIssueCount=0  
  36.  
  37. ValidFrom=5/8/2004  
  38.  
  39. ValidTo=5/23/2007  
  40.  
  41. RequireHTTPSFeedback=True  
  42.  
  43. VerificationURL=https://download.spidynamics.com/spiXMLVulDB/spiXMLVulDB.asp  
  44.  
  45. MaxABS=20  
  46.  
  47. MaxGlobal=10  
  48.  
  49. IPCount=1  
  50.  
  51. IPScanCount=0  
  52.  
  53. Product=  
  54.  
  55. ProductionKey=True  
  56.  
  57. MacIDs=  
  58.  
  59. IPScanned=216.183.127.201:19  
  60.  
  61. End SPI License File  
  62. //结束 

#p#

需要注意的是”Start IP Range”,这里修改一下,比如把216.183.127.201 216.183.127.201改成 0.0.0.0 255.255.255.255,还有个地方要改一下IPCount,把1改成一个较大的数,这个是用来控制你扫描的IP总数的。做了这两下修改(需要注意的是这个是unix格式的文本文件,windows下存的时候要小心),我们就要把它加密回去,呵呵,同样用hostinfo.crypt(这是crypt吗?应该叫encode才对):

  1. #include "stdafx.h"  
  2. #include   
  3. #include   
  4.  
  5. int Crypt (  
  6.               int encrypt,  
  7.               int key,  
  8.               int keysize,  
  9.               int msg,  
  10.               int msgsize);  
  11.  
  12. typedef int(WINAPI* pCrypt) (  
  13.               int encrypt,  
  14.               int key,  
  15.               int keysize,  
  16.               int msg,  
  17.               int msgsize);  
  18.  
  19. void main(int argc, char* argv[])  
  20. {  
  21.        HINSTANCE m_hDll;  
  22.        pCrypt m_crypt;  
  23.        FILE *stream;  
  24.        FILE *fout;  
  25.        int numread;  
  26.        char key[50];  
  27.        char msg[2048];  
  28.        memset((void *)msg,0,2048);  
  29.        m_hDll=LoadLibrary("hostinfo.dll");  
  30.        if (m_hDll < (HINSTANCE) HINSTANCE_ERROR)  
  31.        {  
  32.               m_hDll = NULL;  
  33.               return;  
  34.        }  
  35.        m_crypt = (pCrypt)GetProcAddress(m_hDll, "crypt");  
  36.        if( (stream = fopen( "mmm1.txt""r+b" )) != NULL )  
  37.     {  
  38.               numread = fread( key, sizeofchar ), 50, stream );  
  39.               if (numread != -1)   
  40.                      printf("key is : %s",key);  
  41.          
  42.               numread = fread( msg, sizeofchar ), 2048, stream );  
  43.               if (numread != -1){   
  44.                             m_crypt(0,(int )key,50,(int )msg,numread);// //参数1的值等于0的,是加密  
  45.                             if( (fout = fopen( "mmm2.key""w+b" )) != NULL )  
  46.                             {  
  47.                                    fwrite(key,sizeof(char),50,fout);                          
  48.                                    fwrite(msg,sizeof(char),numread,fout);  
  49.                                    fclose(fout);  
  50.                             }  
  51.                               
  52.               }  
  53.               fclose(stream);  
  54.                 
  55.        }  
  56.        return ;  

这样我们得到了mmm2.key,放到webinspect里验证一下,果然没问题,但是改过的key在线升级的时候会无效,所以正确的办法是申请一个试用的key,在线把程序升级好,再用这个修改后的key.

 

责任编辑:佚名 来源: 网络整理
相关推荐

2010-12-01 13:05:11

Nikto

2019-01-31 11:01:57

2021-09-05 06:01:41

网络扫描器sx安全工具

2010-12-22 21:57:00

Angry IP Sc

2016-05-13 17:07:00

Docker安全

2015-11-11 14:08:07

2011-02-17 18:51:10

2009-03-25 11:21:02

2016-08-17 09:18:11

2013-04-25 13:31:01

漏洞扫描器Nessus 5.2

2013-11-08 14:39:32

2013-08-14 10:24:38

2010-12-09 11:01:58

2021-05-31 08:54:30

RustScanRust端口扫描器

2015-01-06 11:50:40

安全扫描器IBM Appscan

2021-04-09 08:00:00

容器开发云原生

2011-03-23 13:20:41

漏洞扫描器Unix

2011-03-23 13:44:24

2015-11-26 11:33:54

扫描器

2011-01-11 10:29:46

点赞
收藏

51CTO技术栈公众号