基础web漏洞

web十大漏洞

1.SQL 注入

原理:

SQL注入攻击行为可以描述为通过通过用户可控参数中注入SQL语法,破坏原有的SQL结构,达到编写程序时预料之外结果的攻击行为。其成因可以归结为以下两个原因叠加造成的:

程序员在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句。
未对用户可控参数进行足够的过滤,便将参数内容拼接到SQL语句中。

攻击方式:

  • 联合查询
  • 报错注入
  • 布尔盲注
  • 延时注入
  • 宽字节注入
  • user-agent注入、referer注入、cookie注入,base64注入等。
  • sqlmap工具的使用

防御:

  • 避免采用拼接的方式构造SQL语句,可以采用预编译等技术;
  • 对进入SQL语句的参数进行足够的过滤
  • 部署安全设备,比如WAF(安全狗)
  • 现在很多开放框架,基本上已经从技术上,解决SQL注入问题。

2.跨站脚本 (XSS)

原理:

  服务器服务器服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行。

攻击方式:

  • <script>alert(/xss/);</script>
  • <script>confirm(/xss/);</script>
  • <script>confirm('xss');</script>
  • <script>prompt('xss');</script>

防御:

  • 输入过滤(白名单和黑名单)
  • 输入验证
  • 数据消毒
  • 输出编码

3.文件上传

原理:

Web 开放了文件上传功能。

对文件上传功能没有做限制或限制不足。

任意文件上传。

攻击方式:

一句话木马

图片木马

大马

防御:

代码角度:

        采用白名单策略,严格限制上传文件的后缀名;
        上传文件重命名,尽量少的从客户端获取信息,包括文件名、文件类型、文件内容等;
        文件内容检测;
        进行二次渲染,过滤掉图片马中的恶意代码;
        避免文件包含漏洞;
        严格处理文件路径,防御00 截断漏洞;
        检测Token 值,防止数据包重放。
业务角度:

        强口令策略,避免恶意攻击者登录网站后台;

        尽量避免Web 用户修改上传白名单。

Web 容器角度:

        及时更新Web 容器,防止解析漏洞产生。
        禁用Web 容器PUT 方法。
系统角度:

        避开空格、点`.`、`::$DATA` 等windows 系统特性。
服务器部署:

        严格控制权限,执行权限与写权限分离。
        建立单独的文件存储服务器,类似于站库分离。

4.文件读取

原理:

网站开启的文件读取功能,但是对文件读取没有做限制或限制不足,导致任意文件读取。

攻击方式:

?dir=/etc/passwd
?filepath=../../../../../../etc/passwd
?filename=c:\windows\system32\drivers\etc\hosts

防御:

  • 使用白名单,让web 用户只能访问(读取),所需要的文件和路径。
  • 不能有文件包含漏洞,目录遍历漏洞或其他漏洞。
  • 限定文件访问范围
;php.ini
open_basedir = c:\www\

5.文件包含

原理:

PHP 文件包含是程序设计的基础功能之一,能够减少代码量,提高开发效率。但是使用文件包含功能时,实现了动态包含,就有产生文件包含漏洞的风险。如果实现动态包含的参数,Web 应用没有进行严格的校验,浏览器客户端用户可以影响控制被包含文件的路径,就会产生任意文件包含漏洞。

  • 动态包含
  • 被包含文件路径可控

攻击方式:

  • 包含图片木马
  • 读取敏感文件
  • 读取 PHP 源码
  • 执行 PHP 命令
  • 包含图片马写 shell

防御:

  • 尽量少的使用动态包含。
  • 严格过滤被包含文件的路径。
  • 将参数 allow_url_include 设置为 Off。
  • 使用参数 open_basedir 限定文件访问范围。
  • open_basedir = c:\phpstudy_2016\www\

6.暴力破解 / 弱口令

原理:

指用户设置的密码过于简单或者易于猜测,容易被攻击者通过尝试不同的组合进行暴力破解。

攻击方式:

burpsuite爆破

hydar爆破

medusha爆破

防御:

  • 设置密码使用复杂的字符串,包括大小写字母、数字和特殊符号,并且长度要足够长。
  • 使用两步验证

7.跨站请求伪造

原理:

 攻击者可以伪造当前已经登录用户的身份访问正常的网站,执行非本意的操作。正常的网站,没有对来源请求进行严格的验证和过滤,导致攻击者可以伪造正常用户的请求,达到攻击的目的。        

攻击方式:

防御:

验证Referer字段

二次验证:在关键操作之前,在输入密码或者验证码。

添加Token 验证:

HttpOnly:某些情况下禁止 JS 脚本访问

SameSite:Cookie 属性,浏览器自带安全机制。

8.服务端请求伪造

原理:

服务器接收用户侧URL 地址时,没有做限制或限制不足。

服务器直接返回URL 请求的结果,让攻击者可以知道更多细节。

攻击方式:

/ssrf_curl.php?url=http://localhost:80

防御:

过滤输入

  • 限制协议,仅允许http 或https 协议;
  • 限制IP,避免应用被用来获取内网数据,攻击内网;
  • 限制端口,限制请求端口为常用端口。

过滤输出

  • 过滤返回信息,只要不符合要求的,全部过滤;
  • 统一错误信息,让攻击无法对内网信息进行判断。

9.反序列化漏洞

(暂时不会)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值