51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2015|回复: 1
打印 上一主题 下一主题

[讨论] 常见的web攻击技术

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-3-6 15:28:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 always_fly 于 2018-3-6 15:30 编辑

今天看图解http,里面讲了些常见的web攻击技术,写一个博客对其原理及其应对方式进行一个整理

1、xss跨站攻击技术:主要是攻击者往网页里嵌入恶意脚本,或者通过改变html元素属性来实现攻
击,主要原因在于开发者对用户的变量直接使用导致进入html中会被直接编译成js,通常的get请求
通过url来传参,可以在url中传入恶意脚本,从而获取信息,解决方法:特殊字符过滤。

2、sql注入攻击:主要是就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字
符串,最终达到欺骗服务器执行恶意的SQL命令,比如select * from test where username="wuxu"
or 1=1,这样会使用户跳过密码直接登录,具体解决方案:1、特殊字符过滤,不要用拼接字符串
的方法来凑sql语句。2、对sql语句进行预编译,比如java的preparedstatement。3、关闭错误信息,
攻击者可能会通过不断的尝试来得到数据库的一些信息,所以关闭错误信息变得重要起来。4、客
户端对数据进行加密,使原来传进来的参数因为加密而被过滤掉。5、控制数据库的权限,比如只
能select,不能insert,防止攻击者通过select * from test ;drop tables这种操作

3、os命令注入攻击:系统提供命令执行类函数主要方便处理相关应用场景的功能.而当不合理的使
用这类函数,同时调用的变量未考虑安全因素,就会执行恶意的命令调用,被攻击利用。主要原
因是服务端在调用系统命令时采用的是字符串连接的方式,比如a="a.txt;rm -rf *",system("rm -rf
{$a}"),这会给服务端带去惨痛的代价,具体解决方案:1、在程序开发时少用系统命令,执行命
令的参数尽量不要从外部获取。2、参数特殊字符过滤

4、http首部注入攻击:看了半天不知道这是啥,网上资料也比较少

5、邮件首部注入攻击:它允许恶意攻击者注入任何邮件头字段,BCC、CC、主题等,它允许黑客通
过注入手段从受害者的邮件服务器发送垃圾邮件。主要是利用邮件系统传参的bug来进行攻击,
解决方法:1、使用正则表达式来过滤用用户提交的数据。例如,我们可以在输入字符串中搜索(r
或 n)。2、永远不要信任用户的输入。3、使用外部组建和库

6、目录遍历攻击:目录遍历是Http所存在的一个安全漏洞,它使得攻击者能够访问受限制的目
录,并在Web服务器的根目录以外执行命令。这种url会返回/windows/system.ini给用户,所以服务器上的重要文件就会遭到泄漏,解决方法:根目录访问,现在主流服务器,比如nginx,都
会有www根目录,是网站的根目录,所以用户只能访问该根目录下的文件,不能访问其他目录下
的文件,从而实现了权限控制。而目录遍历并不是一个漏洞,而是服务器的一个功能,而因为管
理员的疏忽从而变成了漏洞

7、远程目录包含攻击,原理就是注入一段用户能控制的脚本或代码,并让服务端执行。比如php
中的include($filename),而此filename由用户传入,用户即可传入一段恶意脚本,从而对服务其造
成伤害,解决方法:当采用文件包含函数的时候,不应动态传入,而应该有具体的文件名,如果
动态传入,要保证动态变量不被用户所控制

8、会话劫持:这是一种通过获取用户Session ID后,使用该Session ID登录目标账号的攻击方法,
此时攻击者实际上是使用了目标账户的有效Session。会话劫持的第一步是取得一个合法的会话标
识来伪装成合法用户,因此需要保证会话标识不被泄漏,通俗一点就是用户在登录时,唯一标示
用户身份的session id被劫持,使得攻击者可以用这个session id来进行登录后操作,而攻击者主要
是通过 窃取:使用网络嗅探,XSS攻击等方法获得。而第一种方式网络嗅探,我们可以通过ssl加
密,也就是https来对报文进行加密,从而防止报文被截获,而第二种方式xss攻击,方式在第一种
已经给出,不再赘述。此外通过设置HttpOnly。通过设置Cookie的HttpOnly为true,可以防止客户
端脚本访问这个Cookie,从而有效的防止XSS攻击,还有就是设置token验证。关闭透明化Session
ID。透明化Session ID指当浏览器中的Http请求没有使用Cookie来存放Session ID时,Session ID
则使用URL来传递。

9、会话固定:会话固定是会话劫持的一种,区别就是,会话固定是攻击者通过某种手段重置
目标用户的SessionID,然后监听用户会话状态;用户携带sessionid进行登录,攻击者获取sessi
onid来进行会话,解决方案:服务端设置用户登录后的sessionid与登录前不一样即可,另外会
话劫持的方法也可以用在会话固定上

10、csrf跨站伪造请求攻击:其实就是攻击者盗用了你的身份,以你的名义发送恶意请求。具
体原理比较复杂

具体方案:1、验证referer字段,这个字段主要是反映了访问某个网页只能有referer发起请求,
所以通过referer验证,可以抵御一部分csrf攻击。2、在请求地址中加token验证,攻击者发送
恶意请求时,通过token验证来进行身份验证,而token必须是一个攻击者猜不到的,很难去模
拟出来的,具体来说可以放在表单的hidden字段中。3、在htttp请求头中定义字段,其实就是
将2中说得token字段放入请求头,解决了每次在请求头中加入token的不便,同时在其也不会
记录在地址栏里,降低了token泄露的风险



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-25 16:59 , Processed in 0.068202 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表