SQL注入测试工具:Pangolin(穿山甲)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 第一章、简介   1.1 Pangolin是什么? Pangolin是一款帮助渗透测试人员进行Sql注入测试的安全工具。 所谓的SQL注入测试就是通过利用目标网站的某个页面缺少对用户传递参数控制或者控制的不够好的情况下出现的漏洞,从而达到获取、修改、删除数据,甚至控制数据库服务器、Web服务器的目的的测试方法。

第一章、简介

 

1.1 Pangolin是什么?

Pangolin是一款帮助渗透测试人员进行Sql注入测试的安全工具。

所谓的SQL注入测试就是通过利用目标网站的某个页面缺少对用户传递参数控制或者控制的不够好的情况下出现的漏洞,从而达到获取、修改、删除数据,甚至控制数据库服务器、Web服务器的目的的测试方法。

Pangolin能够通过一系列非常简单的操作,达到最大化的攻击测试效果。它从检测注入开始到最后控制目标系统都给出了测试步骤。

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

1.2 使用Pangolin可以用来做什么

如下是一些示例:

  • 渗透测试人员用于发现目标存在的漏洞并评估漏洞可能产生后果的严重程度
  • 网站管理员可以用于对自己开发的代码进行安全检测从而进行修补
  • 安全技术研究人员能够通过Pangolin来更多更深入的理解SQL注入的技术细节

1.3 特色

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

  • 全面的数据库支持
  • 独创的自动关键字分析能够减少人为操作且更判断结果准确
  • 独创的内容大小判断方法能够减少网络数据流量
  • 最大话的Union操作能够极大的提高SQL注入操作速度
  • 预登陆功能,在需要验证的情况下照样注入
  • 代理支持
  • 支持HTTPS
  • 自定义HTTP标题头功能
  • 丰富的绕过防火墙过滤功能
  • 注入站(点)管理功能
  • 数据导出功能
  • ……等其他更多

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。

支持的数据库类型

数据库类型 目标信息获取 其他
MS SQL 服务器版本、服务器名称、数据库名称、当前用户、当前用户权限、数据库列表 执行系统命令、读取注册表、读文件、写文件、下载远程文件、导出数据到指定的数据库服务器
Oracle 版本信息、IP地址、当前用户、当前会话权限、主机名、实例名称、用户帐号信息、外部IP地址 帐号破解、注入提权(adding)、远程数据存储读取
Mysql 版本、GPC判断、数据库列表、临时目录、当前用户、操作系统信息、用户帐号 读文件、写文件
Access 数据库路径、根目录、磁盘信息 只能暴力
PostgreSQL 版本信息、数据库、当前用户、当前会话用户、端口、数据路径、搜索路径 读文件
DB2 版本信息、数据库、当前用户、操作系统名称、操作系统版本、主机名称 ……
Sybase …… ……
Informix …… ……
Sqlite …… ……

1.7 报告问题和获取帮助

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

 

第二章、用户界面

下图为主界面图


如上图所示,我们可以看到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 注入点手工配置按钮

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

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


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

2.2.1 HTTP标题头编辑界面

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

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

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

2.2.1.1User-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. 如果在注入数据库中已经存在了该网站的某个注入点的话,那么您将会看到如下的对话框:
  5. 如果你想使用已经存在的注入点,那么选中一个并点击Use this按键;
  6. 如果您不需要的话,直接点击Cancel按键继续。
  7. 好了,如果您足够幸运的话,您应该看到注入类型和数据库类型都已经获取到了,
  8. 那么恭喜,我们可以进入下面的一些操作步骤,如下图所示,目标系统采用的是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按键保存当前获取的数据。

 

四、贡献者列表(Contributors)

在Pangolin的开发过程中,得到了许多朋友的支持和帮助,这里特别要感谢如下人员:

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
100 1
|
2月前
|
SQL 安全 测试技术
墨者学院sql手工测试记录
墨者学院sql手工测试记录
|
3月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
135 5
|
3月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
72 5
|
3月前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
123 1
|
3月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
48 1
|
3月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
51 3
|
3月前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
92 6
|
3月前
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【9月更文挑战第12天】在Web开发中,安全漏洞如同暗礁,尤其对初学者而言,SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)是常见挑战。本文通过实战案例,展示如何利用Python应对这些威胁。首先,通过参数化查询防止SQL注入;其次,借助Jinja2模板引擎自动转义机制抵御XSS攻击;最后,使用Flask-WTF库生成和验证CSRF令牌,确保转账功能安全。掌握这些技巧,助你构建更安全的Web应用。
52 5
|
5月前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
95 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!