Pangolin帮助手册

如果您想打印帮助文档或责想在一个页面中查看帮助,您可以直接访问http://www.nosec.org/web/pangolin_help  

0.1 前言

Pangolin做为一款SQL注入测试工具被渗透测试人员广泛使用,但是由于帮助文档的缺乏导致很多安全测试人员对于一些基础功能都不知道如何操作,更不要说是高级功能了。因此,为了更好的指导使用者进行安全测试,本文档将对其进行详细的操作说明。我们希望对大家有所帮助,同时也期待您的宝贵意见。

0.2 谁应该阅读本文档

任何Pangolin的使用者都可以阅读本文档从而提高你的工作效率。
本文档将对所有基础功能以及部分高级功能进行详细的指导说明。要知道,尽管我最初开发Pangolin时的想法是尽量简化,但是在吸收了广大使用者的宝贵的修改意见后已经变得越来越复杂。所以文档的内容可能与最新版本的操作有所不符或者说会漏掉一些高级功能的说明。
另外,本文档不会对SQL注入的具体技术实现进行说明,如果您想了解更多的技术细节,你可以访问http://www.nosec.org网站,上面会有一些有用的信息。

0.3 致谢

我们想对所有帮助过Pangolin的朋友表示感谢,正是由于有你们的支持,Pangolin才会变得越来越强大。我们尤其想感谢如下一些朋友:

除此之外,我们也想感谢对本文档的开发提供了帮助的朋友:

0.4 关于本文档

您可以到http://www.nosec.org/web/pangolin_manual获取最新版本的文档。关于文档你有任何问题或者意见请发送邮件到zwell@sohu.com.
本文档由ZwelL进行编写和整理。希望其他能够提供帮助的朋友一起完成编写;)

第一章、简介

1.1 Pangolin是什么?

Pangolin是一款帮助渗透测试人员进行Sql注入测试的安全工具。所谓的SQL注入测试就是通过利用目标网站的某个页面缺少对用户传递参数控制或者控制的不够好的情况下出现的漏洞,从而达到获取、修改、删除数据,甚至控制数据库服务器、Web服务器的目的的测试方法。Pangolin能够通过一系列非常简单的操作,达到最大化的攻击测试效果。它从检测注入开始到最后控制目标系统都给出了测试步骤。

过去有许多Sql注入工具,不过有些功能不完全,支持的数据库不够多,或者是速度比较慢。但是,在Pangolin发布以后,这些问题都得到了解决。Pangolin也许是目前已有的注入工具中最好的之一。

1.2 使用Pangolin可以用来

如下是一些示例:

1.3 特色

如下是Pangolin提供的一部分特点:

1.4 它不能做什么

Pangolin只是一个注入验证利用工具,不是一个Web漏洞扫描软件。因此您不能用它来做整网站的扫描。另外,他也不支持注入目录遍历等功能,这些功能您可以借助其他的安全工具进行。

1.5 到哪里获取Pangolin

Pangolin的更新速度很快,你可以经常到http://www.nosec.org/web/pangolin去下载最新版本。

1.6 运行环境

目前Pangolin只能运行在Windows系统平台,支持32位/64位Windows NT/2000/XP/2003/Vista/2008。

1.7 报告问题和获取帮助

如果您在使用过程中有任何的意见或者建议,您可以到http://www.nosec.org网站上进行评论留言,这里会有一群共同兴趣的朋友帮助您。或者您可以直接给我发送邮件:zwell@sohu.com

第二章、用户界面

在本章中将为你详细介绍Pangolin的操作界面,让您知道:

2.1 主界面介绍

下图为主界面图

如上图所示,我们可以看到Pangolin的主界面是很简单明了的,它分为几个区域:最上面的是注入控制区域,在这里您可以进行一些注入参数设置,以及通过点击按钮进入到高级配置界面;中间的一大块区域为数据显示区域,用于显示注入获取的数据已经进行针对不同数据库的高级注入操作;下面有日志信息区还有状态栏区,能够告诉您当前的工作状态信息。下面我们就这些控件进行详细的说明:

2.1.1 URL输入框

在这里输入待测试目标的URL地址,注意,该URL地址必须是携带参数的格式,例如http://www.site.com/news.asp?id=100这样的格式。

2.1.2 注入方式选择框

这里简单的介绍一下。HTTP常用的数据传输方法有GET和POST方式,通常情况下,请求数据用GET方式,传递数据用POST方式。如果服务器端代码处理GET和POST参数的操作是一致的话(JSP编程中经常可以见到),那么通过GET和POST传递参数的效果是一样的。这时使用POST试可以避免服务端日志的产生。

另外需要注意的是,如果待测参数是通过表单传递,那么您需要进行地址拼接。假设参数传递的目标地址为http://www.site.com/login.asp,参数分别为username和password,那么测试时,您需要在URL输入框中输入http://www.site.com/login.asp?username=aa&password=bb这样的格式,并且将注入方式设置成POST。

普通模式下,我们建议您使用GET方式。

2.1.3 注入控制按键

Pangolin的注入过程采用了多线程的方式,您在注入过程中随时可以进行暂停/继续操作和停止操作。

在您输入了待测试目标的URL后,您可以点击Check进行扫描操作,这时Check按键变灰,Pause和Stop按键变为可用,这时您就可以进行暂停或中止操作了。

这里提醒您一点,在后面我们提到的所有的操作,无论是猜解数据也好,高级功能操作也好,在操作过程中,您随时可以暂停或者中止,但是Check按键只能用于注入扫描。

2.1.4 注入类型选择框

扫描不同的参数类型我们将注入类型分为interger和String还有Search型。分别对应数值型,字符型还有搜索型。在扫描到注入点以后,该选择框将自动选择对应的注入类型。

在注入前,如果我们已知了某个参数的注入类型,那么我们可以先从该下拉框中选择合适的值,这样能够缩短注入扫描的时间。

2.1.5 数据库类型选择框

顺便提及一点:SQL注入是跟数据库强相关的,而不是页面的代码语言,这一点许多文章都误导了读者。我们看到什么asp注入,php注入,jsp注入之类的概念都是不正确的。而应当说是MSSQL注入,Mysql注入或者Oracle注入等等。

在这个选择框中指明了目标Web连接的数据库类型。在扫描到注入点以后,该选择框将自动选择对应的数据库类型。

在注入前,如果我们已知了目标的数据库类型,那么我们可以先从该下拉框中选择合适的值,这样能够缩短注入扫描的时间。

2.1.6 关键字输入框

什么叫关键字呢?在自动化工具的测试过程中,如果目标针对不同的注入语句进行了错误提示的话那么程序能够知道这是一个典型的错误,然后就能够提取信息。但是如果页面返回的结果中并没有带有明确的错误提示信息的话,那么程序将无法判断哪一种情况下是正常页面哪一种情况下是错误页面。因为,测试人员需要手动的告之程序一个正常的页面或者错误的页面有什么特殊字符串能够标明,这时候您就需要在这里输入这个字符串了。

在其他的一些注入工具中,如果测试人员没有输入关键字的话是无法进行测试的,但是在Pangolin中我独创了自动分析关键字的功能,它能够让你在不干预的情况下自动的分析关键字从而更扫描出漏洞。在2.2节中,我们将给您描述如何启用或者关闭该功能。

2.1.7 配置按钮

Options按钮将带您进入到一些全局参数的配置界面中,这一部分我们将在下一节中为您详细介绍。

2.1.8 扫描状态重置按钮

如果您在完成了一次对某个URL的注入操作以后,还想对另一个URL进行扫描操作,那么建议您点击一下该按钮,从而将扫描注入的全局状态清空。

2.1.9 注入点手工配置按钮

本按钮属于高级选项,通常不建议您点击进行配置的修改。具体用途待整理。

2.2 配置界面

好了,如果您进入了本界面,说明您已经知道如何点击"Options"按钮了,那么恭喜 ;)先看看如下界面图:

从上图可以清楚的看到,配置界面中包含四大部分:

2.2.1 HTTP标题头编辑界面

在本界面中,您可以完全自定义HTTP标题头域的字段,如最常用的User-Agent和Cookie标题头,通常你需要知道一些特定含义的字符串。

这里也做一个简单的说明:User-Agent可以用来进行客户端伪造,您知道为什么很多情况下Google能返回某些正文而我们去请求时需要我们登录吗?原因很简单,网站为了自身更好的推广,所以针对Google的robots开放了通行证,所以我们就可以利用这种关系进行更深入的工作。而对于Cookie标题头而言,它的作用更明显了,说直白一点,它是我们身份的象征。一些站点需要先登录才能进行注入(如管理后台的页面),其他的一些注入工具需要你手动输入或者让你手工输入登录界面的参数字段来进行。但是在Pangolin中,您可以直接点击几下按钮来完成这些生涩的操作。

除此之外,你也可以自定其他一些个性化的标题头。

2.2.1.1 User-Agent选择按钮

这个按钮的功能显而易见,Pangolin预置了一些最常见的Web浏览器的客户端类型以及搜索引擎的类型,在点击按钮以后,您可以直接选择一个作为您注入时使用的对象,这样您就能伪造客户端类型了。

2.2.1.2 预登录界面

2.2.2 代理配置界面

2.2.3 注入扫描参数配置界面

2.2.4 高级参数配置界面

2.2.5 注入数据管理界面

第三章、基本的操作步骤

朋友们,准备好了吗?下面将带您进入一个美丽的新世界:  

3.1 开始注入

  1. 启动Pangolin
  2. 在URL输入框中输入待测试的URL地址,注意该地址是携带参数的格式
  3. 点击Check
  4. 如果在注入数据库中已经存在了该网站的某个注入点的话,那么您将会看到如下的对话框:
    如果你想使用已经存在的注入点,那么选中一个并点击Use this按键;如果您不需要的话,直接点击Cancel按键继续。
  5. 好了,如果您足够幸运的话,您应该看到注入类型和数据库类型都已经获取到了,那么恭喜,我们可以进入下面的一些操作步骤,如下图所示,目标系统采用的是Mysql数据库,那么除了最基本的Information和Datas标签页以外还会有FileReader和MySqlFileWriter分别可以用于读写文件,本章将只关注基本的操作,其他内容将放入到下一章进行说明:

3.2 获取基本的信息

  1. 切换到Information标签页
  2. 我们可以看到里面有一些选项可以选择,选中您想获取的信息,如果您不想挨个点击的话,可以直接点击Select All按钮
  3. 点击Go按钮
  4. 相信你应该可以看到Pangolin返回了这些信息;)

3.3 获取表

  1. 切换到Datas标签页
  2. 点击Tables按键,开始您的获取表清单之旅
  3. 下图是获取数据表后的截图:

3.4 获取列

  1. 在您想获取列结构的表上点击,选中表(很多朋友以为要获取列需要勾上前面的选择框,其实在这一步是不需要的)
  2. 这时Columns按键将会变为可用
  3. 点击Columns按键,如下是可能的结果图:

3.5 获取数据

  1. 在左边的表和列树形选择视图中选择要获取数据的表及其对应的列,注意一次只能针对一个表进行,在您点击一个列后,右边的数据视图会相应的增加该列
  2. 这时Datas按键变为可以
  3. 在1=1那个输入框中输入您自定义的获取数据的条件表达式,如果你不清楚是什么或者想获取所有数据的话,你直接保留不动即可
  4. 点击Datas按键,Pangolin将会进行数据的猜,如下图为可能的结果图:

3.6 保存数据

您可以直接点击Save按键保存当前获取的数据。

第四章、高级功能

除了上一章跟您描述的那些基本功能以外,Pangolin针对不同的数据库设计了一些高级的操作功能,如MSSQL和MySQL可以读写文件,MSSQL还可以读写注册表,执行系统命令等功能。这些我们将在本章为您一一详述……

4.1 MSSQL高级操作功能

由于MSSQL在当初设计时就考虑到了很多高级功能,并提供了许多方便与系统进行交互的存储过程(Stored Procedure),因此对于攻击者而言,遇到MSSQL数据库通常会很高兴。事实上,当前互联网广泛使用的数据库也正是MSSQL。下面我们来看看我们能够通过Pangolin对MSSQL数据库进行哪些操作:

4.1.1 执行系统命令

在Command输入框中输入要执行的系统命令,如果你希望看到执行后的结果可以选择“Echo result”选择框,同时选择你希望使用那种方式调用系统命令,因为目标系统可能删除了某些存储过程,多种选择执行成功的可能性更大。目前支持如下四种方式调用系统命令:

  • xp_cmdshell方式:这种方式直接调用了系统接口,在目标系统开放了(MSSQL2005之前默认情况下是开放的)的情况下可以使用。当然如果目标删除了该存储过程,您可以点击“Restore xp_cmdshell”来尝试对其进行修复。通过这种方式是可以得到回显结果的。
  • sp_oa***方式:通过调用sp_OACreate存储过程来调用系统命令,也能够支持回显。
  • sp_***_job方式:通过调用sp_add_job来执行系统命令,注意,这种方式不支持运行结果的回显
  • sandboxmode:沙盒模式的调用,具体细节可以参考http://support.microsoft.com/kb/294698

最后点击Execute按钮进行测试。

4.1.2 写文件

这个功能主要是写入Webshell。在写入过程中不能保证数据完全一致,在File Path输入框中输入您想要写入内容到哪个文件,注意需要是绝对路径。选择相应的写入方式,然后在内容框中输入要写入的文件内容,点击Write按钮。

目前支持两种方式写入文件:

  • backup_log:通过备份的方式写入文件。
  • sp_makewebtask:通过创建web任务的方式写入文件。

4.1.3 读取注册表信息

Windows注册表中存放了许多敏感的有用的数据,通过读取这些数据,我们可以获取一些帐号散列信息并可以在后期对其进行破解(如Radmin,Pcanywhere等)。我们在Pangolin中预置了一些常用的注册表路径,您可以直接选择“Pre-defined”来进行测试。当然,您也可以完全自己指定注册表路径进行信息获取,包括ROOT,Path,Name三部分信息。如果您想要读取的数据是二进制(binrary)类型的话,您可以选择Type为REG_BINARY来进行。

4.1.4 目录文件管理

  1. 点击Drivers尝试获取磁盘信息
  2. 在左边的磁盘上双击(Double-click)尝试获取文件目录结构
  3. 在目录上双击尝试获取指定目录的结构
  4. 在文件上文件尝试获取文件的内容(注意要是文本文件)

4.1.5 下载网络文件

  1. 在URL中输入要下载的文件所在的网络地址
  2. 在Save to输入框中输入要保存到目标机器的路径,注意是完整的路径
  3. 点击Download
  4. 本功能只支持最大为8K大小的文件

4.1.6 远程数据库管理

如果目标服务器关闭了错误提示且不能够使用Union来快速获取数据的话,那么该功能对我们的作用就非常大了。

  1. 测试人员在公网上搭建一台MSSQL服务器,注意要是公网,还句话说就是目标服务器能够访问的IP地址。
  2. 在标签页对应的输入框中输入相关的内容,如搭建的数据库所在的地址以及对应的用户名、口令等
  3. 在下面的Query输入框中输入查询相关的信息
  4. 点击Run按钮执行操作
  5. 成功后,在数据表中会出现查询的结果(一次性可以获取很多条数据,速度很快)

4.1.7 自定义执行SQL命令

在这里,您可以运行任何的SQL命令,而且您完全不需要担心单引号过滤的问题 ;)

4.2 MySQL高级操作功能

4.2.1 读文件

在File Path输入框中输入您想读取的文件内容,再点击Read即可。Pangolin中预定了一些常见的文件路径,您也可以从中直接选择。如下为结果图:

4.2.2 写文件操作

您可以往指定的目录中写入文件,当然,前提得是当前服务启动的用户对要写入的目录有写权限。通常我们是可以往网页所在目录中写入文件的。如下是运行效果图:

  1. 在Filepath中填入您想写入的地址
  2. 在文件内容输入框中输入您想写入的内容,默认情况下Pangolin提供的是一句话木马,仅供测试用,请勿用于非法途径
  3. 点击Write按键

4.3 其他数据库高级操作

上面的两节为你讲述了针对MSSQL和Mysql的高级操作,因为它们是目前互联网使用的用于做Web环境最广泛的数据库。本节为您描述其他数据库的高级操作,包括Oracle、DB2、Informix、Sybase、sqlite、Access、PostgreSQL等。

4.3.1 Oracle

4.3.2 DB2

4.3.3 Informix

4.3.4 Sybase

4.3.5 sqlite

4.3.6 Access

4.3.7 PostgreSQL

第五章、FAQ&操作步骤示例

5.1 如何配置代理地址?

5.2 网站需要先登录才能访问注入页面,那么我需要如何操作?

第六章、演示和截屏

6.1 截屏(ScreenShots)

6.2 演示动画(Demo)

6.2.1 注入测试扫描入门动画

6.2.2 自动关键字分析动画


6.2.3 MSSQL文件操作动画