《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、账号操作接口的次数,如果操作连续操作那么僵采取某种措施

旁注攻击+提权

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


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

查看所有标签

猜你喜欢:

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

CLR via C#

CLR via C#

Jeffrey Richter / 周靖 / 清华大学出版社 / 2015-1-1 / CNY 109.00

《CLR via C#(第4版)》针对CLR和.NET Framework 4.5进行深入、全面的探讨,并结合实例介绍了如何利用它们进行设计、开发和调试。全书5部分共29章。第Ⅰ部分介绍CLR基础,第Ⅱ部分解释如何设计类型,第Ⅲ部分介绍基本类型,第Ⅳ部分以核心机制为主题,第Ⅴ部分重点介绍线程处理。 通过本书的阅读,读者可以掌握CLR和.NET Framework的精髓,轻松、高效地创建高性能......一起来看看 《CLR via C#》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具