昨天来源:CSDN博客
图解HTTP读书笔记(9)版权声明:本文为博主原创文章,未经博主允许不得转载。
图解HTTP读书笔记(十) Web的攻击技术HTTP协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击对象。应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用资源才是攻击目标。
在客户端即可篡改请求
在Web应用中,从浏览器那接收到的HTTP请求的全部内容,都可以在客户端自由的变更、篡改。
在HTTP请求报文内加载攻击代码,就能发起对Web应用的攻击。通过URL查询字段或表单、HTTP首部,Cookie等途径把攻击代码传入,若这时Web应用存在安全漏洞,那内部信息就会遭到窃取,或被攻击者拿到权限管理。
php?url=0EoGDcrhOB" alt="图解HTTP读书笔记" />
针对Web应用的攻击模式
对Web应用的攻击模式有以下两种。
主动攻击 被动攻击 以服务器为目标的主动攻击主动攻击:是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。
由于该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源。
主动攻击模式里具有代表性的攻击是SQL注入攻击和OS命令注入攻击。
以服务器为目标的被动攻击
被动攻击:是指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标Web应用访问发起攻击。
被动攻击通常的攻击模式:
- 步骤1攻击者诱使用户触发已设置好的陷阱,而陷阱会启动发送已嵌入攻击的HTTP请求。步骤2
当用户不知不觉中招后,用户的浏览器或邮件客户端就会触发这个陷阱。
步骤3
中招后的用户浏览器会把含有攻击代码的HTTP请求发送给作为攻击目标的Web应用,运行攻击代码。
步骤4
执行完攻击代码,存在安全漏洞的Web应用会成为攻击者的跳板,可能会导致用户所持的Cookie等个人信息被窃取,登录状态中用户权限遭恶意滥用等后果。
被动攻击模式中具有代表性的攻击是跨站脚本攻击和跨站点请求伪造。
实施Web应用的安全对策实施Web应用的安全对策大致分为两部分
客户端验证 服务端验证 输入值验证 输出值转义客户端验证是为了尽早的识别输入错误,Web端的输入值验证通常是检查是否是符合业务逻辑,或检查字符编码等预防对策。输出转义是很关键的安全策略,当输出值转义不完全时,会因触发攻击者传入的攻击代码,而给输出对象带来损害。
跨站脚本攻击跨站脚本攻击(Cross-Site Scripting,XSS)是指利用网站漏洞从用户那里恶意盗取信息。
动态创建的HTML部分有可能隐藏着安全漏洞。就这样,攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。
跨站脚本攻击可能造成的影响
利用虚假输入表单骗取用户个人信息。 利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。 显示伪造的文章或图片。 SQL注入攻击SQL注入(SQL Injection):是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。
该安全隐患有可能引发极大的威胁,有时会直接导致个人信息及机密信息的泄露。
SQL注入攻击有可能会造成以下等影响。
非法查看或篡改数据库内的数据 规避认证 执行和数据库服务器关联的程序等例如:
正确的SQL语句:select * from table_name where name='jack'and age>20;SQL注入语句:(将刚才的name=’jack’改为name=’jack ’,语句如下:)
select * from table_name where name='jack'--' age>20;SQL语句中的 之后全视为注释,即后面的过滤条件会自动的忽略。这样会对数据库的增删改查有很大影响。
OS命令注入攻击OS命令注入攻击(OS Command Injection)是指通过Web应用,执行非法的操作系统达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。
可以从Web应用中通过Shell来调用操作系统命令。倘若调用Shell时存在疏漏,就可以执行插入的非法OS命令。
OS命令注入攻击可以向Shell发送命令,让Window或linux操作系统的命令行启动程序。也就是说,通过OS注入攻击可执行OS上安装着的各种程序。
HTTP首部注入攻击HTTP首部注入攻击(HTTP Header Injection):是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。属于被动式攻击模式。
HTTP首部注入攻击可能会造成以下影响:
- 设置任何的Cookie - 重定向至任意URL - 显示任意的主体(HTTP响应式截断攻击)通过%0D%0A(表示HTTP报文中换行符),在HTTP请求头中的一个字段中,如Location:xxx…/?index=1%0D%0ASet-Cookie:123456789。
因为%0D%0A表示换行,这样就会在HTTP请求头中额外的再加上一个头信息。这样攻击者就可以伪装成用户。HTTP响应式截断攻击HTTP响应式截断攻击是用在HTTP首部注入的一中攻击。
如果我们在响应头中的头部字段中将两个%0d%0A%0D%0A并排插入字符串后发送。这样就换2行,就可作为HTTP首部与主体部分分隔所需的空行了。这样就可以伪造主体,达到攻击的目的。
利用这个攻击,已触发陷阱的浏览器会显示伪造的Web页面,再让用户输入自己的信息,达到和跨站脚本攻击相同的效果。
邮箱首部注入攻击邮箱首部注入(Mail Header Injextion):是指Web应用中的邮件发送功能,攻击者通过向邮件首部To或Subject内任意添加非法内容发起的攻击。
利用存在安全漏洞的Web网站,可对任意邮件地址发送广告邮件或病毒邮件。
%0D%0A在邮件报文中代表换行符。与HTTP首部注入和HTTP响应式截断相似。
eg:
在发送邮件的报文首部这样xxxxx%0D%0ABcc:user@example.com就会换行,对Bcc邮件地址追加发送
eg:
如果这样xxxxxx%0D%0A%0D%0ATest Message就相当于换2行,就有可能篡改邮件文本内容并发送。
再以相同的方法,就有可能改写To和Subject等任意邮件首部,或者向文本添加附件等动作
目录遍历攻击目录遍历(Directory Traversal):攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。
这种攻击有时也称为路径遍历(Path Traversal)攻击。
目录遍历详解
远程文件包含漏洞远程文件包含漏洞(Remote File Inclusion):是指部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可以运行任意脚本攻击。
这主要是PHP存在的安全漏洞,对PHP的include或require来说,这是一种可通过设定,指定外部服务器的UR作为文件名的功能。但该功能太危险,PHP5.2.0之后默认设定此功能无效。
因设置或设计上的缺陷引发的安全漏洞 强制浏览强制浏览(Forced Browsing)是指,从安置在Web服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。
强制浏览有可能会造成以下一些影响。
泄露顾客的个人信息等重要情报 泄露原本需要具有访问权限的用户才可查阅的信息内容 泄露未外连到外界的文件强制浏览的几种形式:
文件目录一览
通过指定目录名称,即可在文件一览中看到显示的文件名称。
eg: http://www.example.com/log/