《Web安全深度剖析》

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

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

旁注攻击+提权

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


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

查看所有标签

猜你喜欢:

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

Convergence Culture

Convergence Culture

Henry Jenkins / NYU Press / 2006-08-01 / USD 30.00

"Convergence Culture" maps a new territory: where old and new media intersect, where grassroots and corporate media collide, where the power of the media producer, and the power of the consumer intera......一起来看看 《Convergence Culture》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具