如果您想打印帮助文档或责想在一个页面中查看帮助,您可以直接访问http://www.nosec.org/web/pangolin_help
Pangolin做为一款SQL注入测试工具被渗透测试人员广泛使用,但是由于帮助文档的缺乏导致很多安全测试人员对于一些基础功能都不知道如何操作,更不要说是高级功能了。因此,为了更好的指导使用者进行安全测试,本文档将对其进行详细的操作说明。我们希望对大家有所帮助,同时也期待您的宝贵意见。
任何Pangolin的使用者都可以阅读本文档从而提高你的工作效率。
本文档将对所有基础功能以及部分高级功能进行详细的指导说明。要知道,尽管我最初开发Pangolin时的想法是尽量简化,但是在吸收了广大使用者的宝贵的修改意见后已经变得越来越复杂。所以文档的内容可能与最新版本的操作有所不符或者说会漏掉一些高级功能的说明。
另外,本文档不会对SQL注入的具体技术实现进行说明,如果您想了解更多的技术细节,你可以访问http://www.nosec.org网站,上面会有一些有用的信息。
我们想对所有帮助过Pangolin的朋友表示感谢,正是由于有你们的支持,Pangolin才会变得越来越强大。我们尤其想感谢如下一些朋友:
除此之外,我们也想感谢对本文档的开发提供了帮助的朋友:
您可以到http://www.nosec.org/web/pangolin_manual获取最新版本的文档。关于文档你有任何问题或者意见请发送邮件到zwell@sohu.com.
本文档由ZwelL进行编写和整理。希望其他能够提供帮助的朋友一起完成编写;)
Pangolin是一款帮助渗透测试人员进行Sql注入测试的安全工具。所谓的SQL注入测试就是通过利用目标网站的某个页面缺少对用户传递参数控制或者控制的不够好的情况下出现的漏洞,从而达到获取、修改、删除数据,甚至控制数据库服务器、Web服务器的目的的测试方法。Pangolin能够通过一系列非常简单的操作,达到最大化的攻击测试效果。它从检测注入开始到最后控制目标系统都给出了测试步骤。
过去有许多Sql注入工具,不过有些功能不完全,支持的数据库不够多,或者是速度比较慢。但是,在Pangolin发布以后,这些问题都得到了解决。Pangolin也许是目前已有的注入工具中最好的之一。
如下是一些示例:
如下是Pangolin提供的一部分特点:
Pangolin只是一个注入验证利用工具,不是一个Web漏洞扫描软件。因此您不能用它来做整网站的扫描。另外,他也不支持注入目录遍历等功能,这些功能您可以借助其他的安全工具进行。
Pangolin的更新速度很快,你可以经常到http://www.nosec.org/web/pangolin去下载最新版本。
目前Pangolin只能运行在Windows系统平台,支持32位/64位Windows NT/2000/XP/2003/Vista/2008。
如果您在使用过程中有任何的意见或者建议,您可以到http://www.nosec.org网站上进行评论留言,这里会有一群共同兴趣的朋友帮助您。或者您可以直接给我发送邮件:zwell@sohu.com。
在本章中将为你详细介绍Pangolin的操作界面,让您知道:
下图为主界面图

如上图所示,我们可以看到Pangolin的主界面是很简单明了的,它分为几个区域:最上面的是注入控制区域,在这里您可以进行一些注入参数设置,以及通过点击按钮进入到高级配置界面;中间的一大块区域为数据显示区域,用于显示注入获取的数据已经进行针对不同数据库的高级注入操作;下面有日志信息区还有状态栏区,能够告诉您当前的工作状态信息。下面我们就这些控件进行详细的说明:
在这里输入待测试目标的URL地址,注意,该URL地址必须是携带参数的格式,例如http://www.site.com/news.asp?id=100这样的格式。
这里简单的介绍一下。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方式。
Pangolin的注入过程采用了多线程的方式,您在注入过程中随时可以进行暂停/继续操作和停止操作。
在您输入了待测试目标的URL后,您可以点击Check进行扫描操作,这时Check按键变灰,Pause和Stop按键变为可用,这时您就可以进行暂停或中止操作了。
这里提醒您一点,在后面我们提到的所有的操作,无论是猜解数据也好,高级功能操作也好,在操作过程中,您随时可以暂停或者中止,但是Check按键只能用于注入扫描。
扫描不同的参数类型我们将注入类型分为interger和String还有Search型。分别对应数值型,字符型还有搜索型。在扫描到注入点以后,该选择框将自动选择对应的注入类型。
在注入前,如果我们已知了某个参数的注入类型,那么我们可以先从该下拉框中选择合适的值,这样能够缩短注入扫描的时间。
顺便提及一点:SQL注入是跟数据库强相关的,而不是页面的代码语言,这一点许多文章都误导了读者。我们看到什么asp注入,php注入,jsp注入之类的概念都是不正确的。而应当说是MSSQL注入,Mysql注入或者Oracle注入等等。
在这个选择框中指明了目标Web连接的数据库类型。在扫描到注入点以后,该选择框将自动选择对应的数据库类型。
在注入前,如果我们已知了目标的数据库类型,那么我们可以先从该下拉框中选择合适的值,这样能够缩短注入扫描的时间。
什么叫关键字呢?在自动化工具的测试过程中,如果目标针对不同的注入语句进行了错误提示的话那么程序能够知道这是一个典型的错误,然后就能够提取信息。但是如果页面返回的结果中并没有带有明确的错误提示信息的话,那么程序将无法判断哪一种情况下是正常页面哪一种情况下是错误页面。因为,测试人员需要手动的告之程序一个正常的页面或者错误的页面有什么特殊字符串能够标明,这时候您就需要在这里输入这个字符串了。
在其他的一些注入工具中,如果测试人员没有输入关键字的话是无法进行测试的,但是在Pangolin中我独创了自动分析关键字的功能,它能够让你在不干预的情况下自动的分析关键字从而更扫描出漏洞。在2.2节中,我们将给您描述如何启用或者关闭该功能。
Options按钮将带您进入到一些全局参数的配置界面中,这一部分我们将在下一节中为您详细介绍。
如果您在完成了一次对某个URL的注入操作以后,还想对另一个URL进行扫描操作,那么建议您点击一下该按钮,从而将扫描注入的全局状态清空。
本按钮属于高级选项,通常不建议您点击进行配置的修改。具体用途待整理。
好了,如果您进入了本界面,说明您已经知道如何点击"Options"按钮了,那么恭喜 ;)先看看如下界面图:
从上图可以清楚的看到,配置界面中包含四大部分:
在本界面中,您可以完全自定义HTTP标题头域的字段,如最常用的User-Agent和Cookie标题头,通常你需要知道一些特定含义的字符串。
这里也做一个简单的说明:User-Agent可以用来进行客户端伪造,您知道为什么很多情况下Google能返回某些正文而我们去请求时需要我们登录吗?原因很简单,网站为了自身更好的推广,所以针对Google的robots开放了通行证,所以我们就可以利用这种关系进行更深入的工作。而对于Cookie标题头而言,它的作用更明显了,说直白一点,它是我们身份的象征。一些站点需要先登录才能进行注入(如管理后台的页面),其他的一些注入工具需要你手动输入或者让你手工输入登录界面的参数字段来进行。但是在Pangolin中,您可以直接点击几下按钮来完成这些生涩的操作。
除此之外,你也可以自定其他一些个性化的标题头。
这个按钮的功能显而易见,Pangolin预置了一些最常见的Web浏览器的客户端类型以及搜索引擎的类型,在点击按钮以后,您可以直接选择一个作为您注入时使用的对象,这样您就能伪造客户端类型了。



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





您可以直接点击Save按键保存当前获取的数据。
除了上一章跟您描述的那些基本功能以外,Pangolin针对不同的数据库设计了一些高级的操作功能,如MSSQL和MySQL可以读写文件,MSSQL还可以读写注册表,执行系统命令等功能。这些我们将在本章为您一一详述……
由于MSSQL在当初设计时就考虑到了很多高级功能,并提供了许多方便与系统进行交互的存储过程(Stored Procedure),因此对于攻击者而言,遇到MSSQL数据库通常会很高兴。事实上,当前互联网广泛使用的数据库也正是MSSQL。下面我们来看看我们能够通过Pangolin对MSSQL数据库进行哪些操作:
在Command输入框中输入要执行的系统命令,如果你希望看到执行后的结果可以选择“Echo result”选择框,同时选择你希望使用那种方式调用系统命令,因为目标系统可能删除了某些存储过程,多种选择执行成功的可能性更大。目前支持如下四种方式调用系统命令:
最后点击Execute按钮进行测试。
这个功能主要是写入Webshell。在写入过程中不能保证数据完全一致,在File Path输入框中输入您想要写入内容到哪个文件,注意需要是绝对路径。选择相应的写入方式,然后在内容框中输入要写入的文件内容,点击Write按钮。
目前支持两种方式写入文件:
Windows注册表中存放了许多敏感的有用的数据,通过读取这些数据,我们可以获取一些帐号散列信息并可以在后期对其进行破解(如Radmin,Pcanywhere等)。我们在Pangolin中预置了一些常用的注册表路径,您可以直接选择“Pre-defined”来进行测试。当然,您也可以完全自己指定注册表路径进行信息获取,包括ROOT,Path,Name三部分信息。如果您想要读取的数据是二进制(binrary)类型的话,您可以选择Type为REG_BINARY来进行。
如果目标服务器关闭了错误提示且不能够使用Union来快速获取数据的话,那么该功能对我们的作用就非常大了。
在这里,您可以运行任何的SQL命令,而且您完全不需要担心单引号过滤的问题 ;)
在File Path输入框中输入您想读取的文件内容,再点击Read即可。Pangolin中预定了一些常见的文件路径,您也可以从中直接选择。如下为结果图:

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

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