用Java获取一个网站的基本配置信息

前言:我们在进行网站渗透的时候,通常第一步都是获取目标网站的一些配置信息,比如:所用的服务器类型,用了哪种CMS,网站又用了哪些插件等等。当然,我们要是在这一步获取到了比较充分的信息,毫无疑问接下来我们就可以有针对性地进行漏洞搜索和挖掘,对最后的渗透测试是非常有帮助的。

一 简介

       今天,我主要是给大家安利一个比较好的对目标网站进行基本信息探测的网站,它就是:https://builtwith.com 。使用起来也很简单,直接对目标网站进行搜索就行了,比如说我们搜索:https://builtwith.com/blog.6ag.cn 。返回的结果如下:

wKiom1aPx0yCrxyrAAC-c-ij4pI732.png

wKioL1aPx3fw_Gg4AAClY5Ac1fs682.png

       这里,我就截了两张图,其他的信息就不截图了,留给大家自己去看看吧

       接下来,我在对这些信息进行分析后,决定用Java将一些比较有用的信息提取出来,以一种更为直观的方式展示在我们面前,以方便我们后面的分析

二 代码实现

代码原理很简单,就是通过发起请求,然后对获取到的网页源代码进行正则匹配出我们所需要的信息。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
      * 通过网站:https://builtwith.com查询信息
      * @param domain
      * @return 查询到的域名信息
      * */
     public  static  String getServerMoreMess(String domain){
         String message =  "" ;
         try  {
             URL url =  new  URL( "https://builtwith.com/"  + domain);
             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
             connection.setRequestMethod( "GET" );
             connection.setReadTimeout( 20000 );
             connection.setReadTimeout( 20000 );
             
             if (connection.getResponseCode() ==  200 ){
                 InputStream inputStream = connection.getInputStream();
                 BufferedReader reader =  new  BufferedReader( new  InputStreamReader(inputStream));
                 String line =  "" ;
                 Pattern pattern =  null ;
                 Matcher matcher =  null ;
                 while ((line = reader.readLine()) !=  null ){
                     pattern = Pattern.compile( "<span>Web Server</span>" );                   
                     matcher = pattern.matcher(line);
                     if (matcher.find())
                         message = message +  "Web Server:\n" ;
 
                     pattern = Pattern.compile( "<a href=\"//trends.builtwith.com/Web-Server/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>" );
                     matcher = pattern.matcher(line);
                     if (matcher.find())
                         message = message +  "    "  + matcher.group( 1 ) +  "\n" ;
                     
                     pattern = Pattern.compile( "<span>Content Management Systems</span>" );                  
                     matcher = pattern.matcher(line);
                     if (matcher.find())
                         message = message +  "Content Management Systems:\n" ;
 
                     pattern = Pattern.compile( "<a href=\"//trends.builtwith.com/cms/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>" );
                     matcher = pattern.matcher(line);
                     while (matcher.find())  
                         message = message +  "    "  + matcher.group( 1 ) +  "\n" ;
                     
                     pattern = Pattern.compile( "<span>Frameworks</span>" );                
                     matcher = pattern.matcher(line);
                     if (matcher.find())
                         message = message +  "Frameworks:\n" ;
 
                     pattern = Pattern.compile( "<a href=\"//trends.builtwith.com/framework/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>" );
                     matcher = pattern.matcher(line);
                     while (matcher.find())  
                         message = message +  "    "  + matcher.group( 1 ) +  "\n" ;
                     
                     pattern = Pattern.compile( "<span>Widgets</span>" );                   
                     matcher = pattern.matcher(line);
                     if (matcher.find())
                         message = message +  "Widgets:\n" ;
 
                     pattern = Pattern.compile( "<a href=\"//trends.builtwith.com/widgets/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>" );
                     matcher = pattern.matcher(line);
                     while (matcher.find())  
                         message = message +  "    "  + matcher.group( 1 ) +  "\n" ;
                     
                     pattern = Pattern.compile( "<span>Encoding</span>" );                  
                     matcher = pattern.matcher(line);
                     if (matcher.find())
                         message = message +  "Encoding:\n" ;
                     
                     pattern = Pattern.compile( "<a href=\"//trends.builtwith.com/encoding/[^\\s\"]+?\">([^<>\"]+?) Usage Statistics</a>" );
                     matcher = pattern.matcher(line);
                     while (matcher.find())
                         message = message +  "    "  + matcher.group( 1 ) +  "\n" ;
                 }
                 
             }
             
         catch  (MalformedURLException e) {
             e.printStackTrace();
         catch  (IOException e) {
             e.printStackTrace();
         }
         return  message;   
     }

三 测试

1
2
3
4
5
6
7
public  static  void  main(String[] args) {
         String str =  "" ;
//      str = ServerType.getServerMoreMess("www.zifangsky.cn");
         str = ServerType.getServerMoreMess( "blog.6ag.cn/" );
         
         System.out.println(str);
     }

效果如下:

Web Server:
    Tengine
Content Management Systems:
    WordPress
    WordPress Weekly Activity
    WordPress 4.4
Widgets:
    Crayon Syntax Highlighter
    Crayon Syntax Highlighter
    WordPress Plugins
    Font Awesome
Encoding:
    UTF-8



本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1733108,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值