#2018-2019-2 20189206 《网络攻防实践》第五次作业
课本内容
web应用程序体系结构及其安全威胁
web应用体系结构 |
web应用程序是一种使用浏览器在互联网或企业内部网上进行访问操作的应用软件形态,也造就了B/S计算结构,提升了部署和应用的便捷性。web应用体系结构如图所示:
- 浏览器:完成数据显示与展示渲染
- 服务器:完成业务计算处理
- web服务器软件、web应用程序以及后端数据库构成
- 由三层架构(表示层、业务逻辑层和数据层)组织构建
- 浏览器与服务器之间的通信通过因特网或内联网上HTTP/HTTPS应用层协议的请求与应答进行通信
针对于上图对关键组件进行介绍:
- 浏览器 使用HTTP/HTTPS协议、HTML语言与web服务器进行交互,获取信息
- web服务器 不仅仅是一个HTTP守护程序,有对各种web动态编程语言的支持
- web应用程序 即处于服务器端的业务逻辑
- 最为常见的三层体系结构由 表示层、业务逻辑层和数据层组成
- 表示层:接受web客户端的输入并显示结果
- 业务逻辑层:从表示层接受输入并完成某些工作,需要数据层的协作,再将结果送回表示层
- 数据层:以数据库或本地文件的形式,提供非易失的信息存储
- 最为常见的三层体系结构由 表示层、业务逻辑层和数据层组成
- 数据库
- 传输协议HTTP/HTTPS 浏览器与web站点之间的通信传输协议时HTTP/HTTPS协议,HTTP协议默认使用TCP 80端口,该协议采用统一资源标识符URI对各种资源进行统一定义,采用请求/相应模式,请求资源。
- SSL/TLS隧道技术,来实现加密传输的HTTPS协议。
web应用安全威胁 |
- 针对浏览器和终端用户的web浏览安全威胁:网页木马、网站钓鱼等
- 针对传输层的网络协议安全威胁:针对HTTP明文传输协议的敏感信息监听、拒绝服务攻击等
- 系统层安全威胁:web站点的宿主操作系统
- web服务器软件安全威胁:web服务器软件也存在着漏洞与弱点
- web数据安全威胁:web站点中在web应用程序后台存储的关键数据内容。
web应用安全攻防技术概述
web应用信息收集 |
针对web应用的攻击也需要首先进行信息情报的收集,主要收集:服务器域名,IP地址和虚拟IP地址,web服务器端口与其他开放服务,web站点类型和版本,web应用程序类型及版本,web服务器及其存在的安全漏洞信息。
- 手工审查web应用程序结构与源代码
- 攻击web目标,首先手工浏览web应用的各个页面、菜单、目录,查看关键页面的源代码。
- 查看静态和动态生成的页面
- 目录结构 web服务器的存储目录结构
- 辅助性文件
- 输入表单 form是web应用程序接受用户输入的主要途径,通过手工审查页面源代码可以发现一些关键表单的位置
- 查询参数字符串
- 自动下载与镜像web站页面
- Google hacking技术审查与探测web应用程序
- web应用程序安全评估与漏洞审查
- 针对web应用程序的攻击主要集中在身份验证、会话管理、数据库操作、输入数据合法/合理性检查。
- 浏览器插件:可以实时查看和修改传递给远端web服务器的数据。
- 原理:在浏览器中嵌入软件模块,监控要发送的请求,将其暂停交给分析人员,并为其提供修改请求的功能,之后再将修改后的请求发送出去。firefox浏览器的插件有——tamperData、Firebug、view source chart、Venkman JavaScript Debugger、Live HTTP Headers等。
- 免费工具集
- 商业web应用安全评估系统和漏洞扫描器
- 攻击web目标,首先手工浏览web应用的各个页面、菜单、目录,查看关键页面的源代码。
攻击web服务器软件 |
web服务器的安全漏洞主要分为以下几类:
- 数据驱动的远程代码执行安全漏洞:web服务器软件作为网络服务守护进程,也会出现缓冲区溢出、不安全指针、格式化字符串等一系列数据驱动安全漏洞的远程攻击渗透攻击。
- 服务器功能扩展模块漏洞
- 样本文件安全漏洞
- 源代码泄露
- 资源解析攻击
攻击web应用程序 |
针对web应用安全威胁从攻击技术角度分为以下6类:
- 针对认证机制的攻击:针对用来确认用户、服务或应用身份机制的攻击手段
- 授权机制的攻击:针对用来确定用户、服务或应用是否具有执行请求动作必须权限机制的攻击手段
- 客户端攻击:扰乱或渗透攻击web站点客户端用户的攻击手段
- 命令执行攻击:在web站点执行远程命令的攻击手段
- 信息暴露:获取web站点具体系统信息的攻击手段
- 逻辑攻击:扰乱或渗透攻击web应用逻辑流程的攻击手段
攻击web数据内容 |
- 安全敏感数据泄露
- web服务器存在目录遍历漏洞或不安全的目录文件枚举配置
- 利用web服务器的上传目录临时中转文件
- 在web站点公开的文档资料中包含个人隐私、企业秘密
- 网站篡改
- 利用特定攻击手段入侵网站后,将网站页面内容进行替换,表达入侵成功或某种观点诉求。
- 不良信息内容上传
SQL注入
代码注入利用web应用程序的输入验证不完善漏洞,使得web应用程序执行由攻击者所注入的恶意指令和代码。
代码注入根据攻击目标不同分为:
- 恶意读取、修改与操纵数据库的SQL注入攻击;
- 在web服务器端安装、执行Webshaell等恶意脚本的PHP注入或ASP注入攻击;
- 在web服务器端恶意执行操作系统命令的shell注入攻击;
- 其他多种注入攻击
SQL注入攻击原理 |
利用web应用程序的数据层存在的输入验证不完善性安全漏洞实施的代码注入攻击技术。由于用户输入没有被正确地过滤以消除SQL语言中的转义字符,或没有进行严格的类型判断,使得用户可以输入并执行一些非预期的SQL指令代码。
SQL注入攻击步骤和过程 |
- 发现SQL注入点
- 在动态网页中存在
http://SITE/xxx.asp?some_rec=yyy
的动态网页,当some_rec
字段为整形参数,通过不同的三种字符串可判断该动态页面是否存在SQL注入点。yyy
修改为yyy'
造成SQL出错,动态页面返回错误提示信息yyy
修改为yyy and 1=1
不对查询条件造成任何影响,返回正常页面yyy
修改为yyy and 1=2
查询不到任何信息- 存在以上三种情况认为web应用存在注入点
- 当
some_rec
为字符型参数时,通过三种不同的字符串确定是否存在SQL注入点yyy
修改为yyy'
输入引号不匹配造成SQL语句错误yyy
修改为yyy'and'1'='1'
不对查询语句造成任何影响- yyy修改为
yyy' and '1'='2'
查询不到任何信息,返回空白页面或错误提示信息
- 在动态网页中存在
- 判断后台数据库类型
- 利用数据库服务器的系统变量
- 利用数据库服务器的系统表进行判断
- 后台数据库管理员用户口令猜解
- 猜解表名
- 猜解字段名
- 用户名与口令猜解
- 上传ASP后门,得到默认账户权限
- 在破解得到web应用管理员用户名和口令后,通过找出后台管理界面登录,攻击者就可以通过后台管理界面通常所提供的的下载上传文件等功能上传ASP后门,对web站点进行远程控制。
- 本地权限提升
- 利用数据库扩展存储过程执行shell命令
SQL注入攻击工具 |
- Wposion在动态文档中找出SQL注入漏洞
- wieliekoek.pl找出含有表单的页面,允许在配置文件中对注入字符串进行修改,进行SQL注入漏洞探测
- SPIKE Proxy允许使用者在配置文件中对待注入字符串进行定制,执行自动化注入测试
- SPI Toolkit
URL字符转义
+ URL 中+号表示空格 %2B 空格 URL中的空格可以用+号或者编码 %20 / 分隔目录和子目录 %2F ? 分隔实际的URL和参数 %3F % 指定特殊字符 %25 # 表示书签 %23 &URL 中指定的参数间的分隔符 %26 =URL 中指定参数的值 %3D
XSS跨脚本攻击
XSS跨站脚本攻击的最终目标不是提供服务的web应用程序而是使用web应用程序的用户。XSS的漏洞存在于web应用程序中,使得攻击者可以在web页面中插入恶意代码(HTML或JavaScript)用户在浏览网页时,浏览器会解析这些插入的代码,造成获取用户敏感信息、客户端渗透攻击等危害后果。
XSS攻击技术原理 |
web应用程序对用户输入内容的安全验证与过滤不够完善,用户提交的内容可以包括HTML、JAVAScript及其他脚本代码。例如在name变量填写为,这段客户端代码将会被包含在留言浏览页面中,其他用户访问时将会执行代码。
XSS攻击技术分类 |
- 持久性XSS漏洞
- 通常出现在一些可以将用户输入持久性地保存在web服务器端,在页面中持续显示,从而影响所有访问这些页面的用户。通常在于留言本、BBS论坛、博客等web应用程序中,这些恶意脚本将被永久性地包含在网站页面中。
- 非持久性XSS漏洞
- 攻击者构造一个包含恶意脚本的bank.com登录请求连接,通过email等方式将该攻击发送给其他用户
- 用户点击登录连接后会将恶意连接中包含的恶意脚本当做用户名参数提交给bank.com登陆处理页面
- 网站将会在反馈的欢迎页面中包含恶意客户端脚本
- 攻击者的恶意客户端在受害者浏览器中执行,会驱动浏览器发送会话令牌
- 攻击者获得用户会话令牌后,可以劫持用户会话,伪造用户登录进一步实施攻击
XSS攻击实例 |
在SEED实验环境中的PHPBB论坛程序中引入XSS安全漏洞,我们利用如下步骤来测试与利用该漏洞。
- 通过
http://www.sqllabmysqlphpbb.com
访问,首先需要运行Apache service
- 测试XSS漏洞,在phpbb论坛发布含有脚本
的帖子,验证该论坛程序存在XSS安全漏洞,修改如下代码,不需要密码就可以登录相应的账号。
- 显示用户的会话Cookie
将发布帖子中的脚本换为
- 窃取用户的会话Cookie
攻击者可以进一步利用XSS漏洞进行用户会话Cookie的窃取。攻击者首先架设一个服务器,该服务器将所有收到的HTPP请求显示在屏幕中,然后在论坛中发布帖子。当其他用户访问到该帖子页面时,植入脚本会在浏览器中自动执行。
- 利用Cookie信息假冒其他用户发表与修改帖子
- 实现XSS蠕虫
web浏览器的技术发展与安全威胁
web浏览器软件的安全威胁 |
- 复杂性:现代web浏览器软件由于需要支持HTTP HTTPS FTP等多种类型的应用层协议浏览,符合HTML XHTML CSS等一系列的页面标准规范,支持多种客户端执行环境,满足大量用户的浏览需求,变得非常庞大和复杂。也就导致了浏览器软件中存在着可被渗透攻击所利用的大量安全漏洞。
- 可扩展性:现代浏览器软件都支持第三方插件扩展机制,但第三方扩展插件的开发过程缺乏安全保证,出现安全漏洞的情况更为普遍。
- 连通性:浏览器始终工作在联网状态,一旦其中存在安全漏洞,就很容易被网络上的威胁源利用与攻击。
web浏览器安全威胁位置
- 针对传输网络的网络协议安全威胁
- 针对web浏览器端系统平台的安全威胁——桌面操作系统所存在的安全漏洞使得web浏览器环境存在着被攻击的风险。
- 针对web浏览器软件及插件程序的渗透攻击威胁
- 针对互联网用户的社会工程学攻击威胁
web浏览器端的渗透攻击威胁——网页木马
被隐蔽地挂接在一些提供真实内容的网页上,用户在访问这些网页时,网页木马会神不知鬼不觉地向用户计算机中植入恶意程序,与传统木马程序相比,网页木马还是具有较大的差异性,并体现出更高的复杂性。
网页木马的本质核心就是利用脚本语言实现对web浏览器软件安全漏洞的渗透攻击,从而向客户端主机中植入恶意程序。我们定义网页木马是对web浏览器端软件进行客户端渗透攻击的一类恶意移动代码,通常以网页脚本语言或flash、PDF等恶意构造的web文件形式存在,通过利用web浏览器端软件中存在的安全漏洞,获得客户端计算机的控制权限以植入恶意程序。
对网页木马机理的理解 |
由于网页木马采用客户端渗透攻击的形式,需要web浏览器端软件访问恶意构造的web页面内容,才可能触发渗透攻击过程。因此网页木马的攻击是被动式的,需要一些技术方法诱使互联网用户来访问网页木马页面。
网页挂马机制 |
在编写完成网页木马渗透攻击代码之后,为了使得能够有终端用户使他们可能存在安全漏洞的web浏览端软件来访问网页木马,攻击者还需要将网页木马挂接到一些拥有客户访问流量的网站页面上,这一过程称为网页挂马。
- 内嵌HTML标签
iframe标签的功能是在页面中创建一个内嵌的框架,用于包含和显示其他文档页面,当包含页面被浏览器打开时,被包含的页面也会同时被请求并显示在内嵌框架中。将内嵌框架设置为不可见,避免引起受害者的注意。
- 恶意Script脚本
script脚本标签通过外部引用脚本的方式来包含网页木马。跳转脚本通常使用document.write动态生成包含网页木马连接的iframe内嵌标签。
- 内嵌对象链接
利用图片、flesh等内嵌对象中的特定方法来完成指定页面的加载。这种挂马技术能够产生出一些包含木马连接的图片或flash文件,通过向一些允许用户上传图片和flesh文件的网站进行上传,从而造成这些网站特定页面被挂马的危害后果。
- ARP欺骗挂马
在同一以太网网段内,攻击者通过ARP欺骗可以进行中间人攻击,劫持所有目标网站出入的网络流量,并可能在目标网站的HTML反馈包中注入任意的恶意脚本,从而使其成为将网络访问流量连接至网页木马的挂马网站。
混淆机制 |
网页木马攻击网络中往往采用了大量的混淆技术,来对抗反病毒软件的检测,并提高反病毒工程师的分析难度,从而使得网页木马攻击网络更难被检测和摧毁,这些混淆技术也被称为“免杀”
目前使用广泛的混淆方法主要有:将代码重新排版,去除缩进、空行、换行等,同时将网页木马中的变量名替换为一组合法的随机字符串,失去自我描述能力,干扰阅读分析;通过大小写变换、十六进制编码、escape编码等方法对网页木马进行编码混淆;通过通用或定制加密工具对网页木马进行加密等到密文,使用脚本语言中包含的解密函数对密文进行解密,再进行动态输出或执行;利用字符串运算、数学运算或特殊函数混淆代码;修改网页木马文件掩码欺骗反病毒软件,或对网页木马文件结构进行混淆,来伪装正常文件。
网页木马的检测与分析技术 |
- 基于特征码匹配的传统检测方式
- 用恶意脚本代码静态分析过程来提取出其中具有样本特异性的代码,在线更新至反病毒客户端软件中。
- 基于统计与机器学习的静态分析方法
- 基于动态行为结果判定的检测方法
- 通过构建web访问浏览器及应用软件、存有安全漏洞的高交互式客户端蜜罐环境,在蜜罐中访问待检测的网页,根据访问过程中是否触发了新启动进程、文件系统修改等非预期系统状态变化,以确定当前页面是否被挂载了木马。
- 基于模拟浏览器环境的动态分析检测方法
视频学习
kali漏洞分析之数据库评估 |
- BBQsql
是一个python编写的盲注工具,当检测可疑的注入漏洞时会很有用,同时是一个半自动工具,允许客户自定义参数。
从界面上可以看到设置不同的参数只要在命令行中输入对应的参数即可
- DBPwAudit 数据库用户名密码枚举工具
使用方式:
破解SQLSever数据库
./dbpwaudit -s IP -d master(数据库名) -D mssql(数据库类型) -U username(字典) -P password(字典)
破解MySql数据库
./dbpwaudit.sh -s IP -d mysql(数据库名称) -D MySQL(数据库类型) -U username(字典) -P password(字典)
- HexorBase 图形化的破译与连接工具
可以看到在界面的最下方是bruteforce暴力枚举破译数据库的用户名和密码
- Jsql Injection
一款轻量级的安全测试工具,可以检测SQL注入漏洞。跨平台开源且免费。将存在注入漏洞的URL贴进来就可以进行响应的漏洞利用。
- MDBTools
包括MDB-Export以及MDB-Dump,mdb-parsecsv,mdb-sql,mdb-tables等子工具,具体环境具体使用
- Oracle Scanner
是一个利用Java开发的Oracle评估工具。它是基于插件的结构。
- SIDGsser
sqldict 用户名密码破解工具
tnscmd10g 可以向Oracle数据库注入命令
- sqlsus
是一个开放源代码的SQL注入和接管工具,sqlsus使用perl编写,基于命令行界面,可以获取数据库结构,注入自己的SQL语句,从服务器下载文件,爬行web站点上的可写目录,上传和后空后门等。
使用方法:先利用-g参数,生成test.conf,并编辑配置文件,之后启动测试,获取数据库数据并可查看所有数据库的名字
- sqlninja
是一款专门针对SQL server的SQL注入工具,sqlninja侧重于获得一个shell,可以远程SQL服务器的标志和特征;对管理员账号口令的强力攻击,一旦找到口令进行提权。还具有“逃避技术”、“盲目执行”攻击模式等。注入网址是需要写在配置文件中的,默认是sqlninja.conf
- sqlmap
是一个开源的渗透测试工具,主要用于自动化侦测和实施SQL注入攻击,以及渗透数据库服务器。SQLmap配有强大的侦测引擎,适用于高级渗透测试用户,不仅可以获得数据库的指纹信息,还可以从数据库中提取数据,处理潜在文件系统以及通过带外数据连接执行系统命令。
使用方法:snamp -u "测试是否存在SQL注入的URL" --cookie'PHPHSESSID=cookies值;securtiy=low'
将会测试当前URL是否存在SQL注入漏洞,添加其他参数还可以查看数据库相关信息。
kali漏洞分析之web应用代理 |
通过web应用代理工具分析数据包,或者修改数据包重放、暴力攻击等经常会在web安全测试中用到。
- burpsuite
我们首先在burpsuite的proxy的option选项,将监听设置为127.0.0.1 8080
端口,同时修改firefox浏览器的web代理为127.0.0.1 8080
此时我们可以看到访问百度时没有直接打开百度的连接,在raw页多出了一些请求
点击forword,此时浏览器打开了百度
- owapsZAP
- paros
- vega
是一个开放源码的web应用程序安全测试平台,Vega可以帮助测试SQL注入,XSS、敏感信息泄露和其他安全漏洞也有代理功能,可以利用代理功能截获数据包。
- webScarab
- 是一款代理软件包括HTTP代理、网络爬行、网络蜘蛛、会话ID分析,自动脚本接口,模糊测试工具,web格式的编码与解码等其基于GNU协议,是webGoat中使用的工具之一。
接下来以burpsuit为例的使用介绍 |
burpsuit是一个web应用程序集成攻击平台,包含了一系列burp工具,这些工具之间有大量的接口可以相互通信。平台中所有工具共同享有同一个robust框架,以便统一处理HTTP请求。允许攻击者结合手工和自动技术枚举、分析、攻击web应用程序。
- spide 爬行蜘蛛可以抓取目标网站,以显示网站的内容,基本结构,和其他功能
- scanner web应用漏洞自动发现程序
- repeater 可以手动重新发送单个HTTP请求
- sequencer 对会话令牌,会话标识符或其他出于安全原因需要随机产生的键值的可预测性分析
- decoder 转换成规范的形式编码数据,或转化成各种形式编码和散列的原始数据
- comparer 是一个简单的工具,执行比较数据之间的任何两个项目
接下来是spider的使用,首先,要将浏览器的代理web改为127.0.0.1 如前步骤,然后将dvwa的安全改为low
即可,访问其他页面将会获取到页面信息。
请求到的所有页面都会在proxy主界面的HTTP History下显示出来
返回登录界面,随便输入账号和密码登录肯定是失败的,我们可以在HTTP history下看到最新的一条请求,以及请求的内容
利用intruder模块,对账号密码进行暴力破解,将POST数据包发送给intruder模块,同时,将add包围username和password两个变量,将会利用字典一次替换两个变量,对账号密码进行暴力破解
repeater改包重放 将某个包发送至repeater中可以修改包中的内容重新实现新的访问
compare模块可以比较两个包的不同
BAPP Store可以专门下载一些插件实现更多的功能
kali漏洞分析之Fuzz工具 |
- Bed.pl
- bed是一个纯文本协议的Fuzz工具,能够检查常见的漏洞,例如缓冲区溢出,格式串漏洞,整数溢出等。
- Fuzz_ipv6
- 针对ipv6的工具
- 0hrwurm
- PowerFuzzer
- wfuzz
- 针对web应用的模糊测试工具,可以进行web应用暴力破解,同时支持对网站目录、登录信息。应用资源文件等的暴力破解。
- xsser
- 拥有图形化界面和命令行
测试xsser工具
首先复制浏览器的cookie值,并在命令行输入命令
可以得到结果,100%存在xss漏洞
Python黑帽子
- 遇到的问题,在运行代码mail_sniffer.py时,报错
因为这章的代码时利用Scanpy的接口进行数据包嗅探和提取其中的内容,我检测是否是scapy出现了错误,于是在命令行输入Scapy,出现以下问题
可以看到报错是INFO: Can't import python ecdsa lib. Disabled certificate manipulation tools
应该是在安装matplotlib模块的时候没有安装正确,于是,我利用pip install matplotlib pyx cryptography
尝试安装matplotlib模块,提示
于是我在提示目录下删除了原有的模块重新安装,这次安装成功
之后运行代码没有再报错
运行mail_sniffer.py,同时使用Telnet pop3.163.com 110 输入用户名和密码登录邮箱,将看到mail_sniffer截获到了我们的邮箱账号和密码
- 利用Scapy进行ARP缓存投毒
- ARP投毒就是欺骗目标机器使其确信我们的攻击主机是它的网关,这样所有流量都会通过我们的攻击机,截获目标机器与网关的通信数据
首先我们观察Windows靶机ARP缓存表中攻击机的IP地址与MAC地址。以及其网关的IP地址。
在运行代码时出现了以下的错误
仔细检查代码发现是interface接口错误,仔细检查代码发现,我们选用的网络接口是eth0,而不是书中的en1。:(( 这件事告诉我不能照抄代码,需要理解代码才能正确运行。运行结束后我们可以检查靶机的网关mac地址已经变成了攻击机的mac地址了。
- 处理pcap文件
由于没有找到人脸识别的pcap文件我对这个也不是特别了解,但是运行可以正常运行
代码已经上传到码云,点击这里----> 我的码云:))