1、漏洞分析之数据库评估(一)
web层与数据库连接的安全漏洞在安全测试中并不少见,kali中常用的数据库评估软件如下
1.1 BBQSQL
BBQSQL是一种用Pyhthon写的SQL盲注框架。当发动狡猾的SQL注入漏洞攻击时,它将非常有用。
BBQSQL也是半自动工具,允许许多难以触发的SQL注入变得用户化。该工具是与数据库无关的,其用法非常灵活。
它也自带一个直观的UI用户界面,使设置攻击更容易。Python Gevent也很给力,使BBQSQL非常快速。
打开bbqsql后需要设置参数
下面这个网站有参数设置的介绍:http://www.nsoad.com/Security-tools/20161014/tools-557.html
1.2 DBPwAudit
功能:通过挂载字典对目标数据库进行密码暴力猜解,目前支持的数据库包括SQLServer、MySQL、Oracle、DB2
- 破解SQLServer数据库命令实例
./dbpwaudit -s IP -d master(数据库名称) -D mssql(数据库类型) -U username(字典) -P password(字典)
- 破解MySQL数据库命令实例
./dbpwaudit -s IP -d MySQL(数据库名称) -D mysql(数据库类型) -U username(字典) -P password(字典)
1.3 HexorBase
该工具是少有的图形界面工具,它支持MySQL、Oracle、PostgreSQL、SQLite和SQL Server五大主流数据库。
它允许安全人员指定用户字典和密码字典,然后实施字典攻击。
同时,它还提供对应的图形界面客户端,允许安全人员使用破解出的用户名和密码,对数据库进行远程管理。
1.4 jSQL
jSQL是一款Java开发的轻量级远程服务器数据库注入漏洞测试工具,且免费、开源、跨平台 (Windows, Linux, Mac OS X, Solaris)。
1.5 MDBTools
包括MDB-Export,以及MDB-Dump,mdb-parsecsv,mdb-sql,mdb-tables等子工具
1.6 Oracle Scanner
OScanner 是基于Java开发的一个Oracle评估框架。它有一个基于插件的架构并附带几个插件,目前可以实现:
- Sid枚举
- 密码测试(常见&字典)
- 枚举Oracle版本
- 枚举账号权限
- 枚举账号哈希
- 枚举审计信息
- 枚举密码策略
- 枚举数据库链接
1.7 SIDGuesser
针对Oracle的SID进行暴力枚举的工具。
SID为Oracle实例名,Oracle连接字符串,通过实例名+用户+密码连接。
使用方法:sidguess -i 192.168.1.205 -d /usr/share/wordlists/metasploit/unix_users.txt
参考资料:http://tools.kali.org/vulnerability-analysis/sidguesser
1.8 sqldict
一个用户名密码枚举工具,通过Wine运行。
2、漏洞分析之数据库评估(二)
2.1 tnscmd10g
允许给Oracle添加命令
2.2 Sqlsus
Sqlsus是一个开放源代码的MySQL注入和接管工具,sqlsus使用perl编写,基于命令行界面。
Sqlsus可以获取数据库结构,注入你自己的SQL语句,从服务器下载文件,爬行web站点可写目录,上传和控制后门,克隆数据库等等。
最好用的两点就是注射获取数据速度非常快,另外一个最大的特点就是自动搜索可写目录。
可使用的参数如下图
- 生成配置文件:
sqlsus -g test.conf
- 编辑配置文件:修改
our $url_start = “”;
写入地址。 - 启动并且测试:
sqlsus test.conf
- 获取数据库数据:
sqlsus> get databases
- 查看全部数据库名字:
[+] Getting databases names
- 设定数据库:
sqlsus> set database database = “sql”
;sqlsus>set database mysql database = “mysql”
- 获取表:
sqlsus>get tables [user:5] host user Password
2.3 Sqlninja
在sql注入方面一直尊sqlmap为神器,但sqlninja也有自己的特点。
Sqlninja是一款Perl编写的一个专门针对Microsoft SQL Server的SQL注入工具。
没有将精力用在跑数据库上,而是侧重于获得一个shell。Sqlninja优点如下:
- 一个专门针对Microsoft SQL Server的sql诸如工具
- 可找到远程SQL服务器的标志和特征(版本、用户执行的查询、用户特权、xp_cmdshell的可用性、身份验证模式等)
- “sa”口令的强力攻击
- 如果找到口令后,就将特权提升到“sa”;
- 如果原始的xp_cmdshell被禁用后,就创建一个定制的xp_cmdshell;
- 使用纯粹的ASCII GET/POST请求上载netcat.Exe程序,因此并不需要FTP连接;
- 为了找到目标网络的防火墙所允许的端口,可以实施针对目标SQL服务器的TCP/UDP端口扫描;
- 逃避技术,这是为了使注入式代码“模糊”不清,并且混淆、绕过基于签名的IPS和应用层防火墙;
- 采用“盲目执行”攻击模式,在其他模式失效时,可以用于发射命令并执行诊断;
- 在sqlninja生成的SQL代码上,执行的是自动化的URL编码,这使用户可以更精细地控制漏洞利用的字符串;
- 如果得到权限为sa,可以结合msf进一步对目标主机进行渗透。
Sqlninja的参数:-m #指定攻击模式,有以下参数:
- t/test #测试连接是否是注入点
- f/fingerprint #指纹识别,判断用户,数据库,xp_cmdshell是否能用等等
- b/bruteforce #暴力破解sa密码
- e/escalation #提权用,必须用-p指定sa的password,成功就会把当前数据库用户加入到sa组里面
- x/resurrectxp #尝试恢复xp_cmdshell
- u/upload #使用get和post上传二进制文件
- s/dirshell #获得目标主机的shell
- k/backscan #查看开放的端口目标
- r/revshell #反弹回一个shell,和dirshell相反
- d/dnstunnel #指定使用dns作为传输通道
- i/icmpshell #当dirshell和revshell都失败的情况下,可以用这个模式把shell藏在icmp里,但是先要上传icmpsh.exe(在upload模式里)
- c/sqlcmd #以上方法都失败之后,可以用他执行简单的cmd命令,可惜的是没回显
- m/metasploit #使用meterpreter作为shell
-f #指定配置文件,sqlninja没有类似sqlmap的"-u"参数,注入网址是写在配置文件里的,默认是sqlninja.conf
在-f下面又有以下参数
- 0 - Database version (2000/2005) #检测当前数据库版本
- 1 - Database user #当前数据库用户
- 2 - Database user rights #当前数据库用户权限
- 3 - Whether xp_cmdshell is working #检查xp_cmdshell是否可以用
- 4 - Whether mixed or Windows-only authentication is used #是否windows本地系统权限
- a - All of the above #以上所有选项
- h - Print this menu #显示当前帮助菜单
- q - exit #退出
-p #sa账户密码
注入网址写在配置文件里,默认是Sqlninja.conf
参考资料:http://www.2cto.com/article/201310/247715.html
2.4 sqlmap
SQLMAP主要用于自动化地侦测和实施SQL注入攻击以及渗透数据库服务器。
其配有强大的侦测引擎,适用于高级渗透测试用户,不仅可以获得不同数据库的指纹信息,还可以从数据库中提取数据,
此外还能处理潜在的文件系统以及通过带外数据连接执行系统命令等。
使用方法:
-
./sqlmap.py -u “注入地址” -v 1 –dbs
// 列举数据库 -
./sqlmap.py -u “注入地址” -v 1 –current-db
// 当前数据库 -
./sqlmap.py -u “注入地址” -v 1 –users
// 列数据库用户 -
./sqlmap.py -u “注入地址” -v 1 –current-user
// 当前用户 -
./sqlmap.py -u “注入地址” -v 1 –tables -D “数据库”
// 列举数据库的表名 -
./sqlmap.py -u “注入地址” -v 1 –columns -T “表名” -D “数据库”
// 获取表的列名 -
./sqlmap.py -u “注入地址” -v 1 –dump -C “字段,字段” -T “表名” -D “数据库”
// 获取表中的数据,包含列
对于拖取的数据,sqlmap非常人性化,会将获取的数据存储在sqlmap/output/中。
3、漏洞分析之web应用代理
通过应用代理工具分析数据包,或修改数据包、重放、暴力攻击等在web安全测试中经常用到。
3.1 BurpSuite
Burp Suite是用于攻击web应用程序的集成平台。Burp Suite代理,通过默认端口8080上运行,
使用这个代理,我们可以截获并修改从客户端到web应用程序的数据包。
3.2 OwaspZAP
OWASP Zed Attack Proxy Project攻击代理,是一款查找网页应用程序漏洞的综合类渗透测试工具。
它包含了拦截代理、自动处理、被动处理、暴力破解、端口扫描以及蜘蛛搜索等功能。
OWASP ZAP为会话类调试工具,调试功能对网站不会发起大量请求,对服务器影响较小。
3.3 Paros
paros proxy,这是一个对Web应用程序的漏洞进行评估的代理程序,即一个基于Java的web代理程序,可以评估Web应用程序的漏洞。
它支持动态地编辑/查看HTTP/HTTPS,从而改变cookies和表单字段等项目。
它包括一个Web通信记录程序,Web圈套程序,hash计算器,还有一个可以测试常见的Web应用程序攻击的扫描器。
该工具检查漏洞形式包括:SQL注入、跨站点脚本攻击、目录遍历等。
3.4 Vega代理功能
Vega是一个开放源代码的web应用程序安全测试平台,Vega能够帮助你验证SQL注入、跨站脚本、敏感信息泄露和其他一些安全漏洞。
Vega使用Java编写,有GUI,可以在Linux、OS X和windows下运行。Vega类似于Paros Proxy,Fiddler,Skipfish和ZAproxy。
3.5 Webscarab
Webscarab一款代理软件,包括HTTP代理,网络爬行、网络蜘蛛,会话ID分析,自动脚本接口,模糊测试工具,WEB格式的编码/解码,WEB服务描述语言和SOAP解析器等功能模块。WebScarab基于GNU协议,使用Java编写,是WebGoat中所使用的工具之一。
4、漏洞分析之BurpSuite
Burp Suite是一个Web应用程序集成攻击平台,它包含了一系列burp工具,这些工具之间有大量接口可以互相通信,这样设计的目的是为了促进和提高整个攻击的效率。
平台中所有工具共享同一robust框架,以便统一处理HTTP请求,持久性,认证,上游代理,日志记录,报警和可扩展性。
Burp Suit允许攻击者结合手工和自动技术去枚举、分析、攻击Web应用程序。
这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。
Proxy提供一个直观、友好的用户界面,他的代理服务器包含非常详细的拦截规则,并能准确分析HTTP消息的结构与内容。
Spide爬行蜘蛛工具,可以用来抓取目标网站,以显示网站的内容,基本结构,和其他功能。
Scanner Web应用程序的安全漏洞进行自动发现工具。它被设计用于渗透测试,并密切与您现有的技术方法,以适应执行手动和半自动化的Web应用程序渗透测试。
Repeater可让您手动重新发送单个HTTP请求
Intruder是burp套件的优势,它提供一组特别有用的功能。它可以自动实施各种定制攻击,包括资源枚举、数据提取、模糊测试等常见漏洞。在各种有效的扫描工具中,它能够以最细化最简单的方式访问它设生产的请求与响应,允许组合利用个人智能与该工具的控制优点。
Sequencer对会话令牌,会话标识符或其他出于安全原因需要随机产生的键值的可预测性进行分析。
Decoder转化成规范的形式编码数据,或转化成各种形式编码和散列的原始数据。它能够智能识别多种编码格式,使用启发式技术。
Comparer是一个简单的工具,执行比较数据之间的任何两个项目。攻击一个Web应用程序的情况下,这一要求通常会出现当你想快速识别两个应用程序的响应之间的差异,或两个应用程序请求。
步骤:
1.配置监听端口,配置浏览器,在大多数浏览器,只需打开设置-网络-代理,然后告诉它使用“localhost”和端口“8080”。然后保存更新的设置。
2.爬虫与扫描,可以列出当前网站中已获取到的目录与文件及引用到的其他文件
3.测试暴力破解表单账户密码
4.repeater改包重放模块
5.decoder编码解码模块
6.compare模块
5、漏洞分析之Fuzz工具
5.1 Bed.pl
Bed是一个纯文本协议的Fuzz工具,能够检查常见的漏洞,如缓冲区溢出,格式串漏洞,整数溢出等。使用参数如下,可选择针对不同协议的插件。
5.2 Fuzz_ipv6
THC出品的针对IPV6协议的模糊测试工具。
5.3 Ohrwurm
ohrwurm是一个很迷你RTP fuzz工具。
5.4 Powerfuzzer
Powerfuzzer是一个有图形化界面的fuzz工具,作为一个web请求的fuzz工具。
5.5 Wfuzz
针对WEB应用的模糊测试工具,可以进行web应用暴力猜解,也支持对网站目录、登录信息、应用资源文件等的暴力猜解,还可以进行get及post参数的猜解,sql注入,xss漏洞的测试等。该工具所有功能都依赖于字典。
参数中FUZZ相当于一个变量,用字典中的字段来替换它完成猜解。使用参数:wfzz -c –z file,common.txt –hc 404 –o html http://www.baidu/FUZZ 2>res.html
wfzz -c –z file,users.txt –z file,pass.txt -hc 404 http://www.site.com/log.asp?user=FUZZ
登录页面口令猜解,忽略404页面wfzz -c –z range,1-10 –hc=BBB http://www.site.com/log.asp?user=FUZZ
页面数目猜解
与BurpSuite不同的是,它更轻量级。
5.6 XSSer
主要是对一个页面或一个点进行XSS测试,判断是否有XSS漏洞。
参数如下:
xsser [OPTIONS] [-u|-i|-d]
[-g|-p|-c][Request(s)] [Vector(s)] [Bypasser(s)]
[Technique(s)] [Final Injection(s)]
常规参数
[Options]
-version显示版本号
-h,--help 显示帮助信息
-s,--statistics 先是高级的统计输出结果
-v,--verbose 啰嗦模式,测试时可以看到详细的输出信息
--gtk 启动基于GTK 的GUI
特殊功能
[Special Features]
指定攻击向量(Vector)和Bypasser时可以附带选择如下特殊功能:
-imx=IMX 创建嵌入了XSS代码的伪图像文件
-fia=FLASH 创建嵌入了XSS代码的伪swf文件
指定待检测目标
[Select Target(s)]
至少要指定以下选项中的一项,以设置待检测目标的URL。
-u URL,--url=URL待检测的目标URL
-i READFILE从文件读取目标URL
-d DORK将搜索引擎返回的搜索结果作为目标URL
--De=DORK_ENGINE 要使用的搜索引擎
HTTP/HTTPS连接类型选择
[Select type of HTTP/HTTPS Connection(s)]
以下选项用以指定payload注入代码时使用的参数
-g GRTDATA 输入待检测的payload,使用GER方式
-p POSTDATA 输入待检测的payload,使用POST方式
--c Cw=CRAWLER_WIDTH 爬取的深度:1-5
--Cl 仅爬取local targets的URL
请求选项
[Configure Request(s)]
以下选项用以指定如何连接到目标的payload。可多选:
--cookie=COOKIE 自定义Cookie
--user-agent=AGENT 自定义User-Agent
--referer=REFERER 自定义Referer
--headers=HEADERS 额外的HTTP头信息,使用换行分隔
--auth-type=ATYPE HTTP 身份认证类型
--auther-cred=ACRED HTTP 身份认证的凭证信息
--proxy=PROXY 使用代理
--timeout=TIMEOUT 超时时长
--delay=DELAY 每个请求之间的延迟秒数
--threads=THREADS 最大并发请求数量
--retries=RETRIES 连接超时后的重试次数
6、web应用程序安全攻防
6.1 web应用程序体系结构及其安全威胁
6.1.1 web应用体系结构
- 三层架构包括表示层、业务逻辑层、数据层
- web应用体系结构包括浏览器、web服务器、web应用程序、数据库、传输协议http/https
6.1.2 web应用安全威胁
- 针对浏览器和终端用户的Web浏览安全威胁
- 针对传输网络的网络协议安全威胁
- 系统层安全威胁
- Web服务器软件安全威胁
- Web应用程序安全威胁
- Web数据安全威胁
6.2 web应用安全攻防技术概述
6.2.1 web应用的信息收集
- 手工审查web应用程序结构与源代码
- 静态和动态生成的页面
- 目录结构,经典工具whisker
- 辅助性文件
- 输入表单
- 查询参数字符串
- 自动下载与镜像web站点页面
- linux下工具:Lynx、wget
- Windows上工具:Teleport Pro、Offline Explorer
- 替代工具:迅雷、Flashget
- 使用Google Hacking技术审查与探测Web应用程序
- Web应用程序安全评估与漏洞探测
6.2.2 攻击web服务器软件
web服务器平台中的安全漏洞主要分为如下几类:
- 数据驱动的远程代码执行安全漏洞
- 服务器功能扩展模块漏洞
- 样本文件安全漏洞
- 源代码泄露
- 资源解析攻击
6.2.3 攻击web应用程序
Web应用程序安全威胁从攻击技术角度分为如下6类:
- 针对认证机制的攻击
- 授权机制的攻击
- 客户端攻击
- 命令执行攻击(包括缓冲区溢出、格式化字符串、LDAP注入、操作系统命令注入、SQL注入、SSL注入)
- 信息暴露
- 逻辑攻击(包括功能滥用、拒绝服务攻击、对抗自动程序不完善、处理验证过程不完善等)
6.2.4 攻击web数据内容
- 安全敏感数据泄漏
- 网站篡改
- 不良信息内容上传
6.2.5 web应用安全防范措施
Web站点网络传输安全设防措施:
- 尽量使用HTTPS来保障Web站点传输时的保密性、完整性与身份真实性,至少对登陆过程进行加密保护
- 通过加密的连接通道来管理Web站点
- 对关键的Web服务器,设置静态绑定MAC-IP映射
Web站点操作系统及服务安全设防措施:
- 对Web站点的操作系统与服务器软件进行及时的补丁更新
- 对Web站点服务器的操作系统及各种开放服务进行远程安全漏洞扫描,在攻击者利用安全漏洞实施攻击之前发现和修补这些安全漏洞
- 采用提升系统与服务安全性的一般性设防措施
Web应用程序安全设防措施:
- 提高安全认识,开发时兼顾安全性、访问性能与便捷性
- 使用具有良好安全声誉及稳定技术支持力量的web应用软件包
- 只在必要时候自主或外包开发web应用程序
- 使用web服务器软件提供的日志功能
Web站点数据安全设防措施:
- 提高网站内容维护人员的数据安全意识
- 对维护网站的数据安全实施日常监测和防护
6.3 SQL注入
根据目标的不同分为:
- 恶意读取、修改与操纵数据库的SQL注入攻击,是最常见也是较为直观的一种攻击技术
- 在Web服务器端安装、执行Webshell等恶意脚本的PHP注入或ASP注入攻击
- 在Web服务器端恶意执行操作系统命令的Shell注入攻击
- 其他多种多样的攻击如LDAP注入、邮件命令注入
6.4 xss跨站脚本攻击
与代码注入攻击不同的是,其最终目的不是提供服务的Web应用程序,而是使用Web应用程序的用户。
6.4.1 XSS攻击技术原理
与代码注入类似,XSS攻击的根源同样是Web应用程序对用户输入内容的安全验证与过滤不够完善。
6.4.2 XSS攻击类型
两种主要的XSS漏洞类型:
- 持久性XSS漏洞(也称作存储型XSS漏洞,是危害最为严重的XSS漏洞)
- 非持久性XSS漏洞(也称为反射XSS漏洞)
- 除了传统的服务器端Web应用程序中存在的XSS漏洞及相应攻击之外,安全业界又发现了一种在客户端代码中存在的XSS漏洞及攻击技术,被称为基于DOM的XSS。
6.4.3 xss攻击
在SEED实验环境中的phpBB论坛程序中引入了XSS安全漏洞,存在于posting.php与viewtopic.php文件中,
针对这一漏洞,我们可以通过如下步骤来测试于利用该漏洞,实施用户会话Cookie窃取、假冒、甚至XSS蠕虫攻击:
- 测试XSS漏洞
- 显示用户的会话Cookie
- 窃取用户的会话Cookie
- 利用Cookie信息假冒其他用户发表与修改帖子
- 编写实现XSS蠕虫。
6.4.4 XSS攻击防范措施
对XSS跨站脚本的防范分为服务器端和客户端两个方面。
(1)服务器端防范措施:①输入验证②输出净化③消除危险的输入点。
(2)客户端防范措施:提升浏览器的安全设置。
7、web浏览器安全攻防
- 软件安全困境三要素:复杂性、可扩展性、连通性。浏览器软件面临着严重的威胁。
- 网页木马存在的技术基础:Web浏览端安全漏洞。
- 网页木马的本质核心——浏览器渗透攻击。
- 网页挂马机制,最主要的有如下四类策略:内嵌HTML标签、恶意Script脚本、内嵌对象连接、ARP欺骗挂马。
- 网页木马的检测与分析方法:基于特征码匹配的传统检测方法、基于统计与机器学习的静态分析方法、基于动态行为结果判定的检测分析方法、基于模拟浏览器环境的动态分析检测方法、网页木马检测分析技术综合对比。
8、sql注入攻击实验
(1)关闭对抗措施
找到/etc/php5/apache2/php.ini
找到 magic_quotes_gpc = On 这一行
改为 magic_quotes_gpc = Off
(2)进入登录界面
(3)从下面的sql登录语句可以看出存在sql注入漏洞
(4)尝试a用户名
显示用户名或密码错误
(5)必须使用数据库里存在的用户名才能登录,因此尝试admin
(6)登陆成功
(7)另一种方法是把登录名后面的内容注释掉,也能登陆成功
问题及解决过程
- sql注入实验遇到的问题及解决,见第8部分
学习感悟
在sql注入的实验里面轻松的进入数据库之后,就找了几个真实的网站试了一下
试了几个网站之后到结果是这样的...
所以事实证明课本只用看看就行了,不要对上面的技术想太多...
互联网发展迅速,学习网络攻防知识也需要与时俱进
学习进度条
发表博客数量 | kali视频学习 | 网络攻防教材内容学习 | |
---|---|---|---|
目标 | 15篇 | 38个视频 | 共12章 (网络攻防技术与实践) |
第一周 | 1/15 | 实验楼linux教程 | 实验楼linux教程 |
第二周 | 2/15 | 视频1-5 | 第1、2章 |
第三周 | 4/15 | 视频6-10 | 第3章 |
第四周 | 6/15 | 视频11-15 | 第4章 |
第五周 | 7/15 | 视频16-20 | 第11、12章 |
参考资料
- http://www.nsoad.com/Security-tools/20161014/tools-557.html
- http://tools.kali.org/vulnerability-analysis/sidguesser
- http://www.2cto.com/article/201310/247715.html