基于Python扫描器的设计与实现
2018-06-13周星佑王会
周星佑 王会
【摘要】使用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.