教材内容总结
1. Web应用程序体系结构
Web应用程序是一种使用浏览器在互联网或企业内部网上进行访问操作的应用软件形态。Web应用体系有浏览器作为客户端完成数据显示和展示内容的渲染;由功能强大的服务器完成主要业务的计算和处理,两者之间通过因特网或内联网上HTTP/HTTPS应用层协议的请求与应答进行通信。服务器端由Web服务器软件、Web应用程序与后端数据库构成,并通过经典三层架构:表示层、业务逻辑层、数据层来进行组织与构建。
- 浏览器
使用HTTP/HTTPS协议,HTML语言和web服务器进行交互,获取web服务器上的信息和应用服务。 - Web服务器
web服务器软件通常被描述为HTTP守护程序,接收Web客户端对资源的请求,,在这些请求上执行一些基本的解析处理以确定资源的存在,然后将它传送给web应用程序来执行,待web应用程序执行完逻辑并返回响应时,web服务器在将这个响应返回给web客户端,在浏览器上进行本地执行、渲染和展示。 - web应用程序
处于服务端的业务逻辑是web应用的核心。 - 数据库
是web应用存储数据的地方,数据层也作为web应用程序多级结构中的最后一层。
2. Web应用安全威胁
- 浏览器安全困境三要素:复杂性、可扩展性、连通性。
- 浏览器安全威胁位置有:网络协议、浏览器端系统平台、插件、社会工程学。
拒绝服务攻击
拒绝服务攻击就是想尽办法让你的服务器无法正常提供服务,具体手段包括:消耗包括网络带宽、存储空间、CPU 时间等资源;破坏或者更改配置信息;物理破坏或者改变网络部件;利用服务程序中的处理错误使服务失效。Web浏览器的渗透攻击威胁 网页木马
(1)网页木马存在的技术基础:Web浏览端安全漏洞。
(2)网页木马的本质核心——浏览器渗透攻击。
(3)网页挂马机制,最主要的有如下四类策略:内嵌HTML标签、恶意Script脚本、内嵌对象连接、ARP欺骗挂马。
(4)网页木马的检测与分析方法:基于特征码匹配的传统检测方法、基于统计与机器学习的静态分析方法、基于动态行为结果判定的检测分析方法、基于模拟浏览器环境的动态分析检测方法、网页木马检测分析技术综合对比。网页挂马机制
(1)内嵌HTML标签
(2)恶意Script脚本
(3)内嵌对象链接
(4)ARP欺骗挂马系统层安全威胁
(1)web站点的宿主操作系统存在的远程渗透攻击和本地渗透攻击威胁。
(2)web服务器软件安全威胁
(3)web服务器软件如IIS,Apache作为一种典型的网络服务,攻击者可以它们的漏洞对web服务器实施渗透攻击或者获取敏感信息。
(4)web应用程序安全与威胁
3. SQL注入
SQL注入攻击原理
利用web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术。是由于用户输入没有被正确的过滤以消除SQL语言中的字符串转义字符。原理是向web应用程序提供的用户输入接口输入一段惊心构造的SQL查询命令,攻击和利用不完善的输入验证机制,使得输入代码得以执行完成非预期的攻击操作行为。SQL注入攻击步骤
(1)发现SQL注入点
(2)判断后台数据库类型
(3)后台数据库中管理员用户口令字猜解
(4)上传ASP后门,得到默认账户权限
(5)本地权限提升
(6)利用数据库扩展存储过程执行Shell命令SQL 注入攻击工具
(1)Wposion 能在动态web文档中找出SQL注入漏洞
(2)wieliekoek.pl 以网站镜像工具生成的输入为输出,对表单页面注入字符串修改
(3)SPIKE Proxy 对待注入的字符串进行定制
(4)SPI Toolkit工具包
SQL注入实验
相关知识
SQL语言
SQL(Structured Query Language,结构化查询语言):是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL注入
SQL注入:SQL注入能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。SQL注入危害
1、非法读取、篡改、添加、删除数据库中的数据。
2、盗取用户的各类敏感信息,获取利益。
3、通过修改数据库来修改网页上的内容。
4、私自添加或删除账号。
5、注入木马等等。- SQL注入攻击防范措施
- 使用类型安全的参数编码机制
- 凡是来自外部的用户输入,必须进行完备检查
- 将动态SQL语句替换为存储过程、预编译SQL或ADO命令对象
- 加强SQL数据库服务器的配置与连接
环境搭建
启动mysql:sudo mysqld_safe
启动apache服务器:sudo service apache2 start
配置DNS:sudo vim /etc/hosts
上述的URL仅仅在镜像内部可以访问,因为修改了/etc/hosts文件使http://www.sqllabmysqlphpbb.com指向本机IP127.0.0.1。如果需要在其他机器访问,应该修改hosts文件,使URL映射到phpBB2所在机器的IP。配置网站文件:sudo vim /etc/apache2/conf.d/lab.conf
输入以下内容
关闭对抗措施
PHP提供了自动对抗SQL注入的机制,被称为magic quote,我们需要关闭它:sudo vim /etc/php5/apache2/php.ini
- 找到/etc/php5/apache2/php.ini
- 找到magic_quotes_gpc = On这一行
- 改为magic_quotes_gpc = Off
- 重启Apache:”sudo service apache2 restart”
登录phpbb
- 登陆www.sqllabmysqlphpbb.com网站,需要用户名和密码
对select的攻击
访问www.sqllabmysqlphpbb.com时,我们知道用户而不知道到密码的时候,采用下面方式登录
- 查看登录验证文件:sudo vim /var/www/SQL/Collabtive/include/class.user.php
- 修改SQL语句,如下所示
- 修改之后重启Apache,到密码不管填什么密码都可以登录成功。
对update的攻击
当用户想要在phpBB2中修改他们的资料时,可以点击Profile,然后填写表单修改。用户发送修改请求后,会执行include/usercp_register.php中的一条UPDATE SQL语句。在这条语句中同样有一个SQL注入漏洞,可以用它来达到以下目标:在不知道其他人密码的情况下修改其资料。
XSS攻击实验
XSS攻击步骤:
(1)攻击者构造出一个包括恶意脚本的bank.com登录请求链接,并通过Email/HTTP等方式将攻击链接发送给其它bank.com的网站用户;
(2)受害用户点击攻击链接后,将会把恶意链接中包含的恶意脚本当做用户名参数提交给bank.com的登陆处理网页;
(3)由于bank.com登录处理页面存在XSS漏洞,将会在反馈的欢迎页面中包含恶意客户端脚本;
(4)攻击者的恶意客户端脚本在受害用户浏览中执行,通常会驱动浏览器向攻击者发送会话令牌。如会话ID、Cookie信息等;
(5)攻击者获得用户会话令牌之后,就可以劫持用户会话,或者伪造用户登录bank.com,并可实施进一步攻击。
测试xss漏洞
在seed环境中的phpBB论坛上发布含有脚本“”的帖子,打开帖子后会出现下图所示页面,表示该论坛程序存在XSS漏洞显示用户会话Cookie
kali视频学习(16-20)
Kali漏洞分析之数据库评估(一)
1. BBQSql
BBQSql是一个Python编写的盲注工具(blind SQL injection framework),当检测可疑的注入漏洞时会很有用。同时它也是一个半自动工具,允许客户自定义参数。
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
HexorBase是图形化的密码破解与连接工具,开源;连接并且控制数据库执行一些语句。
4. JSQL Injection
是一款轻量级安全测试工具,可以检测SQL注入漏洞,他跨平台(windows,Linux,Mac os,Solaris),开源且免费。将存在注入漏洞的URL贴进来即可进行响应的漏洞利用。图形化界面比较亲民,但是使用效果有待改善。
5. MDBTools
包括MDB-Export以及MDB-dump,mdb-parsecsv,mdb-sql,mdb-tables等子工具,具体环境具体使用。
6. Orcal Scanner
用JAVA开发的Orcale评估工具。基于插件的结构,可以列举很多信息。
Sid列举
口令测试
列举Oracle版本
列举账号角色
列举账号特权
列举账号哈希
列举审计信息
列举口令策略
列举数据库链接
7. SIDGusser
针对Oracle的SID进行暴力枚举;SID为Oracle连接字符串:实例名+用户+密码
8. SqIDICT(用户名密码枚举工具)
通过wine运行。
Kali漏洞分析之数据库评估(二)
1. tnscmd10g
2. Sqlsus
sqlsus是一个开放源代码的MySQL注入和接管工具,Sqlsus使用perl编写,基于命令行界面。Sqlsus可以获取数据库结构,注入自己的SQL语句,从服务器下载文件。爬行Web站点可写目录,上传和控制后门,克隆数据库等等。最好用的亮点就是注射获取数据速度非常快,另外一个最大的特点就是自动搜索可写目录。
- 获取表:sqlsus> get tables
- 生成配置文件:sqlsus -g test.conf
- 编辑配置文件:vi test,conf
- 修改our $url_start = ""
- 启动并测试:sqlsus test.conf
- 获取数据库数据,查看全部数据库名字:sqlsus> get databases
- 设定数据库:sqlsus> set databases database = "mysql"
可以查看生成的配置文件
3. Sqlninja
是一款perl编写的专门针对Microsoft SQL Server的sql注入工具。和市面上其他注入工具不同,sqlninja没有将精力用在跑数据库上,而是侧重于获得一个shell。
优点:
- 专门针对Microsoft SQL Server的sql注入工具;
- 可以找到远程SQL服务器的标志和特征(版本、用户执行的查询、身份验证模式等);
- sa口令的强力攻击,找到口令后,就将特权提升到“sa”;
- 如果原始的xp_cmdshell被禁用,就创建一个定制的xp_cmdshell。
4. Sqlmap
SQLMAP是一个开源的渗透测试工具,是用Python编写。主要用于自动化的侦测和实施SQL注入攻击以及渗透数据库服务器。配有强大的侦测引擎,适用于高级渗透册书用户,不仅可以获得不同的数据库指纹信息,还可以从数据库中提取数据,有很强大的抓取数据的能力。常用命令如下:
- 列举数据库:sqlmap.py -u "注入地址" -v 1 --dbs
- 当前数据库:sqlmap.py -u "注入地址" -v 1 --current-db
Kali漏洞分析之Web应用代理
1. Burp Suite
用于攻击web应用程序的集成平台,通过默认端口8080运行,它带有一个代理,可以截获并修改从客户端到web应用程序的数据包。
使用Burp Suite截获数据包
设置浏览器代理地址为127.0.0.1,端口8080
Edit>preferences>Advanced>Netwok>Connection>settings>Mnnualproxyconfiguration>HTTP proxy打开burpsuite确定设置的代理地址与浏览器一致
当Intercept is on时,表示已经开启拦截功能。
2. OWASP ZAP
攻击代理,查找网页应用程序漏洞的综合类渗透测试工具,包含拦截代理、自动代理、被动代理、暴力破解、端口扫描及蜘蛛搜索等功能。是会话类调试工具。
3. Vega
开源的web应用程序安全测试平台,Vega能帮助验证SQL注入、跨站脚本(XSS)、敏感信息泄露和其他一些安全漏洞。Vega使用java编写,有GUI,可以在多平台下运行。Vega类似于Paros Proxy, Fiddler, Skipfish and ZAproxy。
4. Paros
paros,是一个对Web应用程序的漏洞进行评估的代理工具,即一个基于Java的Web代理程序,可以评估Web应用程序的漏洞。它支持动态地编辑/查看HTTP/HTTPS,从而改变cookies和表单字段等项目。它包括一个Web通信记录程序,Web圈套程序(spider),hash计算器,还有一个可以测试常见的Web应用程序攻击(如SQL注入式攻击和跨站脚本攻击)的扫描器。该工具检查漏洞形式包括:SQL注入、跨站点脚本攻击、目录遍历等。
5. proxystrike
Web会话安全分析工具ProxyStrike
在Web应用中,客户端发出一次请求,服务器响应一次。这构成一个完整的会话。通过分析请求和响应的数据,可以发现Web应用存在的漏洞。Kali Linux提供一款专用工具ProxyStrike。该工具提供HTTP代理功能,可以跟踪HTTP会话信息,并进行分析统计。同时,该工具也提供拦截功能,安全人员可以对每个会话进行分析和修改,以获取服务器的不同响应。
该工具还通过插件模式,提供安全扫描功能。该工具默认集成SQL注入和XSS两个插件。在捕获会话的同时,该工具会自动进行安全检测,以发现目标服务器存在的漏洞。安全人员也可以使用该工具对目标网站进行爬取,以搜集更多的网站资源,并同时进行安全检测。
6. webscarab
基于GNU协议,包括HTTP代理、网络爬行、网络蜘蛛、会话ID分析等功能。
Kali漏洞分析之BurpSuit
Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。
工具箱:
- Proxy--是一个拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
- Spider--是一个应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
- Scanner[仅限专业版]--是一个高级的工具,执行后,它能自动地发现web 应用程序的安全漏洞。
- Intruder--是一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
- Repeater--是一个靠手动操作来补发单独的HTTP 请求,并分析应用程序响应的工具。
- Sequencer--是一个用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
- Decoder--是一个进行手动执行或对应用程序数据者智能解码编码的工具。
- Comparer--是一个实用的工具,通常是通过一些相关的请求和响应得到两项数据的一个可视化的"差异"。
- Intruder是Burp套件的优势,它提供一组特别有用的功能。它可以自动实施各种攻击,包括:资源枚举、数据提取、模糊测试等常见漏洞。在各种有效的扫描工具中,它能够以最细化、最简单的方式访问它生产的请求与响应,允许组合利用个人智能与该工具的控制优点。
(1)首先配置监听端口,配置浏览器。
(2)然后就可以查看所有请求的数据包
(3)点击数据包,可以查看包内容
(4)右键单击包,选择“send to intruder”,即可进行攻击
Kali漏洞分析之Fuzz工具
Fuzz是模糊测试的工具,是模糊测试时漏洞挖掘过程中的重要一步。
1. Bed.pl
Bed(Bruteforce Exploit Detector)是一个纯文本协议的Fuzz工具,能够检查常见的漏洞,如缓冲区溢出,格式串漏洞,整数溢出等。
使用参数如下:
-s 针对FTP协议,FTP参数
-t 目标IP地址
-p 目标端口
-o timeout 发送一连串畸形数据包,尝试使程序报错,进行判断。
2. Fuzz_ipv6
Fuzz_ipv6是THC出品的针对IPV6协议的模糊测试工具
3. Ohrwurm
ohrwurm 是一个小巧而简单的RTP模糊器,它已经在少量的SIP**上测试过了,它们都没有经受voip分析工具包的模糊测试。
4. Powerfuzzer
Powerfuzzer作为Fuzz请求的工具 ,BurpSuit等Web代理工具也具有相应Fuzz能力。
5. Wfuzz
针对Web应用的模糊测试工具,可以进行Web应用暴力猜解,也支持对网站目录、登录信息、应用资源文件等的暴力猜解,还可以进行get及post参数的猜解,sql注入、xss漏洞测试等。该工具所有功能依赖于字典。
- 登录get请求,登录页面口令猜解
wfuzz -c -z file,users.txt -z file,pass.txt -hc
页面数目猜解 - wfuzz -c -z range,1-10 --hc=BBB
6. SFuzz:Simple-Fuzzer
7. XSSer
针对XSS漏洞的挖掘,xsser --gtk 图形化界面,对一个页面或点进行xss测试,判断是否有XSS的漏洞。
图形化界面:xsser --gtk
学习中遇到的问题
(1)对SQL注入实验还有很多不明白的地方。
(2)XSS攻击较为困难。
(3)视频学习中,学习了Kali漏洞分析的一些软件的使用,有些程序运行的还挺流畅,但是有些程序运行的就稍显吃力,例如BurpSuit,感觉用起来不是很熟练。另外,由于版本问题,视频中的有些软件在自己的虚拟机中并没有找到,例如Fuzz_ipv6,视频中显示是在Fuzzing工具集中,但从Fuzzing工具集中并没有找到该工具。