通过实施针对性的渗透测试,发现成绩管理系统网站的安全漏洞,保障系统WEB业务的安全运行。
根据事先交流,本次测试的范围详细如下:
系统名称 | 成绩管理系统网站 |
---|---|
测试域名 | www.grade.com |
测试时间 | 2019年09月20日-2019年09月22日 |
说 明 | 本次渗透测试过程中使用的IP为:172.16.16.41 |
通过漏洞扫描和手动分析获取相关数据。
根据测试的范围,本次渗透测试可能用到的相关工具列表如下:
检测工具 | 用途和说明 |
---|---|
OWASP ZAP | 全称:OWASP Zed Attack Proxy攻击代理服务器是世界上最受欢迎的免费安全工具之一。ZAP可以帮助我们在开发和测试应用程序过程中,自动发现 Web应用程序中的安全漏洞。另外,它也是一款提供给具备丰富经验的渗透测试人员进行人工安全测试的优秀工具。 |
Nmap | Linux、FreeBSD、UNIX、Windows下的网络扫描和嗅探工具包。 |
Nessus | 系统漏洞扫描与分析软件。 |
Burpsuite | 网络抓包工具,对网络的数据包传输进行抓取。 |
AntSword | 开源的跨平台网站管理工具 |
浏览器插件 | 对工具扫描结果进行人工检测,来判定问题是否真实存在,具体方法依据实际情况而定。 |
其他 | 系统本身具备的相关命令,或者根据实际情况采用的其他工具。 |
通过端口扫描或主机查看,确定主机所开放的服务。来检查是否有非正常的服务程序在运行。
通过Nessus进行主机扫描,通过OWASP ZAP进行WEB扫描,通过Nessus进行主机扫描。得出扫描结果后,三个结果进行对比分析。
对以上扫描结果进行手动验证,判断扫描结果中的问题是否真实存在。
(1)使用OWASP ZAP扫描结果如下。通过扫描该学生成绩管理系统网站,得到可能存在的漏洞:SQL注入、XSS。
(2)使用nmap扫描端口结果如下。通过扫描目标地址提供的服务及版本,该服务器开放的端口有21(用于FTP服务)、22(用于SSH服务)、80(用于WEB服务)和8080(用于WWW代理服务);接着探测防火墙状态,发现端口被过滤,防火墙应该正常运行。
(3)使用nessus扫描目标主机结果如下。通过扫描得知,目标存在1个高危漏洞(HTTP TRACE / TRACK Methods Allowed)和一个低危漏洞(SSH Server CBC Mode Ciphers Enabled)。
根据现场具体情况,通过双方确认后采取相应的解决方式。
本次渗透测试共发现5个的高危漏洞、1个的中危漏洞和1个的低危漏洞。这些漏洞可以直接使攻击者遍历网站、登陆web管理后台,同时可能引起内网渗透等。
风险等级:
高
漏洞描述:
攻击者可通过该漏洞构造特定带有恶意Javascript代码的URL并诱使浏览者点击,导致浏览者执行恶意代码或被窃取cookie。
漏洞位置:
http://172.16.16.41/query.php?user=1
变量:user
漏洞验证:
以其中一个XSS漏洞利用示范为例,在浏览器中输入:
http://172.16.16.41/query.php?user=%3Cscript%3Ealert%281%29%3C%2Fscript%3E
结果如图:
修复建议:
对传入的参数进行有效性检测,应限制其只允许提交开发设定范围之内的数据内容。要解决跨站脚本漏洞,应对输入内容进行检查过滤,对输出内容的特定字符转义后输出,可采取以下方式:
在服务器端对所有的输入进行过滤,限制敏感字符的输入。
对输出进行转义,尤其是< > ( ) & # 这些符号。
<和>可以转义为 <和 >。
(和) 可以转义为(和 )。
#和& 可以转义为#和 &。
风险等级:
高
漏洞描述:
系统中测试页面中存在SQL注入漏洞,攻击者可通过该漏洞查看、修改或删除数据库条目和表以获取敏感信息。
漏洞位置:
http://172.16.16.41/query.php?user=1
变量:user
漏洞验证:
如下图所示,参数user存在time-based blind和UNION query类型的注入:
(1)利用Sqlmap爆出数据库名
(2)利用Sqlmap爆出数据库grade中的表名
(3)利用Sqlmap爆出表admins中的字段
(4)利用Sqlmap爆出表admins中的字段id、name和pass字段内容
整改建议:
使用下列fliter_sql函数过滤特殊符号、关键词等或者部署web应用防护设备。
风险等级:
高
漏洞描述:
系统中测试页面中存在文件上传漏洞,攻击者可通过该漏洞上传木马以获取系统的webshell。
漏洞位置:
漏洞验证:
(1)构建一句话木马作为作业上传到服务器
(2)利用AntSword连接木马
(3)可以遍历网站目录
(4)进入终端可以查看(权限不足)部分信息,攻击者可以借此进行信息收集
(5)后续提权后将导致服务器沦陷
整改建议:
限制文件上传的类型,限制上传文件大小,确保上传文件被访问正确返回或使用其他过滤函数。
风险等级:
低
漏洞描述:
攻击者可通过hydra工具或者人工猜解,获取管理后台url地址、FTP服务器和数据库。
漏洞位置:
ftp://172.16.16.41
漏洞验证:
(1)猜测数据库管理员密码为弱口令
(2)得到该服务器网站的数据库
(3)得到网站管理员密码
(4)利用hydra爆破FTP服务器
整改建议:
使用强口令。
风险等级:
高
漏洞描述:
攻击者利用TRACE请求,结合其它浏览器端漏洞,有可能进行跨站脚本攻击,获取敏感信息,比如cookie中的认证信息,这些敏感信息将被用于其它类型的攻击。
漏洞位置:
漏洞验证:
利用Burp suite抓包访问内容,查看trace内容。
整改建议:
对于2.0.55以上版本的apache服务器,只用在httpd.conf添加TraceEnable off。
风险等级:
低
漏洞描述:
攻击者可能从SSH会话中将密文恢复为明文消息造成信息泄露。
漏洞位置:
SSH服务器被配置为支持Cipher块链接(CBC)加密。
漏洞验证:
SSH连接后,爆破密文内容。
整改建议:
请与供应商联系或查阅产品文档以禁用CBC模式密码加密,并启用CTR或GCM密码模式加密。
风险等级:
中
漏洞描述:
攻击者可通过Burp suite和wireshark等抓包软件,直接获取数据传送时的管理员密码。
漏洞位置:
http://172.16.16.41/login.html
漏洞验证:
在浏览器中输入测试数据
Burp suite抓包结果如图:
整改建议:
用户的密码信息在传输时,使用MD5、SHA-1等进行加密。
风险等级:
高
漏洞描述:
攻击者可事先构造一个与正常网页相似的恶意网页,并将该网页的action指向正常添加管理员用户时访问的URL,当系统管理员访问恶意网页时,恶意代码在管理员不知情的情况下以系统管理员的合法权限被执行,攻击者成功伪造管理员。
漏洞位置:
http://172.16.16.41/login.html
漏洞验证:
利用Burp suite抓包后发现Referer直接指向对应页面。
整改建议:
添加Referer头检测函数,对Rerferer进行过滤;添加token检测。
风险等级:
低
漏洞描述:
攻击者可通过上传恶意代码,由于低版本的浏览器将内容解释为不同的内容类型,然后由浏览器执行这些代码将使用替代的内容类型来解释文件,便可以将这些内容作为可执行文件或动态HTML文件来处理。
漏洞位置:
成绩管理系统网站文件。
漏洞验证:
查看网站html文件均未添加防止基于 MIME 类型混淆攻击的保护措施。
整改建议:
在标头添加下列代码。
通过本次渗透测试发现该成绩管理系统网站存在的薄弱环节较多,修复建议如下:
管理员密码建议设置强口令, 不要使用QQ 、生日和邮箱的信息作为服务器密码,不要使用通用密码,还应考虑口令的加密传输和数据库加密存储。
应用系统在开发过程中,应考虑网站应具备的安全功能需求,如:登录框的验证码机制、上传功能安全机制、文本输入框关键字过滤机制等方面,所以建议重新部署WAF的检测机制。
定时更新系统补丁,及时修复系统漏洞,软件更新到最新版本;关闭不常用的端口,对容易受到攻击的端口做端口转发。
建议部署网站防篡改及网页防火墙系统,保护DMZ区域内的所有WEB网站。