基于Python扫描器的设计与实现

2018-06-13 09:22周星佑王会
商情 2018年17期
关键词:域名端口字典

周星佑 王会

【摘要】使用Python中的requests,socket等库,通过探测和分析HTTP(s)的返回包,实现对目标Web应用程序的IP,子域名还有敏感信息的探测,分析目标Web是否存在漏洞和安全隐患进而设计出一款较为全面的漏洞扫描器。

【关键词】Python 漏洞扫描

1背景介绍

在产品测试人员的平时工作中,经验需要用到扫描器对Wbe应用程序进行深度扫描。根据网络漏洞的常见特征,对Web应用程序执行全面的安全检查,以便在网站上线前发现并修复漏洞。

而安全人员在渗透Web应用程序中,第一步要做的便是信息收集。信息收集的目的是最大限度地收集与目标相关的信息,并找到所有可能的攻击人口。而扫描器恰恰能提高渗透测试人员的效率。扫描器的开发往往是内部专业人员使用,所以在性能方面无需太大的追求,而Python性能虽然不及c,Java,C++等語言,但其快速上手和强大的第三方库,大大受到了安全从业者的喜爱。

2扫描器的结构与流程

扫描器的结构如下:

扫描器能对单个URL进行深度的检测;其中主要功能的为:(1)IP/端口检测,安全从业人员将目标URL输入扫描器中,扫描器将自动检测其IP和开放端口;(2)端口爆破,当检测到有敏感的端口对外开放时扫描器将对其进行爆破。比如21端口的ftp,3389端口的telnet;(3)子域名枚举,扫描器会对按照给定的字典,对目标url进行子域名爆破。根据响应包判断是否存在;(4)敏感信息/敏感目录挖掘,扫描器会按照给定字典,在目标URL加对应目录和敏感配置文件进行访问,根据其响应包进行判断是否存在

3基于python第三模块的技术实现

当对URL进行IP检测时,我们只需用到socket库。

ipaddr=socket. getbyhostname( url)便可以得到对应的IP地址。

当python提取到对应的IP地址后,接着便进行端口扫描。

nmap是安全从业人员最喜欢的端口扫描工具。端口扫描在渗透测试过程中扮演着极其重要的角色,假设对方服务器开启了危险端口而不自知的话,安全从业人员可以应用相应的端口漏洞直接提取服务器权限。

Python有和nmap对应的第三方库,Libnmap和nmap。

以nmap为例,port_scan= nmap. PortScanner() result=port_scan.scan(hots,port)

当传人IP地址和端口范围,再加上Nmap需要的参数便可对目标IP进行端口扫描

端口爆破,当端口扫描到较为危险的函数的开放时,接着便要通过python对这些端口进行应用。如21端口,3389端口处于open状态,测试人员可以尝试对该服务进行账号密码的爆破。使用到的Python第三方库为:ftplib,teInetlib

以ftp爆破为例核心代码为:

import ftplib

f= ftplib. FTP() {.connect( ServerIP, PORT,timeout=10)

f.login( username, password)

print“Login sucess....”

#一个简单的对ftp进行爆破的方式

接着写一个函数向其传人字典的username和password。

user_handler=open(userlist) pass_handler=open(passlist)#打开字典文件

username=user_handler.readlines()

password= pass_handler.readlines()#读取字典

如果爆破成功屏幕会显示Login sucess

子域名枚举,我们可以使用谷歌黑客的方法,以百度为例,百度搜索:site:baidu.com,接着我们便可以看到搜索引擎出现大量的百度的子域名。或者我们可以借助Python第三方库requests对目标url加子域名对回应包进行判断。还可以通过向DNS服务器发送DNS Query,根据返回包的信息来判断是否存在其他子域名,用到的第三方库有dns.resolver和dns.rdatatype

敏感信息/目录,挖掘敏感信息和目录在渗透过程中扮演着重要的角色,由于开发人员的疏忽,部分藏有网站配置信息,管理员后台,上传文件地方,内部使用网页等没有及时设置权限或者隐藏,导致网站处于非常危险的地步。我们可以通过判断requests的返回包的status_code来判断是否存在。来百度为例,正常访问的status_code是200

安全从业者可以打开一个字典文件(如list. txt)构造http://baidu.com/pathl,然后进行访问,通过response的状态码进行判断该目录是否存在。接着将存在的目录输出。

If response.status_code==200: print url+“200”

当扫描器所有的流程都完成后,便是安全从业人员对扫描后的结果进行筛选

提取有益的信息更加高效的对目标进行渗透

4结束语

随着2017年信息安全法的颁布,web安全逐渐走进人们的视野。各大网页开发人员,管理人员开始重视用户的隐私。而导致发生信息泄露的往往是开发人员和管理员的疏忽。让黑客有了可取之机。而一个全面搜集信息的扫描器可以大大规避这样的风险。

参考文献:

[1]陈春玲,张凡,余瀚.Web应用程序漏洞检测系统设计[J].计算机技术与发展,2017.

[2]高瑞,周彩兰,朱荣,网络应用程序漏洞挖掘技术研究[J].现代电子技术,2018.

[3]王大伟,基于Python的Web API自动化测试方法研究[J].电子科学技术,2015.

猜你喜欢
域名端口字典
一种端口故障的解决方案
《江苏教育研究》官方网站域名变更公告
《江苏教育研究》官方网站域名变更公告
字典的由来
大头熊的字典
正版字典
为程序或设备在路由器上打开端口