基于Python编程语言的自动化渗透测试工具

自动化渗透测试工具介绍 一. 渗透测试“三板斧” 1.信息搜集——全面了解系统 网络信息:DNS IP 端口 服务器信息:操作系统 版本 服务 中间件 ;版本 WEB系统信息:使用技术 部署系统 数据库 第三方软件:版本 社工记录:个人邮件地址 泄露账号密码 历史网站信息 2.漏洞利用——占领根据地 web漏洞发现 系统漏洞发现 漏洞利用 编写自动漏洞利用脚本 放置隐蔽后门 3.横向扩展——扩大成果,深度挖掘 内网架构分析、攻陷信息中心和数据中心、突破认证服务器(AD域)、 内网中间人攻击(获取单点信息)、多级多点后 阅读详情

摘 要

近些年来网络安全形势变得越来越严峻,全球数百万个政企遭遇过不同程度的网络攻击。渗透测试是一种对目标进行信息安全评估的方法,而目前该行业仍在存在着安全服务行业价格昂贵,安全人才缺口巨大,在渗透测试时步骤繁琐、效率低下等问题。且现阶段的渗透测试工具存在着学习成本高,自动化程度低,功能难以扩展等问题。

针对以上问题,本文设计了一款基于Python编程语言的自动化渗透测试工具,面向的主要群体是爱好漏洞挖掘的SRC白帽子们和专业的渗透测试人员。这款工具会自动模拟人工渗透测试的过程,对目标网站进行分步进行信息收集、漏洞检测、报告输出等步骤,并在检测网站安全性的同时,实时打印出相关的信息。最后再按测试人员意愿进行漏洞的利用等操作,可以大大减轻渗透测试人员在渗透测试的各个阶段所需要的工作量,方便测试人员快速地完成典型的渗透测试任务。

关键词:自动化 渗透测试 漏洞扫描

ABSTRACT

In recent years, millions of governments and enterprises around the world have encountered different degrees of network attacks, and the situation of network security has become more and more serious. Penetration test is a method to evaluate the information security of the target. At present, there are still many problems in this industry, such as the high price of security service industry, the huge shortage of security talents, the tedious steps and low efficiency in penetration test. At present, the penetration testing tools still have many problems, such as low automation, learning cost expensively and difficult to expand functions.

In order to solve the above problems, this paper designs an automatic penetration testing tool based on python programming language. The main group is SRC white hats who are fond of vulnerability mining and professional penetration testers. This tool will automatically simulate the process of manual penetration test, and carry out step-by-step information collection, vulnerability detection, report output and other steps for the target website, and at the same time of testing the website security, print out the relevant information in real time. Finally, according to the intention of the testers, the exploitation of the vulnerabilities can greatly reduce the workload of the penetration testers in each stage of the penetration test, and facilitate the testers to complete the typical penetration test tasks quickly.

Key words: automatic penetration test vulnerability scanning

目录

第一章 绪论1

1.1 课题背景与意义1

1.2 国内外发展概况1

1.3 研究目标及内容2

1.4 论文结构2

1.5 本章小结2

第二章 开发工具及主要技术3

2.1 开发工具及环境3

2.1.1开发语言 Python3

2.1.2数据库 SQLite4

2.2 主要技术4

2.2.1网络爬虫简介4

2.2.2 Masscan网络扫描工具4

2.2.3 Nmap网络探测工具5

2.2.4 Wappalyzer网站指纹识别工具5

2.2.5 Xray漏洞扫描工具5

2.3 本章小结5

第三章 系统设计6

3.1 系统需求6

3.2 系统结构设计6

3.3 系统功能模块设计7

3.3.1 信息收集模块7

3.3.2 漏洞检测模块10

3.3.3 漏洞利用模块10

3.3.4 结果输出模块11

3.3.5 其他工具模块11

3.3 数据库设计11

3.4 本章小结12

第四章 系统实现13

4.1系统总体实现13

4.2系统功能模块实现13

4.2.1 信息收集模块13

4.2.2 漏洞检测模块16

4.2.3 漏洞利用模块20

4.2.4 结果输出模块21

4.2.5 其他工具模块22

4.3 本章小结23

第五章 系统测试24

5.1 测试目的24

5.2 测试环境24

5.3 测试内容与结果25

5.3.1 信息收集25

5.3.2 漏洞检测27

5.3.3 漏洞利用29

5.3.4 结果输出30

总结与展望33

项目总结33

未来展望33

参考文献34

致谢34

第一章 绪论

1.1 课题背景与意义

随着政企机构逐渐拥有各式各样的网络资产,越来越多重要的信息被储存在互联网上,网络安全也逐渐变得越来越重要。由于网络资产的繁多、漏洞更新速度的频繁,暴露在网络上的资产脆弱面也逐渐增多,使用人工进行渗透测试已逐渐无法日常的安全需求。

渗透测试是一种模拟黑客对网络资产进行攻击的安全体系评估,要求渗透测试人员需有着不俗的技能与经验。有着强大的知识面与知识链的渗透测试工程师自然是薪资不菲,所以不管在哪里的政企,不管时间还是财力上,信息安全都是一大消耗。在这种情况下,使用自动化渗透工具可以大大地减轻政企的负担。

但是目前市面上提供的自动化渗透工具的能力还比较弱,仍然具有非常多的功能可以完善。而在渗透工作的角度来看,在个人层面上,自动化的渗透工具能够大大地提高渗透测试人员的工作效率,而不必花费大量的人力去做重复性的工作。在企业层面上,可以提供到漏洞探测和威胁感知的功能,辅助建立起企业的安全架构,定时对网络进行渗透,一旦出现新的漏洞可以及时地覆盖与发现。

1.2 国内外发展概况

目前国外的比较出名的自动化渗透工具就是美国的HD Moore等人开发的Metasploit了,它是一个目前比较流行的渗透测试框架[1],它拥有可用性高的渗透攻击荷载。它能够给予了渗透测试人员可自定义,灵活多变的检测方法和攻击能力。虽然该平台已经进行了大量的优化,但是使用较为复杂,对测试人员的要求比较高,并且没有集成一体对某个目标一体的扫描并且得出结果,只能算是半自动化。

然而国内的自动化渗透工具,一般则为椰树扫描器,啊D扫描器等注入类扫描器,虽然可以有一定的情况下一键获取到服务器的权限,但是工具功能单一,跨平台性差,没有集成到一体,自动化程度低,只能提供于新手使用,不能给高级的渗透测试人提供更为准确的中间参数设置选项,无法更精确地完成任务。

通过以上对国内外的渗透测试框架以及工具的研究,可以看到目前市面上的渗透测试工具存在着操作不便,集成度差以及自动化程度低等问题,而且在网络上不能够有效地发现安全风险,所以设计一个操作方便,集成度好,以及自动化程度高的自动化渗透测试平台是非常有必要的。

1.3 研究目标及内容

为了弥补上面渗透测试工具所出现的缺点,本文要设计一款基于Python开发语言的自动化渗透工具,主要面向的群体是专业的渗透测试工程师以及爱好漏洞挖掘的SRC白帽子们。这款工具会自动模拟人工渗透测试的过程,对目标网站进行分步进行信息收集、漏洞扫描、报告输出等步骤,并在检测网站安全性的同时,实时打印出相关的信息。最后再按测试人员意愿进行漏洞的利用等操作,可以大大减轻渗透测试人员在渗透测试的各个阶段所需要的工作量,方便测试人员快速地完成典型的渗透测试任务。

1.4 论文结构

本文主要由六个章节构成,现在就每个章节进行简单介绍。

第一章:绪论。本章指出了安全行业中的背景与痛点,对比了国内外的自动化渗透工具优缺点,阐述了本文的研究目标与内容,概括了论文的整体结构情况。

第二章:开发工具及主要技术。本章简述了安全开发最常用的编程语言Python与数据库SQLite,并介绍了在本工具中使用到的第三方工具。

第三章:系统设计。本章的系统的结构设计描述了系统由五大功能模块组成,五大模块下的子模块,在系统功能模块设计中详细描述了每个子模块的功能设计,在最后简述了数据库中五个表的设计。

第四章:系统实现。本章根据第三章的设计思路,详细地描述了自动化渗透工具每个功能模块的实现方法。

第五章:系统测试。本章对系统进行了简单的测试,描述了本工具的优点与有待完善的地方。

第六章:总结与展望。本章主要是本人在做完此次的自动化渗透工具的一些总结,并对工具未来可以完善地方做的阐述。

1.5 本章小结

介绍了目前渗透测试的背景与痛点,如人工成本高,水平参差不齐等问题,并介绍了国内外自动化渗透工具的发展情况,分析出了目前市面上的渗透测试工具存在着操作不便,集成度差以及自动化程度低等问题。由于存在这些问题,所以本文设计出一款适合于广大渗透测试人员与爱好漏洞挖掘的白帽子们的自动化渗透测工具,从而减轻测试人员在渗透测试的各个阶段所需要的工作量,在最后补充了本文的结构安排。

第二章 开发工具及主要技术

2.1 开发工具及环境

开发环境在Windows 10,版本为1909,开发工具为PyCharm 2019.2.1 (Professional Edition),在实际部署的时候需要部署在装有Masscan、Nmap、Xray等工具的Linux机器上使用。

表2-1 软件版本

软件

版本

Python

3.7.4

PyCharm

2019.2.1 (Professional Edition)

Masscan

1.0.3

Nmap

7.8

Xray

0.20.0

表2-2 包版本

软件

版本

beautifulsoup4

4.8.2

aiohttp

3.6.2

gevent

1.4.0

lxml

4.5.0

python-docx

0.8.10

python-nmap

0.6.1

requests

2.23.0

urllib3

1.25.8

2.1.1开发语言 Python

Python是一门动态的、面向对象的解释型编程语言[2],在设计之初就是为了快速地编写出自动化的脚本(Shell)。Python中有许多非常有用的第三方库,使得它能够快速地进行独立、大型的系统开发。Python有2和3的版本,基于程序的灵活性和编写的方便,选择了使用Python 3.7.4作为主要的编程语言。其中大部分的模块都是以插件式地进行编写,每个模块都可以单独拿出来使用,并且可以继续增加新的模块进去。

2.1.2数据库 SQLite

SQLite是一个轻量级的SQL数据库引擎,也是一款自给自足、零配置、事务性的SQL数据库引擎[3],并且数据库以文件形式存储,非常适合在渗透环境复杂、多变的情况下使用。

2.2 主要技术

2.2.1网络爬虫简介

Web网络爬虫的主要功能是获取网页上的数据,在本工具中就大量地使用了爬虫技术,如获取网站的网页标题,获取网站的ICP备案信息,获取网站注册人的信息等,并且获取网站上敏感信息,如IP地址、手机号、邮箱号、账号、密码等,都为渗透的后续步骤提供了有用的信息。

2.2.2 Masscan网络扫描工具

Masscan被称之为世界上扫描速度最快的网络端口扫描工具,是一款无状态扫描器的典型代表[4]。Masscan相比Nmap之所以快很多,是因为Masscan是直接通过驱动程序发送数据包,减少了系统开销造成的延时,并且可以保持巨大的连接数量,采用了异步线程的扫描方式,减轻了线程的时间延迟。Nmap则需要记录TCP/IP的状态。此外,Masscan也极其地灵活,能够Windows、Linux等多个平台下运行,且允许自定义任意地址范围和端口范围进行扫描,在扫描的时候会对目标随机化地发送数据包以免触发目标网络的IDS(入侵检测系统)。

添加图片注释,不超过 140 字(可选)

图2-1 无状态扫描

本工具使用了Masscan进行网络的快速探测,可以快速地分析出网络中存活主机开放的端口信息,从而为端口探测进行下一步的漏洞探测。

2.2.3 Nmap网络探测工具

Nmap (Network Mapper) 是一款开源免费的网络探测工具,常用的功能有主机发现、端口扫描、版本侦测、操作系统侦测、防火墙/IDS规避、NSE脚本引擎,它是网络安全工作者必备的工具之一[5]。

本工具使用了Nmap进行操作系统的识别,并且通过接收Masscan扫描获取的端口数据,进一步获取端口的banner信息,如 SSH、FTP等服务的版本号,从而方便进行下一步的漏洞检测。

2.2.4 Wappalyzer网站指纹识别工具

Wappalyzer可以通过指纹对比分析,能够识别出网站是用什么编程语言开发的,识别出网站的中间件是什么,识别出网站的前后端框架是什么,并且它是开源免费的。在本工具中,使用了Wappalyzer进行对目标网站的识别,以提供对应的漏洞检测。

2.2.5 Xray漏洞扫描工具

Xray是一款社区免费版的WEB漏洞扫描工具,是从长亭科技研发的核心引擎中提取出来的。Xray扫描速度快、并发能力强,支持多种WEB漏洞类型检测。目前社区版闭源,但提供多个平台编译后的可执行文件使用,可跨平台使用。

在本工具中,集成了Xray的webscan漏洞扫描功能,用户可以按照自己所需配置所检测网站的漏洞类型。

2.3 本章小结

本章主要介绍了自动化渗透工具的开发环境与主要技术。在开发语言上选择了灵活性与编写方便的Python3作为开发语言,考虑到了渗透场景的多变,选择使用的是SQLite这种轻量级的数据库引擎。主要技术使用了Python的网络爬虫来进行获取网页上的信息,使用了Masscan与Nmap相结合来获取系统层面的信息,使用了Wappalyzer进行网站架构的识别,使用了协程技术进行了网络请求的IO操作,调用了Xray安全评估工具来进行WEB层面的漏洞识别,全面地扫描出系统可能存在的脆弱点。

第三章 系统设计

3.1系统需求

在本工具中,由于旨在面对大量资产信息时可以快速获取到对应的信息,即用户拿到大量的目标网络资产,如域名、IP等,只需要放入一个文本内,启动扫描器,即可获取到对应目标的渗透测试信息,以方便渗透测试人员进行下一步的渗透测试步骤。

由于工具是提供给专业的渗透测试人员使用的,所以只需要提供命令行的窗口进行信息的交互即可。由于信息繁多复杂,可以在命令行上显示的数据上添加颜色。用户可以等待扫描完成后,获取到扫描结束的渗透报告,里面会总结目标服务器的信息收集情况、漏洞的检测情况、以及可利用的Playload。并且由于扫描的时间一般会比较长,用户可以设置以微信的方式接收到通知,以清晰地知道目标的哪一个资产存在着漏洞的情况。

3.2 系统结构设计

添加图片注释,不超过 140 字(可选)

图3-1系统总体结构

根据以上对自动化渗透的需求分析,系统结构设计设计出以下的5个功能模块:信息收集模块、漏洞检测模块、漏洞利用模块、结果输出模块、其他工具模块。

在信息收集模块中,又有8个小模块,分别是探测CDN子模块、探测WAF子模块、IP归属地子模块、网站ICP备案子模块、网站Whois信息查询子模块、子域名爆破子模块、WEB信息收集子模块、端口服务信息获取子模块。

而在漏洞检测模块中有4个小模块,分别是Xray工具扫描子模块、WEB敏感信息爬取子模块、系统端口检测子模块、目录地址检测子模块。

漏洞利用模块则有2个小模块,分别时POC检测子模块和EXP检测子模块。

结果输出模块分别有输出显示子模块、报告输出模块和微信通知模块。

还有一个其他工具模块,主要是解决数据与网络之间的问题的模块。

3.3 系统功能模块设计

3.3.1 信息收集模块

信息收集是渗透测试的本质,被行业人士认为其占了渗透测试中的百分之八十的工作,信息收集模块收集而来的信息,直接决定了后面漏洞检测和漏洞利用等渗透方法。所以在这一模块中需要实现的功能也比较多,具体有7个模块,分别是探测CDN存在模块、探测WAF存在模块、服务器归属地查询模块、网站ICP备案查询模块、网站whois信息查询模块、子域名爆破模块、WEB信息获取模块、端口信息获取模块组成。

(1)探测CDN存在模块

CDN(Content Delivery Network),即内容分发网络,它可以根据发起请求的地址重新分配离它近、访问速度快的节点,用户就可以快速地取得所需的内容。

但是在渗透测试的过程当中,目标若是使用了CDN,则会导致无法正确地获取到服务器真实的ip地址,导致后面的渗透工作都会失败,所以需要对目标域名进行一个判定是否使用了CDN,若是使用了CDN则直接跳过此域名,进行下一个域名的扫描。

  1. 探测WAF存在模块 WAF(Web Application Firewall),一般是在WEB层面上进行保护服务器以免被黑客攻击的硬件或软件。在渗透的过程当中,若是目标网站存在着WAF,则需要消耗大量的人力进行攻防对抗使攻击手法绕过检测。 在本工具中,由于目标是面向大量资产的脆弱性扫描,若是只针对单一网站的防护做绕过措施,效果会非常不理想,所以本工具需要探测目标网站是否存在WAF,进行判定。若是存在WAF,则跳过下面的检测,直接进行下一个目标的扫描,若是不存在WAF,则继续正常执行。

  2. 服务器归属地查询模块 服务器IP归属地查询可以判断出该服务器是存放在哪个地区的。一般在对非法网站进行渗透时,经常需要用到此模块进行定位。

  3. 网站ICP备案查询模块 ICP备案(网络内容服务商)主要用于规范网络内容。做了ICP备案的网站,信息都是公开可以查询的,也就泄露了许多网站管理者的信息,对渗透有一定帮助。这些信息可以在ICP备案的网站上查询,只需要爬虫爬取下来即可。

  4. 网站whois信息查询模块 为了方便网络用户的故障排除,打击非法犯罪,世界上各级Internet管理机构设立了whois服务器,可通过whois服务器查询到域名所有者登记的信息。可以根据目标域名的后缀,分别向对应的whois服务器的43端口发起查询,即会返回域名所有者的登记资料。查询的结果中需着重注意网站的注册人和注册的邮箱,所以应使用正则匹配提取相关的信息。 表3-1 常见的whois服务器

域名后缀

对应whois服务器

.cn.com

whois.centralnic.net

.net

whois.verisign-grs.com

.com

whois.verisign-grs.com

.org

whois.pir.org

.cn

whois.cnnic.cn

.edu

whois.educause.edu

.edu.cn

whois.edu.cn

.club

whois.club

.jp

whois.jprs.jp

  1. 子域名爆破模块 子域名是属于域名系统级别中较高级别域的域,在本工具中指的是二级域名,如mail.example.com,oa.example.com等。 通常主域名网站的安全防御措施都会做得非常地好,但是它的子域名下的网站,则有可能是一些其他的测试网站,安全防护级别不会太高的网站,这些网站往往是渗透过程当中的突破点,所以需要着重注意子域名发现的效率与准确率。

  2. WEB信息识别模块 WEB信息识别主要调用Wappalyzer工具进行识别,若是在子域名和端口上发现了目标服务器上开启着存在着其他的http或https的网站,则会调用此模块进行WEB信息的获取,如网站的标题信息,网站的开发语言,网站的架构,网站的前端语言等。 Wappalyzer识别网站的原理主要是使用了常见的WEB指纹库进行匹配,如“指纹名称|检测的地方|属性值|匹配值”,若匹配成功,则说明该网站由此中间件构成。 表3-2 Wappalyzer常见指纹库

架构

网站指纹

ASP

ASP|headers|Set-Cookie|ASPSESSION

APPX

ASPX|headers|X-Powered-By|ASP.NET

PHP

PHP|headers|Set-Cookie|PHPSSIONID

JSP

JSP|headers|Set-Cookie|JSESSIONID

宝塔

宝塔管理|headers|Set-Cookie|BT_PANEL

LNMP

LNMP|index|index|<title>.*?LNMP.*?</title>

  1. 端口信息获取模块

在端口扫描层面上,选择使用Masscan这款端口扫描工具,因为它采用的是无状态的端口扫描方式,所以在速度层面上有着明显的优势。Masscan是可跨平台使用的,编译后的程序支持Windows、Linux操作系统,在本工具中先调用了Masscan对目标服务器的IP进行扫描特定端口,再读取Masscan生成的文件进行数据操作。Masscan扫描的特定端口和扫描的速率,可由用户自定义,工具默认内置扫描常见的脆弱端口。

虽然Masscan扫描端口的速度相当快,但是对目标服务器各个端口使用的服务识别却并不准确。在本工具中,在Masscan扫描出服务器开放的端口后,再调用Nmap来进行端口具体的banner信息获取识别。若是是识别出来端口是HTTP协议,则加入网站列表中,再调用WEB信息获取模块对目标网站信息获取。

表3-3 默认扫描的高危端口

21,22,23,80-90,161,389,443,445,873,888,1099,1433,1521,1900,2082,2083,2222,2601,2604,3128,3306,3311,3312,3389,4440,4848,5432,5560,5900,5901,5902,6082,6379,7001-7010,7778,8080-8090,8649,8888,9000,9200,10000,11211,27017,28017,50000,50030,50060

3.3.2 漏洞检测模块

(1)漏洞检测模块

端口漏洞检测需要检测常见的默认登录控制端口如22(SSH)、21(FTP)、1433(Mssql)、3306(MySQL)、6379(Redis)、27017(MongoDB)、5432(Postgresql)等是否存在弱口令或未授权登录的情况。

(2)目录地址检测模块

对于一个大型的网站来说,网站的管理入口是不能够被别人所发现的,若是被他人发现,则可能会存在被他人进入管理后台的风险。由于并不是对单个域名进行后台爆破的操作,本工具只需要对常用的后台地址检测即可,如 /admin.php, /login.php, /Admin_login 等常用后台地址。

敏感文件的扫描是渗透测试中也是必不可少的一步,主要是要扫描出网站管理员因错误配置而放置在网站根目录的数据库文件、网站源码备份文件等重要文件。若是网站的重要文件泄露出去,对整个服务器来说都是相当危险的一件事情。在不知道网站管理员把重要的文件命名的情况下,只能进行常见的敏感文件的猜测扫描,通常为/www.rar、/backup.zip、/备份.sql等格式,由于因扫描而并发的数量多,所以使用多线程来进行解决。

(3)网站敏感信息爬取模块

在渗透过程中,发现网站上的敏感信息也是非常重要的,如网页上出现的邮箱、电话号码、IP地址、网页链接等,这些敏感的信息可以存入数据库当中,为渗透测试人员提供猜测弱密码的帮助。而且部分网站开发者为了安全意识低下,也有可能会在网站的JavaScript文件中写入敏感的数据,在渗透中去逐个检查这些JS文件显然会很浪费时间,所以网站中的JavaScript的文件也需要去扫描检测,可以使用正则匹配来匹配这些关键信息。

(4)Xray漏洞扫描模块

Xray漏洞扫描模块是本工具中比较核心的一个模块,主要是用于扫描WEB网站中存在的漏洞,如xss、sql注入、常见的中间件漏洞等。这部分会使用子进程的方式进行调用Xray进行扫描,再把数据传递到数据库中。

3.3.3 漏洞利用模块

漏洞利用模块中包含了POC模块与EXP模块。负责验证漏洞存在情况则调用POC模块,而EXP模块则是对漏洞进行利用的模块。由于EXP可能会对目标主机造成损坏,所以并不加入到批量使用的场景,而是单独使用。POC模块则是可以进行批量的检测,主要是弥补Xray中没有检测出来的漏洞,用户可以在特定的目录下,准备特定扫描的POC模块,如一些新出的漏洞POC脚本等。

3.3.4 结果输出模块

由于本工具是在命令行下操作的,所以输出显示的内容尤为重要。为了让输出的字体带有颜色,使用的是termcolor这个第三方模块来控制打印出来文字的颜色。

在结果输出这个模块中,首先会把信息收集和漏洞检测两大模块的信息以报告的形式填入Word文档中。Word文档中会有报告的标题、测试的目标、信息收集的情况、存在的漏洞风险、报告的声明与建议等。并且会使用第三方服务“Server酱”在微信上进行通知扫描的情况,以及时获取目标服务器的漏洞信息。

3.3.5 其他工具模块

数据请求模块是重新被封装成了一个Request类,在这个模块里面,不仅重新定义了User Agent等信息,还随机生成了md5值的cookie值,以发现部分未授权就能访问的系统,利用socks5技术,用户可以自定义socket的值,让扫描器使用特定的代理来进行扫描。在扫描网站时,一般需要向网站发起大量的网络请求,若是使用了相同的请求头向一个服务器发送大量信息,则很容易被探测出来,所以在数据请求时,进行请求头的随机化处理,使得每一个UserAgent都不相同,以绕过特定防护机制的检测。

3.3 数据库设计

添加图片注释,不超过 140 字(可选)

图3-2 数据库表

  1. 端口信息表(port):存储扫描出来目标主机的端口信息,定义了扫描的时间,目标服务器的IP地址,主域名地址,开放的服务,开放的端口,还有扫描出来的其他信息。

  2. 网站信息表(web_info):主要存放的是目标服务器的IP、域名,扫描的时间,WAF的探测情况,CDN加速的探测情况,主机存放的地方,ICP备案信息,whois查询,子域名,目标网站的标题,架构,操作系统等信息。

  3. 敏感信息表(crawl_info):主要存放的是主域名,爬取到网站页面的敏感信息,信息的类型,在哪个链接地址泄露的信息等。

  4. 敏感文件泄露表(dir_scan):主要存放的是扫描目标泄露的文件信息,如域名,响应码,向网站发送探测数据回来的响应码,返回来的数据长度,识别到的标题,敏感文件的链接地址的信息。

(5)漏洞信息表(vuln):主要存放的是使用Xray扫描目标网站的web上存在的漏洞,记录下域名、漏洞地址、请求体、响应体、攻击载荷、其他信息等字段。

3.4 本章小结

本章主要是介绍了自动化渗透测试工具整个系统的结构设计,并且介绍了系统的整体架构,介绍了系统的信息收集模块、漏洞检测、漏洞利用、结果输出、其他工具五个功能模块设计。

  1. 系统实现

4.1系统总体实现

用户通过输入指定的目标,系统会按顺序启动信息收集、漏洞检测、漏洞利用、结果输出这4个模块,而其他工具模块则会在每个模块与网络数据之间交互时起到作用,如检验输入的文本是否符合格式,发送数据包是否超时等。

添加图片注释,不超过 140 字(可选)

图4-1 系统实现图

信息收集模块收集到的信息,会为漏洞检测模块提供有效的帮助,如信息收集中扫描到的端口信息,在漏洞检测模块中将会对其中的敏感端口进行检测。漏洞检测模块中检测中来的漏洞,则可以提供给漏洞利用模块进行利用,最后所有的信息都会被记录在渗透测试报告中。

4.2系统功能模块实现

4.2.1 信息收集模块

(1)探测CDN存在模块

由于网站使用了CDN加速后,DNS解析此网站时会出现多个不同的IP指向此网站,此时可以使用的技术是Python中的dns.resolver模块,分别向114.114.114.114,8.8.8.8,223.6.6.6等公共DNS服务器进行查询,若返回多个IP地址,则判定为存在CDN加速。

(2)探测WAF存在模块

在检测WAF是否存在的模块上,选择使用的手法是先向目标网站发送准备好的攻击荷载(playload),如xss攻击中的JS语句、常用的SQL注入语句、/etc/passwd关键文件等,一般只要发起这种明显的攻击请求,都会触发WAF的拦截机制,此时就可以根据响应头的字段或者响应体的拦截内容来判断是否存在WAF,存在着什么WAF。

(3)服务器IP归属地查询模块

这个模块相对于其他模块实现比较简单,只要知道真实的IP地址,在国内的一些站长之家的工具网页接口即可查询到具体的IP来源信息,只需要把响应的内容爬取下来即可。

添加图片注释,不超过 140 字(可选)

图4-2 归属地查询模块

(4)网站ICP备案查询模块

此模块的实现使用的是是网络爬虫技术,需要保存的信息有ICP备案的主办单位名称、备案时的网站标题、域名、备案时间、备案号,具体使用的是Python中的etree模块定位到具体的前端信息,并把该css选择器内的内容保存下来。

(5)网站whois信息查询模块

在渗透过程中,whois信息查询往往能够获取到对整个渗透过程非常有效的关键信息。在本工具中,使用的是socket向对应的whois服务器发起查询信息,再提取出whois查询中的域名注册人名称、email地址等信息。

添加图片注释,不超过 140 字(可选)

图4-3 Whois信息查询

(6)子域名爆破模块

实现子域名爆破功能,选择使用的是协程的方式进行子域名的爆破,在速度上比单线程要远远地快上许多倍。它的技术实现原理是先读取指定的子域名字典,里面存放着大量的二级域名可能会使用的词汇,然后与主域名进行拼接,在使用Python异步传输中的aiodns.DNSResolver模块进行DNS解析,若获取到数据则记录下来成为目标服务器的二级域名。

添加图片注释,不超过 140 字(可选)

图4-4子域名爆破

(7)WEB信息获取模块

web信息获取这一模块,主要使用的是wappalyzer来识别网站的整体架构。首先要获取Web信息,就要知道它的网页标题是什么,这里就要使用网页爬虫技术了。本工具会使用Python的第三方模块BeautifulSoup对网站的html进行解析的操作,然后再调用wappalyzer进行网站架构的识别操作。

添加图片注释,不超过 140 字(可选)

图4-5 WEB信息获取

(8)端口服务信息获取模块

  1. Masscan扫描 由于Masscan是第三方工具,所以在python中需要使用os模块进行对系统命令行的操作,扫描的端口和速率由用户设置的选项中导入。

添加图片注释,不超过 140 字(可选)

图4-6 Masscan扫描运行图

  1. Nmap扫描

Nmap扫描目标服务器操作由于是一个网络请求操作,使用协程来进行调度操作是非常合适的,这里使用的是gevent第三方模块进行协程操作,速度比单线程扫描要快上许多。

添加图片注释,不超过 140 字(可选)

图4-7 Nmap扫描运行图

下面是是gevent模块协程调用Nmap扫描代码:

with gevent.Timeout(180, False):

task = []

for port in ports:

g = gevent.spawn(NmapScan, ip, port)

task.append(g)

gevent.joinall(task, raise_error=False, timeout=180)

result = {}

for i,g in enumerate(task):

result.update(g.value)

4.2.2 漏洞检测模块

(1)端口漏洞检测模块

  1. SSH弱密码检测(22端口) 22是Linux常用的SSH远程登录控制端口,本工具使用了笛卡尔积的方法组合用户自定义的账号和密码尝试对目标服务器进行不断地登录操作,直到登录成功。

添加图片注释,不超过 140 字(可选)

图4-8 SSH爆破运行图

  1. FTP弱密码检测(21端口) FTP通常用于服务器的文件管理,21端口是FTP常用的登录端口。在本工具中需要对目标服务器进行FTP的未授权访问检测和不断地进行弱密码的登录尝试操作。

添加图片注释,不超过 140 字(可选)

图4-9 扫描FTP匿名登陆

添加图片注释,不超过 140 字(可选)

图4-10 FTP爆破运行图

  1. 多种数据库的端口弱密码检测

除了SSH、FTP外,还有多种数据库的端口可以进行漏洞的检测,如常见的3306(MySQL)、1443(Myssql)、27017(MongoDB)、6379(Redis)、5432(Postgresql)端口等,都可能存在未授权或弱密码等漏洞,需要进行对应的检测操作。

添加图片注释,不超过 140 字(可选)

图4-11 数据库端口检测

下面是典型MySQL数据库爆破的代码:

def mysql(self, ip):

for user in users:

or pwd in passwd:

try:

pwd = pwd.replace('{user}', 'root')

conn = MySQLdb.connect(host=ip, user=user, passwd=pwd)

console('dbscan',ip+':3306','Mysql存在弱口令: {} {}'.format(user,pwd))

conn.close()

break

except Exception as e:

Pass

(2)目录地址检测模块

  1. 后台地址发现 网站后台地址的发现首先会使用/admin.php, /login.php, /Admin_login 等常用后台地址与域名进行拼接,再向这个链接发起请求,若返回的状态码是200,且返回的报文中存在admin、login、登录、后台、管理等字样,即认定为此页面为网站管理后台。

添加图片注释,不超过 140 字(可选)

图4-12扫描后台运行图

  1. 敏感文件发现

在本工具中,就准备了大量的常见的备份文件名称与敏感的后缀名称,首先会使用笛卡尔积的方式把两者组合成一个重要文件的名称,再与域名拼接后发送数据探测,若是存在该路径,则记录下文件的名称、文件的大小等重要信息。由于需要探测的路径相当多,所以这里使用的是多线程的扫描方式扫描,大大提升了扫描的速度。

添加图片注释,不超过 140 字(可选)

图4-13 扫描敏感文件运行图

(3)网站敏感信息爬取

  1. 网页敏感信息爬取 在本工具中,首先对整个网页进行爬取与解析,再使用多线程的方式在页面中使用正则匹配的方式进行提取数据,并记录下URL地址与敏感的信息。 表4-1 HTML的正则匹配语句

匹配类型

正则语句

说明

Email

\b[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)+

匹配邮箱地址

手机号

\b(?:139|138|137|136|135|134|147|150|151|152|157|158|159|178|182|183|184|187|188|198|130|131|132|155|156|166|185|186|145|175|176|133|153|177|173|180|181|189|199|170|171)[0-9]{8}\b

匹配139|138|137|136|135|134|147|150|151|152|157|158|159|178|182|183|184|187|188|198|130|131|132|155|156|166|185|186|145|175|176|133|153|177|173|180|181|189|199|170|171开头的11位手机号码

IP

(?<=<!--).*((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)).*(?=-->)

匹配IP地址

添加图片注释,不超过 140 字(可选)

图4-13 敏感信息获取

  1. JavaScript文件敏感信息爬取

在本工具中,向网站发起请求后,若页面中存在JavaScript文件链接,着保存为一个列表,再重新对列表中的这些JavaScript链接发起请求,探测其中的内容是否存在着敏感信息。

表4-2 JavaScript的正则匹配语句

匹配

正则语句

说明

URL

\b(?:http:|https:)(?:[\w/\.]+)?(?:[a-zA-Z0-9_\-\.]{1,})\.(?:php|asp|ashx|jspx|aspx|jsp|json|action|html|txt|xml|do|js)\b

匹配URL,如http://example.com/index.jsp

Token/密码

\b(?:secret|secret_key|token|secret_token|auth_token|access_token|username|password|aws_access_key_id|aws_secret_access_key|secretkey|authtoken|accesstoken|access-token|authkey|client_secret|bucket|extr|HEROKU_API_KEY|SF_USERNAME|PT_TOKEN|id_dsa|clientsecret|client-secret|encryption-key|pass|encryption_key|encryptionkey|secretkey|secret-key|bearer|JEKYLL_GITHUB_TOKEN|HOMEBREW_GITHUB_API_TOKEN|api_key|api_secret_key|api-key|private_key|client_key|client_id|sshkey|ssh_key|ssh-key|privatekey|DB_USERNAME|oauth_token|irc_pass|dbpasswd|xoxa-2|xoxrprivate-key|private_key|consumer_key|consumer_secret|access_token_secret|SLACK_BOT_TOKEN|slack_api_token|api_token|ConsumerKey|ConsumerSecret|SESSION_TOKEN|session_key|session_secret|slack_token|slack_secret_token|bot_access_token|passwd|api|eid|sid|qid|api_key|apikey|userid|user_id|user-id|uid|private|BDUSS|stoken|imei|imsi|nickname|appid|uname)["\s]*(?::|=|=:|=>)["\s]*[a-z0-9A-Z]{3,64}

匹配泄露的token或者密码,如ssh_key =1111111111,匹配的位数由3位到64位

域名

((?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+(?:biz|cc|club|cn|com|co|edu|fun|group|info|ink|kim|link|live|ltd|mobi|net|online|org|pro|pub|red|ren|shop|site|store|tech|top|tv|vip|wang|wiki|work|xin|xyz|me))

匹配常见域名,如www.example.com

添加图片注释,不超过 140 字(可选)

图4-14 敏感信息泄露

(4)Xray漏洞扫描模块

由于Xray目前是闭源的,所以只能使用Python的子进程进行调用。用户可自定义Xray所要扫描的插件,工具扫描完成后会输出一个json文件,里面存放的是扫描出来的WEB漏洞信息。然后工具会读取这个json文件再进行存放进数据库的操作。

4.2.3 漏洞利用模块

(1)POC模块

POC主要是漏洞存在的概念验证脚本。由于Xray工具是一款闭源的工具,所以在本工具中也提供了自行添加POC检测的模块。用户只需要在此按特定的格式进行编写POC,向服务器发送验证漏洞的数据包,放置在特定的目录下,即可增加工具的POC验证。该模块会随机地打乱加载脚本的顺序进行检测,并且考虑到运行速度的问题,使用了多线程的方式进行POC的扫描,大大提升了运行的效率。

添加图片注释,不超过 140 字(可选)

图4-15 POC模块代码实现

(2)EXP模块

EXP主要是漏洞利用的脚本。由于EXP模块存在一定的危险性,容易对目标服务器造成损坏,所以存放在此目录下的漏洞利用脚本单独分开使用,并不在工具中进行批量的数据发送操作。用户可以把与POC对应的EXP脚本放置于此模块中,当需要获取到服务器的权限时,再进行调用EXP模块。

4.2.4 结果输出模块

(1)报告输出模块

渗透测试报告是渗透测试中的非常重要的一部分,也是结果输出的呈现。在本工具中。使用的是Python的python-docx模块,会把信息收集、漏洞检测这两部分检测的内容写入到docx文档中去。

添加图片注释,不超过 140 字(可选)

图4-16 报告内容

(2)微信通知模块

在报告生成后,会在微信上使用“Server酱”这款第三方工具通知使用者,目标的自动化渗透扫描已经完成,并显示相关的目标扫描信息,如扫描的目标的ip、域名、存在的风险漏洞的个数等信息。其实现的方式是通过POST特定的数据包到Server酱的账户提供的API,即可在微信上显示相关的信息。

添加图片注释,不超过 140 字(可选)

图4-17 Server酱提示的信息

4.2.5 其他工具模块

(1)输出显示模块

在软件banner信息这里我使用了Python的第三方工具Figlet来打印本工具的banner信息“aptest”。而在命令行中为了规范输出的模板,统一使用“时间-任务-目标-信息”的方法来展示,时间使用蓝色显示,任务使用红色显示,目标使用白色显示,信息使用绿色显示。

添加图片注释,不超过 140 字(可选)

图4-18 命令行显示例子

(2)随机UA模块

为了让请求的信息更加地随机多样,本工具增加了随机UA模块,不仅随机化了UserAgent,还增加了随机的Referer字段,这个字段主要是让服务器知道网站范围跟来源的,还有就是增加了X-Forwarded-For、X-Real-IP的字段,若是目标服务器没有做好校验,则接收到这两个字段时就会认为是这个假冒的IP发起的请求,从而绕过一些服务器的防护。

(3)数据请求模块

由于在扫描网站时需要进行多次的网页交互,Python中原始的request模块需要多次进行调用,但在很多情况下无法满足,所以需要进行重新封装这个模块。在封装之后的Request类中,无论是GET请求还是POST请求,都设定了超时的时间,并且会进行验证URL使用的是HTTP还是HTTPS的协议。

(4)目标解析模块

在渗透测试项目或者是漏洞挖掘众测项目里面,一般都是需要对大量的资产目标进行扫描的,并且这些资产目标并不全是域名,有的可能只是端口,有的可能会缺少http://或者是https:// 所以系统的对目标输入的第一步应该是清洗目标所输入的数据,规范为统一的格式。

清洗完数据的格式后,还需要对目标数据进行区分,如根据URL得到主机的Host地址,如根据http://1.1.1.1:80则返回1.1.1.1,根据http://www.example.com/index.php?id=1则返回www.example.com,根据域名返回服务器的IP地址等,然后再进行目标的去重的操作。

(5)数据库存储模块

数据库存储模块使用的是SQLite轻量级的数据库系统,在本工具把管理数据库的相关函数封装为一个数据库管理的类,再在这个类中进行数据库的创建、存储和查询等操作。

4.3 本章小结

本章主要介绍了系统各个功能模块的实现,介绍了信息收集的模块中探测CDN、探测WAF、IP归属地、网站ICP备案、网站whois信息查询、子域名爆破、WEB信息收集、端口服务信息获取的实现方式,介绍了漏洞检测中端口漏洞检测的方式,讲解了敏感目录地址是如何发现的,介绍了爬取网站敏感信息的方式。还介绍了漏洞利用模块中有POC和EXP的不同,简单讲解了输出显示、随机UA、数据请求、目标解析这几个模块的实现原理。

  1. 系统测试

5.1 测试目的

为了验证了系统整体的运行情况,关键测试信息收集、漏洞检测、漏洞利用、结果输出这四大模块的运行情况,对比优缺点,提出可改进的方法。

5.2 测试环境

由于漏洞扫描的行为属于敏感操作,不能够随意地扫描他人的服务器,又因为考虑到测试的成本、测试环境的多样性,综合考虑之下,在WEB层面决定在一台服务器上以一个主域名部署多个子域名网站,各个网站的软件版本皆不一样且存在特定的漏洞,系统层面上,部署多个端口层面的漏洞,以测试自动化渗透工具的扫描检测能力。

表5-1 测试服务器环境

协议

HTTP

IP

123.207.100.38

域名

xindunt.cn

操作系统

CentOS 7.7.1908

性能

1 核 1 G

硬盘大小

50 G

宝塔面板

免费版 7.1.1

Apache

2.4.41

PHP

5.6

MySQL

5.6.47

Pure-Ftpd

1.0.49

MongoDB

4.0.10

Redis

5.0.7

Memcached

1.5.22

PostgreSQL

9.6

为了测试系统的准确性,在WEB层面上,使用子域名部署了6个存在漏洞危害极大的CMS系统作为目标,并且在主域名上,放置了个人的敏感信息。在操作系统层面上,设置了SSH、FTP的弱口令登录,设置了数据库MySQL、MongoDB、Redis、Memcached、PostgreSQL的未授权和弱口令登录。

表5-2 测试目标网站

子域名

目标系统

存在漏洞

xindunt.cn

Tyecho版本1.0 (14.5.26)

前台代码执行漏洞

php.xindunt.cn

ThinkPHP 5.0.10

远程命令执行漏洞

abc.xindunt.cn

PHP CMS V9.6.0

任意文件上传漏洞

sea.xindunt.cn

SeaCMS V6.4

任意代码执行漏洞

oa.xindunt.cn

WordPress 4.6.17

任意代码执行漏洞

test.xindunt.cn

苹果CMS V8

远程命令执行漏洞

5.3 测试内容与结果

5.3.1 信息收集

在信息收集模块中,能够非常流畅地获取到目标服务器的信息内容,扫描一个开了8个端口,6个网站的服务器共测试了三次,每次测试速度会随着网络的波动而影响,平均速度在82秒左右即可完成一个网站从系统到WEB层面的信息获取,目前这个速度我认为是可以的。

添加图片注释,不超过 140 字(可选)

图5-1 信息收集-服务器信息

在子域名爆破模块中,并发扫描的速度也是非常快,我的服务器上存在的6个子域名,只花费了3秒的时间就扫描出来了。而在子域名爆破的字典中,则存在则1334条二级域名的检测,说明这比单线程扫描要快上非常多。

添加图片注释,不超过 140 字(可选)

图5-2 信息收集-子域名

而在端口扫描模块上,由于使用了Nmap进行操作系统的识别,这需要进行一次完整的TCP连接,会出现两到三秒阻塞的情况。在调用Masscan进行端口扫描,这里几乎没有卡顿的情况即能获取服务器开放的端口。再使用Nmap获取到Masscan扫描到的端口进行服务的banner识别,由于也是完整的TCP连接,所以此处等待的时间会比较久,一般需要10秒才能完成此操作,但是此处能够完整正确地识别出端口服务的信息,对后面的渗透操作有利,我认为是值得的。

添加图片注释,不超过 140 字(可选)

图5-3 信息收集-端口及服务

WEB信息识别的速度也非常快,几乎是一秒内能识别3到5个网站的架构,但是这里存在则一点问题,就是没有做到去重的操作,比如www.example.com和example.com其实是同一个页面,但是在这个工具中还是加入了检测的队伍中,会使得工具做多了无用的工作,这个问题在后续打算使用网页的MD5值进行校验来对比是否为同一个页面来解决。

添加图片注释,不超过 140 字(可选)

图5-4 信息收集-WEB信息

5.3.2 漏洞检测

由于SSH和FTP的爆破登录、敏感信息和敏感文件的发现都使用了多线程进行调度,所以运行速度都非常快。但是在调用Xray时,多个子域名网站,无法做到多子进程地进行调用,这个有待后续的研究,目前是调用Xray工具进行逐个目标扫描操作。

添加图片注释,不超过 140 字(可选)

图5-5 漏洞检测-SSH爆破

添加图片注释,不超过 140 字(可选)

图5-6 漏洞检测-FTP爆破

敏感信息泄露检测使用的是多线程进行检测,速度极快,但是还可以进行优化,在渗透中主要是这些敏感信息有用,重复出现即可不必显示,这里可以做一个去重的操作。

添加图片注释,不超过 140 字(可选)

图5-7 漏洞检测-敏感信息爬取

网站的后台检测是通过网站中是否包含关键字来进行判断的,如果后台没有包含到准确的关键字即不会发现到网站后台,这个后续还需要扩大常见后台的词语以匹配正确的网站后台。

添加图片注释,不超过 140 字(可选)

图5-8 漏洞检测-查找网站后台

此处也是使用多线程来发现网站的文件是否泄露了,2560个数据探测只花费了2分钟的时间,并且返回了数据的大小,渗透测试来说非常有帮助。

添加图片注释,不超过 140 字(可选)

图5-9 漏洞检测-敏感文件探测

调用Xray工具扫描出来的漏洞会以红色字体在命令行中出现,由于开发能力有限,目前使用的是子程序调用Xray进行扫描,速度上不占优势。但是用户可以自定义扫描所用的插件,增强了工具本身的实用性。

添加图片注释,不超过 140 字(可选)

图5-10 漏洞检测运行图6

5.3.3 漏洞利用

由于漏洞利用模块是单独使用的,这里我以PHPCMS V9.6.0举例,在漏洞检测模块中检测到此网站存在漏洞,则可以在使用EXP模块中的脚本来获取服务器的权限。由于此CMS版本存在着任意文件上传漏洞高危漏洞,若脚本正常运行,在命令行下可输出webshell的地址与连接密码,可获取目标服务器的权限。

添加图片注释,不超过 140 字(可选)

图5-11 EXP模块Getshell

添加图片注释,不超过 140 字(可选)

图5 -12 使用EXP Getshell验证

5.3.4 结果输出

当检测结束后,会生成精美的渗透测试报告,里面填写了在工具中收集到的信息与检测到的漏洞情况。WEB扫描出的漏洞保留了检测出漏洞的请求数据包,以便复现检测出来的漏洞。

添加图片注释,不超过 140 字(可选)

图5-13 报告首页

添加图片注释,不超过 140 字(可选)

图5-14 报告页1

添加图片注释,不超过 140 字(可选)

图5-15 报告页2

添加图片注释,不超过 140 字(可选)

图5-16 报告页3

总结与展望

项目总结

本文最初的目的就是希望能够设计出一款能够进行自动化渗透的工具出来,以减轻渗透测试过程中的一些可避免人工的重复操作步骤,从而降低测试人员的成本,提高渗透测试的效率。由于本人的软件开发能力有限,此工具还有很多可以完善的地方,不过整体的运行情况还算不错。

在本次的毕业设计里,我对很多知识都有了进一步的了解,同时我也学会了很多新颖的技术,使自己的安全开发能力有了进一步的提升。我原本以为我是学安全的,不用去学习开发技术,但是经过了这次的毕业设计,我发觉这是一个错误的观点。在参加渗透测试的过程当中,需要用到非常多的渗透测试技巧,而这些手法一般都是变化多端的,所以没有通用的工具进行测试,这都是需要有开发的技术进行定制化的编写,才能达到自己希望的情况实现。

未来展望

本工具目前已经实现了正常渗透测试里面大部分人工需要做的操作,但是仍然有很多可疑改进的地方,如子域名发现的方法,还可以结合Shandon、Fofa、Zoomeye等网络搜索引擎进行发掘,而整个项目则是可以封装在Docker环境里面打包运行。再考虑到运行的性能,扫描器还可以做成分布式的对目标进行扫描。

如今各大厂商都在争先恐后地在做自动化渗透的这些项目,说明自动化渗透会是一种未来的趋势。希望我的毕业设计能够继续开发下去,并且在Github上进行开源,为我们国家的网络安全事业做出一份贡献。

参考文献

  1. 熊羿. 自动化渗透测试平台的设计与实现[D].北京邮电大学,2019.

  2. 李玉香,王孟玉,涂宇晰.基于python的网络爬虫技术研究[J].信息技术与信息化,2019(12):143-145.

  3. 张子浩,轻量级数据库Sqlite的使用[Z],https://www.cnblogs.com/ZaraNet/p/10188893.html,2018-12-28

  4. 冉世伟. 基于Masscan漏洞扫描技术的研究[D].南开大学,2016.

  5. 王凯,李志超,王荣昌,高文清,王微雅,王炅.基于Nmap&Nessus的漏洞扫描[J].通信电源技术,2020,37(03):135-136.

附录

自动化渗透工具的数据库的设计所需要的表:

端口信息表(port)

数据表项

简述

数据类型

长度

id

主键

INTEGER

time

扫描时间

varchar

255

ip

主机IP地址

varchar

255

domain

域名

varchar

255

service

开放的服务

varchar

255

port

开放的端口

varchar

255

other

其他信息

varchar

255

网站信息表(web_info)

数据表项

简述

数据类型

长度

id

主键

INTEGER

time

扫描时间

varchar

255

domain

域名

varchar

255

ip

真实IP

varchar

255

waf

WAF探测情况

varchar

255

cdn

CDN探测情况

varchar

255

address

主机存放的地址

varchar

255

ICP_check

ICP备案信息

varchar

255

whois_check

Whois查询信息

varchar

255

subdomain

子域名

varchar

255

title

网站标题

varchar

255

apps

网站架构

varchar

255

os

操作系统

varchar

255

敏感信息表(crawl_info)

数据表项

简述

数据类型

长度

id

主键

INTEGER

domain

域名

varchar

255

crawl

爬取敏感信息

varchar

255

kind

类型

varchar

255

URL

地址

varchar

255

敏感文件泄露表(dir_scan)

数据表项

简述

数据类型

长度

id

主键

INTEGER

domain

域名

varchar

255

rsp_code

响应码

varchar

255

rsp_len

长

varchar

255

title

标题

varchar

255

dir

敏感文件

varchar

255

漏洞信息表(vuln)

数据表项

简述

数据类型

长度

id

主键

INTEGER

domain

域名

varchar

255

target

漏洞地址

varchar

255

request

请求体

varchar

255

response

响应体

varchar

255

playload

攻击载荷

varchar

255

extra

其他信息

varchar

255

【小白渗透入门系列】P5 自动化渗透测试工具_自动化渗透测试系统 PTES技术指南-渗透测试执行标准。 阅读详情

相关推荐

自动化渗透测试&&自动化挖掘src

自动化渗透测试

azraelxuemo的博客 1239

7款热门的自动化渗透测试工具及特点分析

随着当前网络安全威胁的不断扩展与升级,开展渗透测试工作已经成为众多组织主动识别安全漏洞与潜在风险的关键过程。然而,传统的渗透测试对测试人员的经验水平有很强的依赖,对相关知识的掌握有很高的要求,企业需要投入较大的时间和人力成本才能完成。在此背景下,很多企业开始借助自动化渗透测试工具来缓解传统渗透测试的弊端,这些工具能够自动分析目标系统所在网络环境,将安全团队从复杂的测试流程中解放出来,降低了企业开展渗透测试的成本。

2301_76161259的博客 1018

软件测试如何自我提升?看完我悟了

当一个软件测试工程师刚刚进入行业一到三年的时间,他们通常需要掌握一些基本技能和知识,并且需要学习一些新的技术和工具,以便更好地完成自己的测试工作,以下是一些建议,帮助测试工程师在这个阶段提升自己的技能全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:对于软件测试新手来说,自我提升是非常重要的,它可以帮助新手更好地适应工作环境和要求。

manbskjabgkb的博客 353

【2024最新】渗透测试工具大全(超详细),收藏这一篇就够了!

所有工具仅能在取得足够合法授权的企业安全建设中使用,在使用所有工具过程中,您应确保自己所有行为符合当地的法律法规。如您在使用所有工具的过程中存在任何非法行为,您将自行承担所有后果,所有工具所有开发者和所有贡献者不承担任何法律及连带责任。除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要安装并使用以下所有工具。您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。重点提醒:本项目工具来源于互联网,是否含带木马及后门请自行甄别!!

2401_85026529的博客 2021

渗透测试入门:从网络协议到实战演练的完整技能体系构建

渗透测试作为模拟真实攻击的安全评估方法,其核心在于通过授权方式发现系统脆弱点。理解网络协议是基础,HTTP/HTTPS、TCP/IP等协议构成了互联网的通信规则,而操作系统与编程语言则是实现自动化测试的关键。掌握这些技术不仅能提升漏洞发现效率,更能培养安全思维,从攻击者视角审视系统安全。在实际应用中,渗透测试广泛应用于企业安全评估、漏洞挖掘和防御体系建设,通过系统化的技能训练,可以有效提升整体安全防护能力。本文结合渗透测试和网络安全等热词,详细解析从环境搭建到实战演练的完整路径。

weixin_33670786的博客 453

保姆级教程:用GROMACS的FEP方法计算小分子结合自由能(附完整mdp配置)

本文提供了一份详细的GROMACS自由能微扰(FEP)计算教程,涵盖从系统准备、参数配置到结果分析的全流程。通过具体案例演示如何计算小分子结合自由能,包括λ窗口设计、动力学参数优化及并行化执行技巧,帮助研究者克服FEP计算中的常见问题,获得可靠的自由能数据。

weixin_30598225的博客 353

**发散创新:渗透测试工具的发展与编程语言的应用**一、引言随着信息技术的飞速发展,网络安全问题日益突出。渗透测试作为评估

利用其丰富的库和框架,如Requests、BeautifulSoup、Flask等,开发者可以轻松地编写出功能强大的渗透测试工具。例如,使用Python开发的Metasploit框架,已经成为渗透测试领域的经典工具之一。利用这些语言的特点,可以实现对Web应用的自动化扫描和攻击模拟,提高渗透测试的效率。渗透测试作为评估网络防御能力的重要手段,其工具与技术的创新不断引发业界的关注。本文将探讨渗透测试工具的发展,及其在编程语言中的应用。随着编程语言的不断发展,其在渗透测试中的应用也日益广泛。

hyhyyyds1234的博客 244

深度学习入门:使用CMSIS-NN在微控制器上部署模型的完整指南与Python Jupyter实践

CMSIS-NN是ARM为Cortex-M系列微控制器设计的神经网络库。它旨在提供一套高效、轻量级的神经网络API,使得开发者可以在资源受限的微控制器上运行深度学习模型。CMSIS-NN优化了各种常见的神经网络层,如卷积层、全连接层等,确保它们在微控制器上的运行效率。# 定义模型])# 编译模型# 训练模型这样,我们就得到了一个简单的手写数字识别模型。注意:为了简洁和清晰,本文中的代码可能不是最优的或最完整的实现。为了获得完整的项目和更多的优化技巧,请下载完整项目。

m0_57781768的博客 5884

为什么黑客都用python-为什么黑客需要学习C++和Python?

C和C ++众所周知,C和C ++作为构建当今我们使用的大多数软件所使用的语言而闻名。为了了解如何破解并最终利用该软件,有必要了解其在幕后的工作方式。一个例子是相对较常见的,尽管过时的攻击媒介,称为缓冲区溢出。缓冲区溢出主要驻留在C和C ++语言中,因为诸如C之类的语言在可读性和对硬件的控制之间提供了无与伦比的协同作用,从而允许进行低级内存访问。较新手的开发人员可能会使用已知的"危险”功...

q6q6q的专栏 989

【MDC开发者实战】多传感器融合算法在自动驾驶中的配置与优化

本文详细介绍了华为MDC平台在自动驾驶中多传感器融合算法的配置与优化实践。通过前融合与后融合技术,结合摄像头、激光雷达和毫米波雷达的数据,提升感知精度与可靠性。文章还分享了ARXML配置、标定技巧、算法调优及性能优化等实战经验,帮助开发者高效实现自动驾驶系统的传感器融合。

weixin_29214199的博客 515

反相器(inverter)和缓冲器(buffer)---附加与非门原理图

下面是对反相器(Inverter)和缓冲器(Buffer)从面积、驱动能力、时序等多个角度的详细对比,列出的是一般情况下的比较,具体情况可能会受到工艺节点、设计库和特定设计要求的影响。缓冲器(Buffer)是数字电路中常见的逻辑门之一,用于增强信号的驱动能力,而不改变信号的逻辑状态。如下图所示的CMOS反相器,由一个NMOS和PMOS组成,栅端gate相连作为输入端Vin,漏端相连作为输出端Vout,NMOS的源端接地,PMOS的源端接电源VDD.与反相器不同,缓冲器的输出与输入保持相同的逻辑状态。

hzmscut的博客 1万+

Windows11渗透工具包分享

启动命令:python3 test.py* 已集成本镜像所有python3工具的依赖库* 使用pip3命令调用python3 pip* 启动命令:python test.py* 已集成本镜像所有python2工具的依赖库* 使用pip命令调用python2 pip* 已配置环境变量- Perl v5.36.0 (WIndows下使用频率不高,perl脚本用WSL运行)- Gcc v12.2.0 (由WSL安装内置)* Nginx v1.18.0 默认启动* PHP v7.4。

MachineGunJoe666 5117

强化学习 | Multi Agents | Trust Region | HATRPO | HAPPO

ICLR2022多智能体论文,将trust region推广到MA上,保证单调递增。学习博客,共7k字,纯手敲。含大量手写笔记。

111辄的博客 1万+

【网络安全就业方向】网络安全专业的学生毕业后可以从事什么样的工作

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

kjuhfkicf154的博客 942

YOLO26科研升级:BiFPN双向特征金字塔,让多尺度特征融合精度再突破

在目录下,新建AddModules文件夹,将bifpn.py放入其中。

LXY_LOVE36的博客 559

通过轻量级图像增强Transformer (IAT) 提升YOLOv8在低光环境下的检测性能

随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。

博客 1214

**白帽黑客的世界:探索发散创新的编程之旅**在信息安全领域

注:本文仅提供了大致的框架和部分关键内容。在实际撰写时,还需要补充详细的技术细节、实验数据和案例分析等。同时,请确保遵守优快云平台规范,避免涉及敏感话题和不当内容。在信息安全领域8*一、白帽黑客的角色与技能**8*二、发散创新的编程实践**88五、总结与展望**

zzq678912345的博客 66

基于YOLOv8与UI界面的校园垃圾分类督导系统

YOLO(You Only Look Once)是目前最为广泛使用的目标检测算法之一。它通过一次前向传递即完成目标检测,具有极高的速度与效率。YOLOv8是YOLO系列的最新版本,相比于之前的YOLO版本,YOLOv8在速度、精度、检测能力等方面都有了显著的提升。本项目通过结合YOLOv8模型与UI界面,成功实现了校园垃圾分类督导系统。该系统能够自动识别不同类型的垃圾,并通过UI界面实时展示垃圾分类的结果。

YOLO 337

网安学习路线!最详细没有之一!看了这么多分享网安学习路线的一个详细的都没有!

零基础小白,到就业!入门到入土的网安学习路线! 在各大平台搜的网安学习路线都太粗略了。。。。看不下去了! 我把自己报班的系统学习路线,整理拿出来跟大家分享了!点击下图,福利! 建议的学习顺序: 一、网络安全学习普法(心里有个数,要进去坐几年!) 1、了解并介绍《网络安全法》 2、《全国人大常委会关于维护互联网安全的决定》 3、《中华人民共和国计算机信息系统安全保护条例(2011 年修正)》 4、《中华人民共和国计算机信息网络国际联网管理暂行规定》 5、《计算机信息网络国际联网安全保护管理办法》 6、《互联

Internet_xx的博客 5万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

网络安全职业必备的五种核心编程语言

以上五种编程语言,覆盖底层系统、Web 前端、服务端程序、数据库、安全开发全场景,是网络安全职业的核心技术支撑。不同语言适配不同安全方向:深耕底层安全、内核漏洞优选 C/C++;主打自动化攻防、脚本开发首选 Python;专注 Web 渗透、前端防御必须掌握 JavaScript、PHP;数据安全、漏洞防御必备 SQL。网络安全没有全能的单一语言,想要成为全面型专业安全人才。

A1353192296的博客 206

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

PoCBox:安全测试者的利器

PoCBox:安全测试者的利器 去发现同类优质开源项目:https://gitcode.com/ 项目简介 是一个由开发者 0verSp4ce 创建的开源项目,它是一个用于收集、验证和分享Proof of Concept(PoC,概念验证)的安全测试工具箱。通过PoCBox,你可以方便地管理和执行各种安全漏洞的PoC,这对于安全研究人员、渗透测试者以及对网络安全有兴趣的任何人都非常有帮助。 技术分...

gitblog_00094的博客 630

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

零基础自学:2023年的今天,请谨慎进入网络安全行业

2023年的今天,慎重进入网安行业吧,目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多,还有很多高中被挖过来的大佬。

kali_Ma的博客 454

黑客常用七大编程语言,让你在黑客世界游鱼得水

黑客必用的七大编程语言,不用我多说什么了吧!

A1_3_9_7的博客 98

为什么Python是网络安全人最爱的编程语言?

Python是由Guido van Rossum在35年前设计开发 ,目前已成为一种应用较广泛的高级编程语言,具有简洁易用、生态蓬勃、泛用性广等特点。在网络安全行业,Python语言的应用同样非常广泛,甚至成为网络安全人必须掌握的基本技能。因为在以自动化为典型特征的现代网络攻防对抗中,Python语言不仅可以帮助安全工程师自动化执行防御任务,同时还可以获得广泛的工具包支持,就像“编程语言中的瑞士军刀”一样功能全面而强大。Python适合网络安全行业的理由。

A1_3_9_7的博客 736
上一篇: 校园网络综合布线系统设计与实践
下一篇: python在网络爬虫方面的应用
「已注销」
博客等级 码龄9年 1050粉丝 202原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值