课后习题:
课外实践作业P467
1 SEED SQL注入实验
代码注入是针对Web应用程序的主流攻击技术之一,通过利用Web应用程序的输入验证不完善漏洞,使得Web应用程序执行由攻击者所注入的恶意指令和代码,造成敏感信息泄露、权限提升或对系统的未授权访问等危害后果,根据目标的不同分为:
(1)恶意读取、修改与操纵数据库的SQL注入攻击,是最常见也是较为直观的一种攻击技术
(2)在Web服务器端安装、执行Webshell等恶意脚本的PHP注入或ASP注入攻击
(3)在Web服务器端恶意执行操作系统命令的Shell注入攻击
(4)其他多种多样的攻击如LDAP注入、邮件命令注入。
原理: SQL注入是Web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术。SQL注入攻击原理是向Web应用程序提供的用户输入接口输入一段精心构造的SQL查询命令,攻击和利用不完善的输入验证机制,使得注入代码得以执行完成非预期的攻击操作行为。在支持同时执行多条SQL语句的后台数据库管理系统中,最终将顺序执行三个不同的SQL查询与操作,即对accounts表进行查询,完全删除accounts表以及查询admin表获取全部记录信息。另外一种常见的SQL注入漏洞是由于不正确的类型处理,没有对用户输入参数进行类型约束的检查。
攻击步骤:
(1)发现SQL注入点(常见的SQL注入点存在形如http://SITE/xxx.asp?some_rec=yyy的动态网页中)
(2)判断后台数据库类型(后台数据库类型可以通过对数据库服务器的系统变量、系统表的查询来进行判断)
(3)后台数据库中管理员用户口令字猜解
(4)上传ASP后门,得到默认账户权限
(5)本地权限提升
(6)利用数据库扩展存储过程执行Shell命令
攻击工具:Wposion能够在动态Web文档中找出SQL注入漏洞;wieliekoek.pl能够以并以网站镜像工具生成的输出为输入,找出含有表单页面,允许在配置文件中对注入字符串进行修改,进行SQL注入漏洞探测;SPIKE Proxy工具允许在配置文件中对注入字符串进行定制,并执行自动化的SQL注入测试;SPI Toolkit工具包中也包含了一个名叫“SQL Injector”的自动化SQL注入测试工具。
防范措施:主要依靠对用户输入中特殊字符严格的输入验证机制,及对输入参数类型与长度的严格检查与限制机制。
具体来说注意以下几个方面:
(1)使用类型安全的参数编码机制
(2)凡是来自外部的用户输入,必须进行完备检查
(3)将动态SQL语句替换为存储过程、预编译SQL或ADO命令对象
(4)加强SQL数据库服务器的配置与连接。
2 SEED XSS攻击实验
从20世纪90年代就已经出现,近年已经超过传统的缓冲区溢出攻击,成为排名最靠前的安全威胁类型之一,与代码注入攻击不同的是,其最终目的不是提供服务的Web应用程序,而是使用Web应用程序的用户。
原理:与代码注入类似,XSS攻击的根源同样是Web应用程序对用户输入内容的安全验证与过滤不够完善。
攻击类型:两种主要的XSS漏洞类型:持久性XSS漏洞(也称作存储型XSS漏洞,是危害最为严重的XSS漏洞)和非持久性XSS漏洞(也称为反射XSS漏洞),除了传统的服务器端Web应用程序中存在的XSS漏洞及相应攻击之外,安全业界又发现了一种在客户端代码中存在的XSS漏洞及攻击技术,被称为基于DOM的XSS。
利用XSS漏洞:在SEED实验环境中的phpBB论坛程序中引入了XSS安全漏洞,存在于posting.php与viewtopic.php文件中,针对这一漏洞,我们可以通过如下步骤来测试于利用该漏洞,实施用户会话Cookie窃取、假冒、甚至XSS蠕虫攻击:(1)测试XSS漏洞(2)显示用户的会话Cookie(3)窃取用户的会话Cookie(4)利用Cookie信息假冒其他用户发表与修改帖子(5)编写实现XSS蠕虫。
防范措施:对XSS跨站脚本的防范分为服务器端和客户端两个方面。
(1)服务器端防范措施:①输入验证②输出净化③消除危险的输入点。
(2)客户端防范措施:提升浏览器的安全设置。
Kali学习视频:
Kali16集KaliSecurity - 漏洞分析之数据库评估总结1
1.BBQSql
BBQSQL是一个Python编写的盲注工具,当检测可疑的注入漏洞时会很有用。同时BBQSQL是一个半自动工具,允许客户自定义参数。
2.DBPwAudit(数据库用户名密码枚举工具)
使用参考:
破解SQLServer数据库 #./dbpwaudit –s IP –d master(数据库名) -D mssql(数据库类型) -U username(字典) -P password(字典) 破解MySql数据库 #./dbpwaudit.sh –s IP –d mysql(数据库名称) -D MySQL(数据库类型) -U username(字典) -P password(字典)
3.HexorBase
图形化的密码破解与连接工具,开源。
4.Jsql Injection
JSQL是一款轻量级安全测试工具,可以检测SQL注入漏洞。它跨平台(Windows,Linux,Mac OS X,Sloaris)、开源且免费。将存在注入漏洞的URL贴进来即可进行响应的漏洞利用。图形化界面亲民,但是使用效果有待改善。(有些URL可能不能正常识别,判断出有漏洞)
5.MDBTools
包括MDB-Export(Export data in an MDB database table to CSV
format),以及MDB-Dump,mdb-parsecsv,mdb-sql,mdb-tables等工具,具体环境具体使用。
6.Oracle Scanner
Oscanner是一个用Java开发的Oracle评估工具。它是基于插件的结构,当前有两个插件可以做:-Sid列举 -口令测试 -列举Oracle版本 -列举账号角色 -列举账号特权 -列举账号哈希 -列举审计信息 -列举口令策略 -列举数据库链接
7.SIDGusser
同样是针对Oracle的SID进行暴力枚举的工具。SID为Oracle实例名,Oracle连接字符串,通过实例名+用户+密码连接。
8.SqlDICT
又一个用户名密码枚举工具,通过Wine运行。
Kali17集漏洞分析之数据库评估总结2
1.tnscmd10g
允许给Oracle添加命令
2.Sqlsus
Sqlsus是一个开放源代码的MySQL注入和接管工具,sqlsus使用perl编写,基于命令行界面。Sqlsus可以获取数据库结构,注入你自己的SQL语句,从服务器下载文件,爬行web站点可写目录,上传和控制后门,克隆数据库等等。最好用的两点就是注射获取数据速度非常快,另外一个最大的特点就是自动搜索可写目录。
生成配置文件:
编辑配置文件:修改our $url_start = “”;写入地址。
启动并且测试:sqlsus test.conf
获取数据库数据:sqlsus> get databases
查看全部数据库名字:[+] Getting databases names
设定数据库:sqlsus> set database database = “sql”
sqlsus>set database mysql database = “mysql” sqlsus>
获取表:sqlsus>get tables [user:5] host user Password
3.Sqlninja
在sql注入方面一直尊sqlmap为神器,但sqlninja也有自己的特点。
Sqlninja没有将精力用在跑数据库上,而是侧重于获得一个shell。Sqlninja优点:(1)一个专门针对Microsoft SQL Server的sql诸如工具 (2)可找到远程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 #指定攻击模式,有以下:(1)t/test #测试连接是否是注入点 (2)f/fingerprint #指纹识别,判断用户,数据库,xp_cmdshell是否能用等等 (3)b/bruteforce #暴力破解sa密码 (4)e/escalation #提权用,必须用-p指定sa的password,成功就会把当前数据库用户加入到sa组里面 (5)x/resurrectxp #尝试恢复xp_cmdshell (6)u/upload #使用get和post上传二进制文件 (7)s/dirshell #获得目标主机的shell (8)k/backscan #查看开放的端口目标 (9)r/revshell #反弹回一个shell,和dirshell相反 (10)d/dnstunnel #指定使用dns作为传输通道 等等
4.Sqlmap
SQLMAP主要用于自动化地侦测和实施SQL注入攻击以及渗透数据库服务器。其配有强大的侦测引擎,适用于高级渗透测试用户,不仅可以获得不同数据库的指纹信息,还可以从数据库中提取数据,此外还能处理潜在的文件系统以及通过带外数据连接执行系统命令等。
Kali视频18集Kali漏洞分析之Web应用代理总结
1.Burp Suite
Burp Suite是用于攻击web应用程序的集成平台。Burp Suite代理,通过默认端口8080上运行,使用这个代理,我们可以截获并修改从客户端到web应用程序的数据包。
2.OwaspZAP
OWASP Zed Attack Proxy Project攻击代理,是一款查找网页应用程序漏洞的综合类渗透测试工具。它包含了拦截代理、自动处理、被动处理、暴力破解、端口扫描以及蜘蛛搜索等功能。OWASP ZAP为会话类调试工具,调试功能对网站不会发起大量请求,对服务器影响较小。
3.Paros
paros proxy,这是一个对Web应用程序的漏洞进行评估的代理程序,即一个基于Java的web代理程序,可以评估Web应用程序的漏洞。它支持动态地编辑/查看HTTP/HTTPS,从而改变cookies和表单字段等项目。它包括一个Web通信记录程序,Web圈套程序,hash计算器,还有一个可以测试常见的Web应用程序攻击的扫描器。该工具检查漏洞形式包括:SQL注入、跨站点脚本攻击、目录遍历等。
4.Proxystrike
5.Vega代理功能
Vega是一个开放源代码的web应用程序安全测试平台,Vega能够帮助你验证SQL注入、跨站脚本、敏感信息泄露和其他一些安全漏洞。Vega使用Java编写,有GUI,可以在Linux、OS X和windows下运行。Vega类似于Paros Proxy,Fiddler,Skipfish和ZAproxy。
6.Webscarab
Webscarab一款代理软件,包括HTTP代理,网络爬行、网络蜘蛛,会话ID分析,自动脚本接口,模糊测试工具,WEB格式的编码/解码,WEB服务描述语言和SOAP解析器等功能模块。WebScarab基于GNU协议,使用Java编写,是WebGoat中所使用的工具之一。
Kali视频19集Kali漏洞分析之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.爬虫与扫描
Kali视频20集Kali漏洞分析之Fuzz工具总结
1.Bed.pl
Bed是一个纯文本协议的Fuzz工具,能够检查常见的漏洞,如缓冲区溢出,格式串漏洞,整数溢出等。使用参数如下,可选择针对不同协议的插件。
2.Fuzz_ipv6
THC出品的针对IPV6协议的模糊测试工具。
3.Ohrwurm
ohrwurm是一个很迷你RTP fuzz工具。
4.Powerfuzzer
Powerfuzzer是一个有图形化界面的fuzz工具,作为一个web请求的fuzz工具。
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(something)
登录页面口令猜解,忽略404页面
wfzz -c –z range,
1-10 –hc=BBB http://www.site.com/log.asp?user=FUZZ(something)
页面数目猜解
与BurpSuite不同的是,它更轻量级。
6.SFuzz:Simple-Fuzzer
7.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 连接超时后的重试次数