Python全栈(五)Web安全攻防之1.信息收集

一、Kali虚拟机安装

主要分为两个步骤:
(1)安装虚拟机,如VMware:
具体安装过程可参考https://blog.csdn.net/qq_40950957/article/details/80467513
(2)在VMware上安装Kali:
具体安装过程可参考https://blog.csdn.net/qq_40950957/article/details/80468030
或者直接参考https://blog.csdn.net/chaootis1/article/details/84137460完成(1)、(2)步的操作。

二、域名介绍

1.域名介绍

域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
浏览器浏览网页的流程
(1)客户端上传域名到DNS服务器;
(2)DNS服务器返回指定域名对应的IP地址到客户端;
(3)客户端根据IP访问目标服务器;
(4)目标服务器返回访问内容给客户端。
如下:
DNS
由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名。
并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

2.域名查询方法whois

whois是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商等)。
不同域名后缀的whois信息需要到不同的whois数据库查询,如.com的whois数据库和.edu的就不同。目前国内提供WHOIS查询服务的网站有万网、站长之家等。每个域名或IP的WHOIS信息由对应的管理机构保存,例如以.com结尾的域名的WHOIS信息由.com域名运营商VeriSign管理,中国国家顶级域名.cn域名由CNNIC管理。
whois查询方式如下:

web接口查询

通过whois命令行查询

whois baidu.com

显示:
在这里插入图片描述

3.ICP备案

英文全称:Internet Content Provider,中文全称:网络内容提供商。
ICP可以理解为向广大用户提供互联网信息业务和增值业务的电信运营商,是经国家主管部门批准的正式运营企业或部门。
《互联网信息服务管理办法》指出互联网信息服务分为经营性和非经营性两类。国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务。
可以通过http://www.beianbeian.com查看网站备案信息,示例如下
http://www.beianbeian.com

三、收集子域名信息

1.域名和子域名

顶级域名包括.com.net.org.cn等。
子域名:
凡顶级域名前加前缀的都是该顶级域名的子域名,而子域名根据技术的多少分为二级子域名、三级子域名以及多级子域名。
收集子域名是因为某个主域名做了大量防护,手机难度较大,从二级域名入手难度相对较低,从子域名靠近主域名及相关信息。

2.子域名挖掘工具

git clone https://github.com/ring04h/wydomain
cd wydomain/
cat requirements.txt
pip3 install -r requirements.txt

查看参数:

python dnsburte.py -h

显示:

usage: dnsburte.py [-h] [-t] [-time] [-d] [-f] [-o]

wydomian v 2.0 to bruteforce subdomains of your target domain.

optional arguments:
  -h, --help          show this help message and exit
  -t , --thread       thread count
  -time , --timeout   query timeout
  -d , --domain       domain name
  -f , --file         subdomains dict file name
  -o , --out          result out file

使用:

python dnsburte.py -d baidu.com

显示:

2020-02-10 10:15:41,739 [INFO] starting bruteforce threading(16) : baidu.com
2020-02-10 10:15:48,653 [INFO] dns bruteforce subdomains(100) successfully...
2020-02-10 10:15:48,653 [INFO] result save in : /root/wydomain/bruteforce.log

查看结果:

cat /root/wydomain/bruteforce.log

显示:

[
    "m.baidu.com", 
    "www.baidu.com", 
    "wap.baidu.com", 
    "pop.baidu.com", 
    "bbs.baidu.com", 
	...
    "u.baidu.com", 
    "sp.baidu.com", 
    "svn.baidu.com", 
    "hb.baidu.com", 
    "vc.baidu.com"
]
  • 搜索引擎挖掘
    例如:
    在Google中输入
site:sina.com

结果示例:
Google
如无法访问谷歌,也可以在百度中输入

site:sina.com

结果示例:
Baidu

四、端口信息收集

1.端口介绍

如果把IP地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536个。
端口是通过端口号来标记的,端口号只有整数,范围是从0到65535
在计算机中每一个端口代表一个服务。
在Windows种查看端口-管理员身份打开命令行执行:

netstat -anbo

打印

活动连接                                                                                     
                                                                                         
  协议  本地地址          外部地址        状态           PID                                         
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1032              
  RpcSs                                                                                  
 [svchost.exe]                                                                           
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       26800             
 [vmware-hostd.exe]                                                                      
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4                 
 无法获取所有权信息                                                                               
  TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       19200             
 [vmware-authd.exe]                                                                      
  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       19200             
 [vmware-authd.exe]                                                                      
 ...                                                                         
  UDP    [fe80::e908:14c9:dc52:d1d5%5]:2177  *:*                                    4836 
  QWAVE                                                                                  
 [svchost.exe]                                                                           
  UDP    [fe80::e908:14c9:dc52:d1d5%5]:52240  *:*                                    7608
  SSDPSRV                                                                                
 [svchost.exe]                                                                           
  UDP    [fe80::f55a:3b0f:f090:458%14]:1900  *:*                                    7608 
  SSDPSRV                                                                                
 [svchost.exe]                                                                           
  UDP    [fe80::f55a:3b0f:f090:458%14]:2177  *:*                                    4836 
  QWAVE                                                                                  
 [svchost.exe]                                                                           
  UDP    [fe80::f55a:3b0f:f090:458%14]:52242  *:*                                    7608
  SSDPSRV                                                                                
 [svchost.exe]                                                                           

2.端口信息收集

对于收集目标机器端口状态可以使用工具来进行测试。
工具原理:
使用TCP或者UDP等协议向目标端口发送指定标志位等的数据包,等待目标返回数据包,以此来判断端口状态。

使用nmap探测

nmap标志像一只眼睛,称其为“上帝之眼”。
命令:

nmap -A -v -T4 baidu.com

打印:

Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-10 10:26 CST
NSE: Loaded 151 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 10:26
Completed NSE at 10:26, 0.00s elapsed
Initiating NSE at 10:26
Completed NSE at 10:26, 0.00s elapsed
Initiating NSE at 10:26
Completed NSE at 10:26, 0.00s elapsed
Initiating Ping Scan at 10:26
Scanning baidu.com (220.181.38.148) [4 ports]
Completed Ping Scan at 10:26, 0.04s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:26
Completed Parallel DNS resolution of 1 host. at 10:26, 0.01s elapsed
Initiating SYN Stealth Scan at 10:26
Scanning baidu.com (220.181.38.148) [1000 ports]
Discovered open port 443/tcp on 220.181.38.148
Discovered open port 80/tcp on 220.181.38.148
Completed SYN Stealth Scan at 10:26, 5.00s elapsed (1000 total ports)

TRACEROUTE (using port 80/tcp)
HOP RTT    ADDRESS
1   ... 30

NSE: Script Post-scanning.
Initiating NSE at 10:27
Completed NSE at 10:27, 0.00s elapsed
Initiating NSE at 10:27
Completed NSE at 10:27, 0.00s elapsed
Initiating NSE at 10:27
Completed NSE at 10:27, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 44.19 seconds
           Raw packets sent: 2168 (98.008KB) | Rcvd: 5 (208B)

说明:
443和80端口是开放的,分别对应https和http。

使用在线网站探测

地址:
http://tool.chinaz.com/port/
测试示例:
http://tool.chinaz.com/port
这种方式不能探测本地。

3.端口攻击

针对不同的端口具有不同的攻击方法。

攻击方法

攻击方法

防御措施

  • 关闭不必要的端口
  • 对重要业务的服务端口设置防火墙
  • 经常更换用户密码
  • 经常更新软件,打补丁

五、收集敏感信息

1.敏感信息收集重要性

针对某些安全做的很好的目标,直接通过技术层面是无法完成渗透测试。
在这种情况下,可以利用搜索引擎搜索目标暴露在互联网上的关联信息。
例如数据库文件、SQL注入、服务器配置信息、甚至是通过Git找到站点泄露源代码、以及Redis等未授权访问,从而达到渗透测试的目的。

2.Google hacking语法

Google hacking是指使用Google等搜索引擎对某些特定的网络主机漏洞进行搜索,以达到快速找到漏洞主机或特定主机的漏洞的目的。

intext:——搜索正文内容 例如intext:网站管理
intitle:——搜索标题内容 例如intitle:后台管理
filetype:——搜索指定文件格式 例如filetype:txt
inurl:——搜索特定URL。 例如.php?id
site:——制定搜索特定的站点 例如:site:baidu.com
info:——指定搜索网页信息 例如:info:baidu.com

示例:
在Google中输入

intext 后台管理

如图:
后台管理
显然,有很多后台管理系统暴露出来,随便点进去一个,可以看到
后台登录页
显然,这是极其危险的。
再如,在百度中输入

intitle 后台管理

如图
intitle 后台管理
同样,有很多后台管理系统暴露,随便尝试一个,显示
后台管理平台
显然,网络安全存在着很大威胁。
更多关于Google hacking的语法、使用和最新消息可查看
https://www.exploit-db.com/google-hacking-database

3.HTTP响应收集server信息

通过HTTP或HTTPS与目标站点进行通信中目标响应的报文中serve头和X-Powered-By头会暴露目标服务器和使用的编程语言信息,通过这些信息可以有针对的利用漏洞尝试。
获取HTTP响应的方法:

利用浏览器审计工具

点击F12,再选择Network,点击F5刷新,如下
Network
显然,Server中间件为nginxX-Powered-ByThinkPHP,即编写语言为PHP语言的一个框架ThinkPHP。

编写Python脚本(使用requests库)

简单测试:

import requests

r = requests.get('http://www.beianbeian.com')
print(r.headers)

打印:

{'Server': 'nginx', 
'Date': 'Mon, 10 Feb 2020 03:08:34 GMT', 
'Content-Type': 'text/html; charset=utf-8', 
'Transfer-Encoding': 'chunked', 
'Connection': 'keep-alive', 
'Vary': 'Accept-Encoding', 
'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT', 
'Pragma': 'no-cache', 
'Cache-control': 'private', 
'X-Powered-By': 'ThinkPHP', 
'Set-Cookie': 'PHPSESSID=v0ee5tiumr3pat5kpnltdvnbh4; path=/, sc__jsluid_h=43c68abd9efb5d2ebed43d88a1ab550c; expires=Mon, 10-Feb-2020 03:18:34 GMT; Max-Age=600, scJSESSIONID=04D2B6C6538CDD8A48003405C29F52B0; expires=Mon, 10-Feb-2020 03:18:34 GMT; Max-Age=600', 
'Content-Encoding': 'gzip'}

和第一种方法结果是一样的,Server中间件为nginxX-Powered-ByThinkPHP

发布了74 篇原创文章 · 获赞 350 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/CUFEECR/article/details/104251087
今日推荐