《Web安全深度剖析》

栏目: 编程工具 · 发布时间: 5年前

内容简介:前端Javascript验证是为了防止用户输入错误,服务端验证是为了防止恶意攻击。主要是搜集服务器的配置信息和网站的信息,其中包括网站注册人、目标网站系统、目标服务器系统、目标网站相关子域名、目标服务器所开放的端口和服务器存放网站等。一个开源的网络连接端扫描软件,用来扫描计算机开放的网络连接段,确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统,号称"扫描之王"

Web安全简介

前端Javascript验证是为了防止用户输入错误,服务端验证是为了防止恶意攻击。

信息探测

主要是搜集服务器的配置信息和网站的信息,其中包括网站注册人、目标网站系统、目标服务器系统、目标网站相关子域名、目标服务器所开放的端口和服务器存放网站等。

Google Hack

  • 搜集子域名 site:qq.com
  • 搜集web信息
    intitle:管理登录 filetype:php
    intext:Powered by Discuz
    

Nmap

一个开源的网络连接端扫描软件,用来扫描计算机开放的网络连接段,确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统,号称"扫描之王"

DirBuster

一款专门用于探测web服务器的目录和隐藏文件。 该软件的原理?

指纹识别

  1. 比如某CMS存在一个特征,在根目录下回存在"dxs.txt",且内容为 dxs v1.0,这个特征就相当于这个CMS的指纹。
  2. 在HTTP请求中通过Server头来获取Web容器信息也算是一种指纹识别
  3. 指纹识别最重要的是特征库

SQL注入漏洞

攻击者绕过程序限制,使用户输入的数据代入数据库执行,利用数据库的特殊性获取更多的信息或者更大的权限。

  • 数字型注入:
  1. 有一个根据ID查询用户信息的接口 http://www.example.com/user?id=1
  2. 服务端拼接 SQLSELECT * FROM user WHERE id = {Id} ,
  3. 如果用户传入 id=8 OR 1=1 ,那么最后的SQL会变成 SELECT * FROM user WHERE id = 8 OR 1=1
  • 字符型注入 字符串类型一般需要使用单引号来闭合及注释多余的代码。

SQL注入工具

  • SQLMap:自动检测和利用SQL注入漏洞
  • Pangolin:拥有更人性化的GUI

防止SQL注入

  • 有输入的地方就有风险
  • 严格的数据类型(主要针对ASP PHP JS等弱类型语言)
  • 特殊字符转义
  • 使用预编译语句 (最推荐)
  • 框架技术
  • 存储过程

上传漏洞

解析漏洞

  • IIS6.0解析漏洞
    • 当建立 *.asa *.asp 格式的文件夹时,期目录下的任意文件都将被当做asp文件来解析
    • 当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行
  • Apache解析漏洞
    • 在碰到不认识的扩展名时(1.php.rar.xs.aa),将会从后向前解析,直到碰到认识的扩展名为止,如果都不认识则会暴露其源码
  • PHP CGI解析漏洞
    • PHP的配置文件中有一个关键的选项 cgi.fi:x_pahtinfo ,在开启时如果访问 http://example.com/1.jpg/xx.php 如果xx.php是不存在的文件,则会向前递归解析1.jpg,把1.jpg当做 php 脚本解析

绕过上传漏洞

  • 客户端检测 仅仅通过Javascript在客户端检测来拒绝非法文件上传是不专业的,客户端验证是防止用户输入错误,而服务端验证才是防御攻击者
  • 服务端检测
    • 验证文件扩展名(白名单和黑名单)
    • MIME验证
    • 目录验证:允许用户将文件放到指定的文件夹,有些开发人员会判断如果目录不存在则创建目录
    • 截断上传攻击

修复上传漏洞

  • 严格过滤目录
  • 文件需要重命名

XSS跨站脚本漏洞

攻击者在网页中嵌入客户端脚本,当用户使用浏览器浏览被嵌入恶意代码的网页时,恶意代码会在用户的浏览器上执行。恶意代码可以获取用户的Cookiee、改变网页内容、URL跳转。

XSS类型

  • 反射性XSS,用户访问一个带有XSS代码的URL请求时,服务单接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞
  • 存储型XSS,攻击者提交一段XSS代码后,呗服务端接收呗存储,当攻击者再次访问某个页面时,这段XSS代码被读取出来并相应给浏览器,造成XSS跨站攻击。
  • DOM XSS: Javascript根据url参数操作DOM,如果url参数被嵌入恶意的XSS代码,那么Javascript也可能会执行恶意代码,DOM型CSS是不需要和服务端交互的。

检测XSS

  • 手工检测: 考虑哪里有输入、输入的数据在哪里输出
  • 全自动检测: XSSER、XSSF

修复XSS漏洞

  • XSS形成的原因是对 输入和输出 没有做严格的过滤。
  • HttpOnly: 对防御XSS漏洞不起作用,主要是为了解决XSS漏洞后续的Cookiee劫持

命令执行漏洞

攻击者可以随意执行系统命令。

  • OS命令执行漏洞:有些Web应用程序提供了一些命令执行的操作,如果没有过滤好用户输入数据则很有可能会形成系统命令执行漏洞。
  • 命令执行模型:靠执行脚本代码调用操作系统命令。

文件包含漏洞

PHP所提供的文件包含功能太强大、太灵活,所以包含漏洞经常出现在PHP中。

require、include、require_once、include_once

其它漏洞

CSRF(跨站请求伪造): 攻击者盗用了你的身份(Cookiee),已你的名义进行非法操作。

用户在登录A网站后,A网站将用户的信息写入cookiee中,在会话保持期间攻击者诱骗用户点击攻击网站B,B网页中含有自动向A网站发起请求的代码(这个请求不是用户知情的),而这次请求会带上A网站的cookiee,A网站的服务端校验通过后以为是用户正常的操作请求。

  • 如何预防CSRF
    • 二次确认,转账操作时要求用户输入二次密码、验证码
    • Token认证,不需要用户输入的验证码,每次请求时自动发送到服务端,而且其他网站的脚本是拿不到这个token,没有token就无法构造出合法的请求。

逻辑漏洞

  • 业务逻辑出现漏洞,有些权限没有做好,导致用户可以进行他本不应该进行的操作。
  • 密码找回漏洞,忘记密码会发送重置密码的请求链接到邮箱,如果这个邮箱攻击者可以随意设置,那么重置密码的链接会可能会发送到攻击者的邮箱。
  • 支付逻辑漏洞
    • 商品数量为负数
    • 指定账户恶意攻击(密码输错三次则锁定账户),预防这种问题最好的办法是不要暴露登录账户,对外仅仅暴露NickName

暴力破解测试

  • 不仅密码不能泄露,账户信息也要好好保密
  • 数据库一般都有一个默认的账户,SQL Server的sa、 MySQL 的root,一些管理系统的admin账户
  • 破解验证码,手机验证码登录时,如果是四位数字验证码,攻击者最多只需要遍历9999次就可以找出验证码。

防止暴力破解

  • 密码设置的一定要复杂
  • 验证码过滤机器人
  • 限制IP、账号操作接口的次数,如果操作连续操作那么僵采取某种措施

旁注攻击+提权

你可以保证你的网站是比较安全的,但是你能保证同一服务器上的所有网站都是安全的吗?


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Rails 5敏捷开发

Rails 5敏捷开发

[美] Sam Ruby、[美] Dave Thomas、[美] David Heinemeier Hansson / 安道、叶炜、大疆Ruby技术团队 / 华中科技大学出版社 / 2017-12-30 / 115.00

本书以讲解“购书网站”案例为主线,逐步介绍Rails的内置功能。全书分为3部分,第一部分介绍Rails的安装、应用程序验证、Rails框架的体系结构,以及Ruby语言知识;第二部分用迭代方式构建应用程序,然后依据敏捷开发模式开展测试,最后用Capistrano完成部署;第三部分补充日常实用的开发知识。本书既有直观的示例,又有深入的分析,同时涵盖了Web开发各方面的知识,堪称一部内容全面而又深入浅出......一起来看看 《Rails 5敏捷开发》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具