赞
踩
◆漏洞映射:
根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞
漏洞映射旨在识别和分析目标环境中的决定性安全缺陷,有时也称为脆弱性评估。它是一种 在IT基础设施的安全控制中探寻已知弱点的分析方法,是脆弱性管理计划的一个关键组成部 分。测试人员在完成了信息收集、目标识别和服务枚举的相关工作后,就可着手分析目标设 施中可能存在的安全漏洞。安全漏洞可能导致目标系统发生安全事故,有害于业务系统的保 密性、完整性和可用性。
● 漏洞的两种常见类型:本地漏洞和远程漏洞。
● 几款有助于査找并分析目标环境中存在的安全缺陷的安全工具。本章依据这些工具在安仝评 估中的主要功能对它们进行了分类,把它们分为 OpenVAS 工具、Cisco 分析工具、模糊分析 工具、SMB分析工具、SNMP分析工具和Web应用程序分析工具。
值得注意的是,在进行渗透测试(包括内部和外部)时,人工评估和自动化脆弱性分析都很 等重要。完全依赖自动化测试工具获得的评估结果,可能会有假阳性(误报)和假阴性(漏 报)的情况。同时,审计人员对技术评估工具的熟悉程度同样影响着渗透测试工作的质量。 要保障渗透工作的长期质量,要在注重评估工具质量的同时,不断提高审计人员的技能水 平。本质上说,自动化工具生成的脆弱性分析结果不可能是最终的评估结果;自动化工具不 能识别逻辑错误、未发现的漏洞、未公布的软件缺陷,以及影响安全的人类因素。因此,应 当同时结合自动化分析和人工分析的方法,综合评估安全漏洞,这将大幅度提升渗透测试工 作的成功概率。
▶ 漏洞的类型
按照产生缺陷的不同阶段,漏洞可划分为以下三个大类:设计类、实施类和运营类。
● 设计类漏洞:在软件设计阶段,因软件规格指标设计不当而产生的安全弱点。
● 实施类漏洞:位于系统代码中的技术安全缺陷。 ● 运营类漏洞:由于系统的配置或部署不当而导致的安全漏洞。
基于对这三个类别的分析,我们总结出了漏洞的两个通用类型,即本地漏洞和远程漏洞。上述三类类漏洞既可以是本地漏洞,也可以是远程漏洞。
在上述三类漏洞之中,哪种漏洞问题最难解决?
开发人员根据安全性需求指定系统安全规格,并依此在实施过程中实现各种安全指标。因 此,解决设计类漏洞的时间最长。
▶ 本地漏洞
攻击人员以本地(物理)访问方式,通过执行代码的手段才能触发的漏洞称为“本地漏洞”。攻 击人员能够利用这种类型的漏洞提高自身的访问权限,不受限制地访问该计算机系统。
例如,Bob拥有访问MS Windows Server 2008(32 位x86 平台)服务器的本地权限。管理员 通过某种安全策略限制了他的访问权限,禁止他运行特定的应用程序。在极端条件下,他发 现恶意代码可让他获取该计算机的系统级别或内核级别权限。利用了著名的安全漏洞(例 如,CVE-2013-0232、GP Trap Handler nt!KiTrap0D)之后,他提升了自己的权限等级,并 能够进行管理级别的操作,可不受限制地执行应用程序。这个范例表明,恶意的安全对手可 通过本地漏洞轻易地提升他们访问计算机系统的权限。
▶ 远程漏洞
在物理上不接触主机的情况下,攻击人员使用恶意程序通过网络触发的系统漏洞,称作远程 漏洞。这种类型的漏洞可使得攻击人员越过物理上的和本地上的限制,获取远程主机的访问 权限。
例如,Bob和Alice分别联入互联网。他们的IP地址不同,分属不同的国家。假设Alice的电脑 运行的操作系统是Windows XP,使用了生物学认证技术。再假如Bob 事先知道Alice主机的操 作系统和IP地址。Bob极力想获取Alice电脑的远程控制权限。同时,他了解到可通过MS0867 漏洞(Windows Server Service 的漏洞)远程攻击Windows XP 主机。
他使用了有关exploit程序获取了Alice主机的访问权限。 漏洞(vulnerability)和漏洞利用程序(exploit)的关系是什么?
漏洞是系统上存在的安全弱点。共计人员可利用有关漏洞或bug获取该主机的未经授权的操作 权限。
▶ 漏洞的分类
随着近些年来技术领域的持续发展,人们也在不断总结安全漏洞的各种分类方法,期待以最 合理的方式划分所有的常见漏洞。但是,就常见的影响系统安全的编程问题来说,还没有一 种分类方法可以将之完全归纳。实际上,单一的漏洞可能分别属于多个类别或类型,这是现今分类方法都解决不了的问题。另外,每种系统平台都需要与外部环境进行交互,这又带来 分类方法的关联性问题、复杂性问题和扩展性问题。
▶ OpenVAS脆弱性分析工具
OpenVAS是一款封装了多种安全工具和安全服务的软件,是一个强大的漏洞管理平台。它采 用了客户端/服务器的框架。其客户端测试目标主机网络漏洞的一系列操作,都是通过服务器 端程序实现的。它的设计兼备模块化和稳定性的特点,支持并行安全测试,且兼容多种操作 系统(Linux/Win32)。OpenVAS的核心组件和主要功能如下。
● OpenVAS scanner(扫描器):负责管理、执行各种网络漏洞测试(NVT,Network Vulnerability Test)。NVT的订阅服务提供每日更新。整个平台可通过订阅服务更新测试插件 (参见http://www.openvas.org/nvt-feeds.html)。
● OpenVAS Client(客户端):即传统形式的桌面客工具和命令行工具(CLI)。它通过OTP 协议(OpenVAS Transfer Protocol)控制扫描器。OTP相当于OpenVAS scanner的前段通信 协议。
● OpenVAS Manager(管理程序):漏洞扫描平台的中央控制服务。管理程序仅负责集中存 储配置文件和存储扫描结果。此外,它的OMP 协议(OpenVAS Management Protocol)完 全基于 XML,可用于各种用途。OMP 可用于设置扫描计划、生成测试报告、筛选扫描结果和 聚合活动。
● Greenbone Security Assistant(安全助手):工作于OMP 的Web 服务。它用于向用户提 供一种基于OMP的Web客户端,方便用户配置、管理、控制具体的扫描操作。它的桌面版客 户端程序叫做GSA Desktop,功能完全一样。此外,OpenVAS CLI(命令行工具)还支持在 文本命令行下运行OMP协议的指令。
● OpenVAS administrator:负责用户管理和订阅更新
▶ Cisco Global Exploiter(测试Cisco设备的14种独立漏洞)
# cd /usr/bin
#cge.pl
例:#cge.pl 10.200.213.25.3
上述指令进行的是第3类测试——测试Cisco IOS HTTPAuth漏洞,而且程序成功地利用了某个漏洞。进行深入调查之后,会发现其他类型的Cisco设备同样存在这种漏洞,而且可以使用相似的手段利用这些漏洞。
▶ 模糊(Fuzz)测试工具
模糊分析是一种软件测试技术。审计人员和开发人员采用模糊分析技术,测试意外数据、无效数据和随机的数据输入对应用程序的影响。人们关注应用程序在模糊测试中出现的异常状 态和崩溃问题。这种测试技术可深度揭露软件所隐含的其他测试手段不可能挖掘出来的漏洞。它能发现的漏洞有缓冲区溢出、格式化字符串、代码注入、迷途指针、竞争条件、拒绝 服务条件和许多其他类型的漏洞。
Kali Linux 带有多种模糊测试工具。这些工具可以测试文件格式、网络协议、命令行输入、环境变量和Web应用。不可信的数据输入源都会输入不安全的和不一致的数据。例如, Web应用程序和互联网用户之间的信任边界不可预知。既然如此,就应当对所有可能的数据输入都 进行尝试(模糊测试),以验证巳知和未知的漏洞。模糊分析是一种相对简单有效的测试方 法,可用于质量保证和安全测试。由于这个原因,它有时也被称为健壮性测试(robustness testing)或否定测试(negative testing)。
模糊分析的关键步骤是什么?
通常认为,模糊测试由6 个步骤组成。这些步骤分别是识别目标、识别输入、生成模糊测试数据、执行模糊数据、监控输出和鉴别问题的可利用性(是否是exploit)。有关细节,请参见 Fuzzing:Brute Force Vulnerability Discovery的ppt文件。该文件可在下述网址下载: http://recon.cx/en/f/msutton-fuzzing.ppt。
▶ BED
Bruteforce Exploit Detector(BED)是纯文本协议的模糊测试工具,用于检测软件常见漏 洞。它可以检测出缓冲区溢出漏洞、格式化字符串漏洞、整数溢出、DoS条件等漏洞。BED 程序可以根据指定的协议,自动发送含有问题字符串的命令组合,以测试目标的处理方式。 它目前支持的协议包括ftp、smtp、pop、http、irc、imap、pjl、lpd、finger、socks4和 socks5。
# cd /usr/share/bed/
# bed.pl
▶ JBroFuzz
JBroFuzz是对Web应用程序进行模糊测试的著名平台。它可模拟HTTP协议和HTTPS协议的 Web请求。获悉要测试的域名和测试的URL部分之后,审计人员可以自己手工构造测试的请 求,也可以使用程序预定义的payload数据库,生成基于已知漏洞的恶意请求,再把这些请求 发送到目标服务器以进行模糊测试。JbroFuzz 的数据库能够帮助审计人员进行XSS、SQL 注 入、缓冲区溢出、格式字符串错误等问题的自动化测试。而后,程序会记录目标的相应回 复,以供进一步检査。基于执行测试的类型,审计人员应当手动调查服务器的响应或结果, 以便识别出任何可能存在的漏洞。
JBroFuzz的关键功能包括模糊管理、payload的分类处理、通过浏览器的代理服务器嗅探 Web 请求和回复、枚举网站目录等。这些功能都是应用协议模糊测试不可或缺的组成部分。 如需启动JBroFuzz程序,可在终端中使用下述指令
#cd /usr/share/zaproxy/lib/jbrofuzz/
#java -jar JBroFuzz.jar
▶ SMB分析工具
Server Message Block(SMB)是应用层协议,通常用于文件和打印机共享服务。此外,它 还可将网络中不同节点的串口服务和其他通信协议共享。SMB 又称为 CIFS(Common Internet File System)。 SMB采用了单纯的客户端/服务器的CS架构,而且兼容Linux和Windows等多种平台。 NetBIOS(Network BasicInput Output System)是SMB 协议的组成部分,用于Windows系统 的传输服务。NetBIOS 工作于 TCP/IP 协议(NBT),因此同一局域网内的每台电脑都可通 过唯一的网络名称和IP地址与另一台电脑进行通信。
此外,对于DEC/RPC服务程序实现的网络节点间IPC(跨进程通信)而言,其认证通道同样 使用SMB协议。也就是说,不同电脑、不同进程间都可通过SMB的认证通道进行数据交换。 NetBIOS服务通常在不同的TCP端口和UDP端口(135、137、138、139、445)上提供不同 的服务。因为SMB功能强大而防护能力脆弱,所以它是黑客的首要攻击目标。人们曾经曝光 了SMB协议的大量漏洞,这些漏洞都为入侵者敞开了方便之门。本节将介绍获取SMB信息的 多个工具,它们可获取主机名、运行服务、域控制器、MAC地址、操作系统类型、当前登录 用户、隐藏共享、时间信息、用户群组、当前会话、打印机、可用磁盘等信息。
ImpacketSamrdump
Samrdump 是获取主机敏感信息的工具。它通过 DCE/RPC(Distributed Computing Environment/Remote Procedure Call)服务调用 SAM(安全账户管理器,Security Account Manager)的远程接口,继而获取信息。它可列举同一局域网内的目标主机上的所有的系统 共享、用户账户和其他信息。
如需启动ImpacketSamrdump,可在shell中执行下述指令。
#cd /usr/share/doc/python-impacketdoc/examples
/samrdump.py
# python samrdump.py
上述指令将显示它的使用说明和必要的语法简介。简单的说,python samrdump.py user:pass@ip port/SMB这样的指令就可对指定目标的指定端口(139或445)进行检测。
▶ SNMP分析工具
SNMP(Simple Network Management Protocol)是一个运行于UDP 协议161 端口的应用层 协议。SNMP 协议主要用于网络设备运行状态的监控,以关注需要管理员干预的事件,及时 了解诸如电源断电、网络不可达等网络运行情况。采用了SNMP管理技术的网络结构,通常由 网络设备、管理端和代理端组成。
管理端程序负责网络管理和状态监控的管理任务。代理端是网络设备运行的软件。可运行客 户端程序的网络设备包括支持SNMP协议路由器、交换机、集线器、网络摄像头、网桥,以及 安装客户端程序的操作系统(Linux、Windows)主机。安装了代理端程序的设备通过SNMP 协议向管理端报告设备带宽、正常运行时间、运行进程、网络接口、系统服务等数据信息。 SNMP 信息通过多个变量分别描述了系统不同方面的配置情况。SNMP 信息采用MIB(Management Information Base)的层次结构方式组织消息中的各种变量,每个变量有 确定的唯一对象标识符(Object Identifier,OID)。SNMP 协议共有三个版本,即v1、v2和 v3。
以安全角度看,vl和v2版本的方案均是通过团体字符串实现安全防护。而v3在保密性、完整性 和身份验证方面的功能更好。
SNMP Walk
SNMP Walk是一个功能强大的SNMP信息采集工具。它可依据设备类型提取所有配置数据。 这些信息将对攻击的后续工作非常有用。此外,SNMP Walk 可针对性地获取单组MIB数据或 特定OID值
#snmpwalk
上述命令将显示该程序的使用说明和选项说明。SNMP Walk 可以使用三种不同版本的SNMP 协议(即vl、v2c和v3),这也是它的主要优势所在。在远程设备使用的SNMP协议不能向下 兼容时,这一优势将发挥作用。
本例将使用下述指令,在指令行中分别以v1和v2c版本的 SNMP协议获取远程主机的信息。
snmpwalk -v 2c -c public -O T -L f snmpwalk.txt 10.20.127.49
上述指令的输出信息可帮助我们深入地了解目标主机。其中,选项-c 用于指定提取MIB 所需 的团体字符串,-O 选项将输出结果以可读的文本(T)形式进行输出,-L选项将数据保存为文 件(f snmpwalk.txt
▶Web程序分析工具
现在的应用程序大多采用了多种Web技术,这不仅增加了程序问题的复杂性,而且增加了敏 感数据泄露的风险。一直以来,Web 应用程序从始至终都是恶意对手窃取、操纵、破坏和敲 诈企业业务的目标。Web 应用程序的大量普及,也给渗透测试人员带来了前所未有的巨大挑 战。Web 应用程序(前端)和数据库(后端)都是加固网络安全的重点。Web应用程序扮演 着数据处理系统的角色,而数据库负责存储敏感数据(例如信用卡号、用户信息、认证数据 等),所以两者的安全性都要兼顾
Web应用程序的安全分析分为“Web应用程序测试”和“数据库测试”两个部分
▶数据库评估工具
DBPwAudit是一款审计Oracle、MySQL、MS-SQL 和IBM DB2 服务器密码安全性的工具,它 是Java程序。这款工具大幅度地简化了使用新数据库(评估)技术的难度。在目标系统没有 采用强密码安全策略的情况下,它可帮助渗透测试人员找到数据库管理系统的有效账户。目 前,它支持字典式密码攻击机制。
如需启动 DBPwAudit 程序,可在shell 中使用下述指令。
#cd /usr/share/dbpwaudit/
#dbpwaudit
如需知道DBPwAudit可以驱动的数据 库类型,可使用下述指令。
#dbpwaudit -L
进行字典 式测试之前,我们需要提前准备好两个字典文件,即users.txt和passwwords.txt。然后使用下 述指令
#dbpwaudit -s 10.2.251.24 -d pokeronline -D MySQL -U \ users.txt –P
-d 选项代表目标数 据库的名称,-D 选项用于指定相应的数据库管理系统(DBMS)。-U 选项指定用户名字典, -P选项则用来指定采用的密码字典。
2.SQLMap
SQLMap是一款先进的自动执行SQL注入的审计工具。针对指定的URL,它可以扫描、发现 并利用SQL注入漏洞。目前,SQLMap支持的数据库管理系统包括MS-SQL、MySQL、 Oracle和PostgreSQL。略微处理之后,它也能够识别诸如DB2、Informix、Sybase、 Interbase和 MS Access 之类的数据库系统。SQLMap 采用4种独特的 SQL 注入技术,分別 是SQL盲注、联合査询SQL注入、累加式注入(stacked query)和基于时间的SQL盲注入。 它功能广泛,可对数据库进行指纹识别、服务枚举、数据提取,并可访问目标主机的文件系 统,在获取完全操作权时甚至可以执行任意命令。此外,该工具还可以从Burp Proxy或Web Scarab的日志,以及标准的文本文件中解析测试目标的列表。它还能够调用Google dorks 的 分类数据,使用Google搜索引擎搜索指定目标的可测试网址。
如需启动SQLMap程序,可在shell中使用下述指令:
#cd /usr/share/sqlmap/
#sqlmap -h
上述命令将显示所有可用的选项。这些选项可以分为11个逻辑分类,即目标规格、连接请求 参数、注入payload、注入技术、指纹识别、枚举选项、用户自定义函数(UDF)注入、文件 系统访问选项、操作系统访问选项、Windows 注册表访问和其他杂项
例:sqlmap -u "http://testphp.example.com/artists.php? artist=2" -p "artist"-f -b --current-user -current-db --dbs --users
-p选项用来指定目标 URL里需要测试的参数。默认情况下,SQLMap会扫描所有可用的参数(GET、POST、 HTTPCookie和User-Agent),但是我们通过指定参数(-p"Parameter 1,Parameter 2")限 制了测试对象的范围。这将提升SQL注入的速度,从而提高访问后台数据库的速度。在下面 的测试中,我们使用--tables选项和-D选项,从数据库fanart中提取所有表的信息
sqlmap -u "http://testphp.example.com/artists.php? artist=2" --tables -D fanart -v 0
如果两次测试都使用了相同的 URL,SQLMap 程序使用了上次会话 (session)中提取的指纹信息,并没有从头对数据库进行测试。这种功能可让用户随时终止 并保存测试会话,以便在后续阶段继续此次会话。此处,我们还可以使用--dump或--dump all 选项,对数据库信息进行自动存储。这个程序还有其他一些高级选项,例如--os-cmd、--osshell 或--os-pw 用于可帮助渗透测试者获得远程访问系统权限,并执行任意命令。但是,此 类功能仅支持MS-SQL、MySQL和PostgreSQL这三种运行于操作系统的数据库系统。如果还 需要使用SQLMap的其他选项
Metasploit框架可以支持SQLMap的哪些选项?
SQLMap的--ospwn选项、--os-smbrelay选项、--priv-sec选项和--msf-path选项,都是在数据 库系统的操作系统上执行的指令选项。Metasploit可通过三种payload使用这些选项:shell、 交互式命令环境和GUI访问(VNC)。
3.SQL Ninja
SQL Ninja 是一款SQL 注入的审计工具,专门用于评估后台数据库采用MS-SQL Server的 Web应用程序。它可通过SQL注入漏洞获取远程数据库服务器的shell运行权限,而不是提取 数据库数据的工具。SQL Ninja 的功能有:对服务器进行指纹识别、暴力破解密码、提升权限、上传后门、直接调用shell、反连方法连接shell(绕过防火墙的技术)、反射shell、DNS 隧道、单命令执行等。它还可以与Metasploit进行集成。因此,它不仅是扫描SQL注入漏洞的 工具,而且还是利用已知漏洞获取操作系统访问权限的工具。
SQL Ninja 不是初学者玩的玩具。如果您需要配置并使用这种工具,请详细阅读作者的使用说明,在实际应用前充分了解这款工具。
如需启动SQL Ninja,可在桌面菜单里依次选中Kali Linux | Vulnerability Analysis |Database Assessment | sqlninja,或者在shell 中使用下述指令。
#sqlninja
上述指令将在屏幕上显示程序所有的可用选项。在进行测试前,需要根据已反映目标的情况 更改配置文件的参数和利用漏洞的选项。首先,您要将样本配置文件解压缩出来,把它重新 命名,然后移动到正确的目录中,进行如下修改。
#cd /usr/share/doc/sqlninja/
#gzip –d sqlninja.conf.example.gz
#cp sqlninja.conf.example.gz/usr/share/sqlninja/sqlninja.conf
然后,我们要修改配置文件,使其符合我们的测试内容。您需要在配置文件中找到下述内 容,然后删除行首的注释符号,并根据实际情况对有关选项进行调整。
(首先进行备份,好习惯的养成)
本文根据情况将配置文件的下述内容进行了调整。
#vim sqlninja.conf
#Host (required)
host = testasp.example.com
#Port (optional, default: 80)
port = 80
#Vulnerable page (e.g.: /dir/target.asp)
page = /showforum.asp stringstart = id=0;
#Local host: your IP address (for backscan and revshell modes)
lhost = 192.168.0.3
msfpath = /usr/share/exploits/framework3
#Name of the procedure to use/create to launch commands. Default is
#"xp_cmdshell". If set to "NULL", openrowset+sp_oacreate will be used
#for each command
xp_name = xp_cmdshell
在上述配置文件中,我们仅修改了一些必要的参数,其他没有提及的内容均采用了默认值。另外,在使用SQL Ninja 之前,还有必要使用其他工具检查SQL 注入的漏洞。在配置好配置文件之后,就可以使用它的攻击模式-m t/test 对目标进行检测。
#cd /usr/share/doc/sqlninja/
#sqlninja -m t(以下实例为示范,非个人操作)
可见,程序成功地识别出了配置文件的各种设置,而且盲注测试取得了成功。接下来,我们可以对目标进行指纹识别,以获取SQLServer的更多信息,并取得目标操作系统的操作权限。
#sqlninja -m f
上述信息表明,目标系统存在漏洞,其指定的数据库安全策略并不够安全。我们有机会上传 NetCat的后门程序,继而获取被攻陷主机的长期控制权,并可通过它的shell执行任意的指令。此时,人们常用Metasploit的攻击模式进行进一步的渗透。
#sqlninja -m u
至此,我们巳经成功上传后门。然后我们可通过该后门获得 s/dirshell、k/backscan或 r/revshell。此外,采用m/metasploit的髙级选项可以使用Metasploit 框架的SQLNinja封装程序 访问目标主机的GUI。如需详细了解SQLNinja的使用方法或它的配置文件,可以访问 http://sqlninja.source forge.net/sqlninja-howto.html
▶Web应用程序评估工具
本节介绍的工具主要关注Web基础设施前端程序的安全性。它们都可以识别、分析并利用应用程序的安全漏洞。这些漏洞包括缓冲区溢出、跨站脚本(XSS)、SQL 注入、SSI 注入、 XML注入、应用配置错误、功能滥用、会话预测、信息泄露以及许多其他类型的漏洞。7.2节 已经讨论过,应用程序漏洞有多种分类标准。如需更深入了解这些漏洞的特性,强烈建议掌握上述漏洞分类标准。
1.Burp Suite
Burp Suite组合了一系列功能强大的Web应用程序的安全工具。这些工具能够演示攻击人员对 Web应用程序的渗透方法。它们能够或手动或自动地扫描、分析并利用Web应用程序的安全 漏洞。Burp Suit将有关工具整合为一体,能够在多个工具之间传递和共享信息,成为了一个 完整的攻击平台。这一特性使得Burp Suite成为了简单有效的Web应用程序攻击框架。
如需启动Burp Suit,可在桌面菜单里依次选中Kali Linux | Web Applications | Web Vulnerability Scanners | burpsuite,或在终端中使用下述指令。
#burpsuite
上述指令将在屏幕上显示Burp Suite 的程序窗口。您可以通过对应的选项卡访问它所集成的 全部工具(Target、Proxy、Spider、Scanner、Intruder、Repeater、Sequencer、Decoder 和Comparer)。如需了解它们的用法和配置等详细信息,可以使用Help菜单或者访问 http://www.portswigger.net/suite/help.html。本例将使用Burp Suite的多个工具分析小型的 Web 应用程序。要注意,Burp Suite 有两个版本:免费版和商业版。Kali Linux 收录的版本是 它的免费版,因此有些功能受到限制。使用Burp Suite 检查SQL注入漏洞的相应步骤如下。
1. 首先,选择Proxy | Options,检查proxy listeners的属性。本例采用程序的默认设置,即监 听 8080 端口。您还可以根据评估任务的实际情况设置这个界面的其他选项,例如主机重定 向、SSL证书、客户端请求拦截、服务器响应拦截、页面属性和请求头修改等。
2. 选择Proxy | Intercept,选中intercept is on标签。 3. 打开你最习惯的浏览器(例如Firefox),并设置HTTP/HTTPS 协议的代理服务器为本地代 理(127.0.0.1, 8080)。代理服务器能够拦截、检查并修改浏览器发往目标Web应用程序之 间的客户端请求,并且能够记录服务器发回的所有响应。在这种设置中,Burp Suite 的功能 类似中间人代理服务器。
4. 浏览目标网站(例如,http: //testphp.targetdomain.com),您可在Burp Suite 的Proxy | Intercept选项卡中看到浏览器发送的请求数据(http request)。在本例中,我们不对浏览器 请求进行任何修改,直接转发这个请求。如需修改请求,可以在Raw、Headers或者Hex选项 卡中修改。清注意,在访问索引页(index)等网页时,浏览器会对网页中的各种资源(例如 图像、Flash文件)发送单独的获取请求。
5. 在此,强烈建议访问尽可能多的网页,以帮助Burp Suite列出可用页的GET和POST 请求。 当然,也可以使用程序的 Spider 功能自动完成分析过程。如需使用 Spider的爬虫功能,可在 菜单中选中 Target|Site Map,右键点击目标网址(本例是http://testphp.examples.com), 然后选择spider this host。此后,程序将会自动发现、扫描可用页面;当遇到需要递交数据的 页面(例如登录)时,程序将提示您进行人工干预。此操作结束后,可在Target|Site map选 项卡右侧的面板中査看可访问网页清单和页面属性(方法、URL、参数、响应码等)。
6. 您可选择一个采用GET或POST 模式传递参数的页面,用Intruder 进行测试。关键是要找到 可能的参数标识符,获取有用数据,并对这些参数进行模糊测试,以检测已知漏洞。右键单 击选定的请求,并选择 send to intruder。本例测试的网址 是http://testphp.targetdomain.com/listproducts. php?artist=2;程序将以不同长度的字符替代 2,以找到已知的漏洞。
7. 接下来,我们要指定攻击类型以及有效载荷(payload)的位置(Intruder | Positions),以 进行自动测试。有效载荷的位置有§2§标识。然后,我们通过菜单进入 Intruder | Payloads, 从预定义字符块列表中选择预定义的有效载荷(payload),本例选择Character blocks。当 然,您还可以指定自定义的有效载荷。设置完毕后,选择菜单Intruder | Start 执行测试任务。 此时,程序将会在弹出的窗口里显示测试目标应用程序时发送的全部请求。待程序处理完所 有指定的有效载荷之后,我们可通过远程响应的比较结果判断Web应用程序的意外行为。使 用鼠标右键点击选定的请求并选择send response to comparer,即可对响应进行比较。BurpSuite 可以对两个(或更多)的请求或响应进行逐字逐节(bytes和words)的比较。如需详细 了解各种攻击类型,请访问 http://www.portswigger.net/burp/help/intruder_positions. html#attacktype;如需了解有关有效载荷选项的更多信息,请访问 http://www.portswigger.net/burp/help/ intruder_payloads_types.html。
8. 在比较响应的过程中,我们发现其中一个有效载荷请求存在 SQL 注入漏洞。为了验证其真 实性,我们决定使用 Repeater 重现该请求。即使用鼠标右键点击该请求,然后选择 send request to repeater,之后单击 Repeater 选项卡中的 go 按钮,将会立即获取指定请求的远程 响应。在本例中,我们注意到响应页面中的下述错误信息。
Error: Unknown column 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAA' in 'where clause' Warning : mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/default/htdocs/listproducts.php on line 74
9. 上述信息是SQL 注入漏洞的典型特征。除了检验这种类型的安全问题,我们还可以使用 Burp Suite 的sequencer 测试应用程序session tokens的散化程度,检测session的可预测问 题。有关sequencer的基本用法,请参见http://www.portswigger. net/suite/sequencerhelp.html。
Burp Suite 是款多功能的Web 应用程序安全工具。它是应用广泛、功能强大的Web应用程序 攻击平台。篇幅所限,本文不逐一介绍它的各个功能。所以,建议通过它的官方 网站(http://www.portswigger.net/)详细了解它的各种用法。2.Nikto2
Nikto2是一款基础的Web服务器安全扫描工具。它可以扫描、检测由下述问题引起的的安全漏洞:服务器的配置不当问题、默认和不安全的文件、过旧的服务端应用程序。Nikto2程序完全 是LibWhisker2的再开发版。因此,它支持跨平台部署、SSL、常见的主机身份验证方式 (NTLM/Basic)、多代理,并采用了多种 IDS 规避技术。它还支持子域名枚举、应用程序安 全检査(XSS、SQL注入等),并能够使用字典的攻击方法猜测认证信息。 如需启动Niklo2 程序,可在终端中使用下述指令。
#nikto
上述指令将显示其所有选项及其扩展特性。
#nikto -h testphp.example.com -p 80 -T 3478b -t 3 -D \ V -o webtest –F
上述指令中,-T 选项指定测试类型为 Information Disclosure(信息泄露)、Injection (XSS/Script/HTML)、Remote File Retrieval(Server Wide)、Command Execution 和 Software Identification(软件识別);-t 选项控制每个测试类型执行的超时时间:-DV 选项控 制显示格式;-o和-F选项用于定义扫描报告以特定的格式和编写。Nikto还有其他的选项,例 如-mutate(猜测子域、文件、目录、用户名)、-evasion(规避IDS检测)和-Single (单组 规则测试模式),都可以用来进行更为深入的安全评估。
▶3.Paros Proxy
Paros Proxy 是一款名不见经传的深入分析安全漏洞的评估工具。它能以爬虫方式分析整个网 站的网址,并执行各种漏洞测试。同时,审计人员还可以利用它的代理服务器功能拦截本机 浏览器和目标应用程序服务器之间的Web流量(支持HTTP/HTTPS协议)。审计人员可以利 用这种机制修改本机发往目标服务程序的特定请求,从而进行手工测试。因此, Paros Proxy 不仅是Web 应用程序安全评估的主动评估工具,而且还是它的被动评估工具。 如需启动Paros Proxy程序,可在终端中使用下述指令。
#paros
上述指令将加载Paros Proxy程序的图形窗口。在开始测试前,你需要在浏览器中设置本地代 理,即设置代理的 IP 为 127.0.0.1,端口为 8080。如需调整默认设置,可在菜单Tools | Options中调整连接设置、本地代理的设置、HTTP认证和其他相关设置。在设置好浏览器之 后,就可以访问目标网页了。使用Paros Proxy进行漏洞测试的具体步骤如下。 1. 在本例中,我们访问http://testphp.targetdomain.com。此后,Paros Proxy的Sites选项卡里 显示这个网址。
2. 使用鼠标右键单击http://testphp.targetdomain.com 并选择Spider,以爬虫方式分析整个网 站的网址。扫描网址的时间取决于网站的页面数量。
3. 在程序抓取完网址之后,您可通过底部的Spider 标签査看所有抓取到的网址信息。此外, 也可以通过在Sites选项卡中选择特定网站的网页,以跟踪其请求和响应。
4. 您在右侧面板中的 Trap 选项卡中,调查特定的请求和响应的响应。在对目标应用程序进行 手动测试时,这项功能尤其有用。此外,您可通过菜单 Tools | Manual Request Editor,手工 构建一个HTTP请求。
5. 在 Sites 选项卡里选中目标网站,然后在菜单中选择 Analyze | Scan All,可对选定网站进 行自动化的漏洞测试。另外,您还可以在 Analyze | Scan Policy 指定安全测试的特定类型, 然后使用单独的 Analyze | Scan 功能进行特定类型的安全测试(而不是Scan All 进行的那种 全面测试)。
6. 在程序完成漏洞测试之后,您可在底部的Alerts 选项卡中看到大量的安全警告。依照其危 害程度,这些漏洞被分为High、Low和Medium三种级別。
7. 如需查看上次扫描结果的报告,可打开菜单Report | Last Scan Report。它将会把本此测试 发现的所有漏洞保存为网页格式文件/root/paros/session/LatestScannedReport.htm。
在本例中,我们仅进行了基本的漏洞评估测试。如需获取Paros Proxy选项的详细说明,请访 问其官方的用户手册,地址为 http://www.ipi.com/Training/SecTesting/paros_user_guide.pdf。
4.W3AF
W3AF是一款功能丰富的Web应用程序攻击和审计框架,它主要用于探测和利用Web漏洞。它 实现了全自动化的应用程序安全评估过程。整个框架的设计理念遵循了下述三个主要的操作 步骤:识别、审计和攻击。在进行毎个操作步骤时,审计员都可使用其提供的注重特定测试 标准的功能插件。W3AF 的这些插件实现了互相之间的通信和数据共享,有助于协同完成测 试任务。它可检査、利用的Web应用程序漏洞包括SQL注入、跨站脚本、远程和本地文件包 含、缓冲区溢出、XPath 注入、操作系统命令、错误的应用配置等。有关各个插件的详细信 息,请查询http://w3af.sourceforge.net/plugin-descriptions.php。
如需启动 W3AF,可在桌面菜单中依次选中 Kali Linux | Web Applications | Web Vulnerability Scanners | w3af (Console),或在终端中使用下述指令。
w3af_console
上述命令将进入到W3AF特有的控制台模式(提示符为w3af>>>)。虽然在桌面菜单里也有这 个程序的GUI版本,但是考虑到操作灵活性,我们倾向于使用它的控制台版本。
w3af>>> help
上述指令将显示配置w3af测试所需的基本选项。在需要查看帮助时,可随时使用help命令查 看特定选项的说明信息。本例首先配置output 插件,然后启用特定的audit 测试选项,设置 target并对目标网站进行扫描。相关指令如下。 w3af>>> plugins
w3af/plugins>>> help
w3af/plugins>>> output
w3af/plugins>>> output console, htmlFile
w3af/plugins>>> output config htmlFile w3af/plugins/output/config:htmlFile>>> help
w3af/plugins/output/config:htmlFile>>> view
w3af/plugins/output/config:htmlFile>>> set verbose True
w3af/plugins/output/config:htmlFile>>> set fileName testreport.html
w3af/plugins/output/config:htmlFile>>> back w3af/plugins>>> output config console
w3af/plugins/output/config:console>>> help
w3af/plugins/output/config:console>>> view
w3af/plugins/output/config:console>>> set verbose False
w3af/plugins/output/config:console>>> back w3af/plugins>>> audit
w3af/plugins>>> audit htaccessMethods, osCommanding, sqli, xss
w3af/plugins>>> back
w3af>>> target
w3af/config:target>>> help
w3af/config:target>>> view w3af/config:target>>> set target http://testphp.example.com/
w3af/config:target>>> back
w3af>>>
我们通过上述指令调整好了各项参数。然后,我们将通过下述指令,评估目标的 SQL注入、 跨站脚本、操作系统命令、htaccess错误配置等漏洞的安全问题。
w3af>>> start Auto-enabling plugin: grep.error500
Auto-enabling plugin: grep.httpAuthDetect
Found 2 URLs and 2 different points of injection.
The list of URLs is:
http://testphp.example.com/ http://testphp.example.com/search.php?test=query
The list of fuzzable requests is:
http://testphp.example.com/ | Method: GET
http://testphp.example.com/search.php?test=query| Method: POST|Parameters: (searchFor="")
Starting sqli plugin execution. Starting osCommanding plugin execution.
A possible OS Commanding was found at:
"http://testphp.example.com/search.php?test=query", using
HTTP method POST. The sent post-data was:
"searchFor=run+ping+-n+3+localhost&goButton=go".Please review manually. This information was found in the request with id 22.
Starting xss plugin execution.
Cross Site Scripting was found at:
"http://testphp.example.com/search.php?test=query",
using HTTP method POST. The sent post-data was: "searchFor=ScRIPt/SrC=http://x4Xp/x.js</ScRIPt>&goButton=go".
This vulnerability affects Internet Explorer 6,Internet Explorer 7,Netscape with IE rendering engine,Mozilla Firefox,Netscape with
Gecko rendering engine.
This vulnerability was found in the request with id 39.
Starting htaccessMethods plugin execution. Finished scanning process.
上述信息表明,W3AF发现该Web应用程序存在多个严重的安全漏洞。我们已经在配置中指定 好了测试报告的文件名,该文件位于/pentest/web/w3af/testreport. html。扫描报告会列出所 有漏洞的全部细节,其中包括 W3AF 程序和目标 Web 应用程序之间每个请求信息、相应响 应、所传递的数据以及调试信息等。本例没有使用别的的插件(plugins)、配置文件 (profiles)和漏洞利用(exploit)选项。因此,本书强烈建议读者参考官方的用户指南,进 行各种练习。官方手册的下载网址是 http://w3af. sourceforge.net/documentation/user/w3afUsersGuide.pdf。
5.WafW00f
WafW00f是检测Web应用程序防火墙(WAF)的Python脚本程序。在评估WAF保护的目标主 机时,许多漏洞评估技术都难以奏效;而这正是WafW00f程序擅长的测试环境。部署于应用 服务器和Internet流量之间的WAF防火墙,不仅提高了测试策略的难度,同时还使渗透测试人 员开发的高级规避技术面临了新的挑战。
如需启动WafW00f程序,可在终端中使用下述指令。
#wafw00f
上述指令将在显示器上显示简单的使用说明,以及几个典型的指令范例。本例中,我们将通 过下述指令,分析目标网站是否使用WAF系统。
#wafw00f http://www.example.net/
WAFW00F - Web Application Firewall Detection Tool
By Sandro Gauci && Wendel G. Henrique
Checking http://www.example.net/
The site http://www.example.net/ is behind a dotDefender Number of requests: 5
上述信息表明,目标应用程序服务器处于防火墙的保护之下(例如,dotDefender)。通过这 些信息,我们可以进一步地调查规避WAF规则的方法。这可能涉及一些如HTTP参数污染、空 字节替换、规范化处理、使用十六进制字符或Unicode字符对恶意URL进行编码等技术。
6.WebScarab
WebScarab 是一款功能强大的 Web 应用程序的安全评估工具。它有多种操作模式,主要模 式为拦截代理。将WebScarab代理部署于终端用户浏览器和目标Web应用程序之间,可监 控、修改二者之间的请求和回应。审计人员可以手动构造连接请求,然后检査目标Web应用 程序返回的响应信息。WebScarab 集成了诸多工具,这些工具包括 fuzzer、session ID analysis、spider、web services analyzer、XSS 和 CRLF 漏洞扫描器和 transcoder等程序。
如需启动WebScarab Lite程序,可在桌面菜单里依次选中Kali Linux | WebApplications |Web Vulnerability Scanners | webscarab,或在终端中使用下述指令。
#webscarab
上述指令将执行精简版的 WebScarab。根据本例的需要,我们通过菜单 Tools | Use fullfeatured interface 令程序显示全部的功能选项。程序将询问您是否启用这项功能,然后会重 启该应用程序。再次启动之后,WebScarab的界面上将新增很多工具的选项卡。在开始评估 工作之前,我们应调整浏览器程序,使其使用本地代理服务器(127.0.0.1, 8080),以使得 浏览器通过WebScarab 的拦截代理访问目标主机。另外,您可以在Proxy | Listeners选项卡中 调整本地代理服务器的有关设置(IP地址或端口)。使用WebScarab程序分析目标应用程序 的session ID 的步骤如下。 1. 设置好浏览器的代理服务器选项之后,您可使用浏览器访问目标网站(例如 http://testphp.targetdomain.com/),并访问尽可能多的链接。浏览的页面越多,发现已知和 未知漏洞的机会也就越大。除了这种方法,您还可在Summary选项卡中使用鼠标右键点击目 标网站,然后选择Spider tree;此后,程序将自动査找目标应用程序的所有可用链接。
2. 如果想检查特定页面的请求和响应数据,可单击底部的Summary标签。程序将表格的形式 显示原始的和解析过的浏览器请求。此外,您还可以看到以 HTML、XML、TEXT和Hex格式 显示的响应信息。
3. 在测试过程中,我们决定对目标应用程序链接中的某个参数(例如,artist=l)以 GET 请求 进行模糊测试。这种测试有助于找到未被发现的漏洞。我们使用鼠标右键点击选定的链接, 并选择Use as fuzz template。然后转到Fuzzer 选项卡,点击Parameters 附近的 Add 按钮, 人工添加需要进行模糊测试的参数。在本例中,我们写了一个小型文本文件,这个文件含有 已知的SQL 注入数据(例如,1 AND1=2、1AND1=1、单引号[’]),然后指定这个文本文件 作为模糊测试的参数值。这种指定操作可通过Fuzzer选项卡下的Sources按钮完成。准备好模 糊测试数据后,我们点击 Start 开始测试。所有测试完成后,可以双击单个请求以检査其相应 的响应。我们在本例中发现了MySQL注入漏洞。
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'' at line 1 Warning: mysql_fetch_array():supplied argument is not a valid MySQL result resource in /var/www/vhosts/default/htdocs/listproducts.php on line 74
4. 最后,我们分析目标应用程序的session ID。我们选中Session ID Analysis选项卡,并在组 合框中选中Previous Requests。等程序加载了特定请求之后,我们在底部设定采样次数(例 如,20)。然后点击Fetch 按钮开始对session ID进行采样。之后,点击Test按钮对样本进行 分析。而后,可在Analysis选项卡下看到分析结果。此外,我们可在 Visualization 选项卡屮看 到相应的可视化分析。这种分析用于判断session ID 的杂化程度和不可预期性。上述指标如 果不理想,就可能引发通过某session ID劫持他人session或获取他人认证信息的事故。 WebScarab 另有大量的选项和其他的功能,它们有助于我们提髙对渗透测试的认识。有关 WebScarab 项目的更多信息,请访问 http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。