安全测试 订阅
安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。 展开全文
安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。
信息
属    性
安全
模型
将程序看作状态机
中文名
安全测试
性    质
测试
安全测试目的
收起全文
精华内容
下载资源
问答
  • 安全测试

    千次阅读 2020-05-27 19:46:54
    安全测试 文章目录前言1.Web安全测试1.基本安全测试2.认证测试3.会话管理测试4.权限管理测试5.文件和目录测试链接 前言 不做文字的搬运工,多做灵感性记录 这是平时学习总结的地方,用做知识库 平时看到其他文章的...

    安全测试

    前言

    1. 不做文字的搬运工,多做灵感性记录
    2. 这是平时学习总结的地方,用做知识库
    3. 平时看到其他文章的相关知识,也会增加到这里
    4. 随着学习深入,会进行知识拆分和汇总,所以文章会随时更新
    5. 参考的文章过多,所以参考会写不全,见谅

    进行安全测试的,是需要专业的攻防技术的,这里只是做个基础了解,以后还看专攻方向


    1.Web安全测试

    1.基本安全测试

    • 各种登陆模式的安全性验证、对口令各种要求的测试

    • 用户权限(如更能限制、数据访问限制等)的验证

    • cookies 和 Session 的有效期验证等多种机制的验证

    • 敏感数据加密、数据存储安全性的验证

    • 验证系统的日志文件是否得到保护

    • 测试软件不会因在异常条件下错误而导致不安全状态

    • 其他安全漏洞的检查,如WSDigger扫描

      • get方式在URL后输入如name=<script>alter(123456)</script>,若弹出告警框,说明存在跨站漏洞;查看源文件中若包含完整的字符串<script>alter(123456)</script>,则不管有没有弹出告警框,都表明存在跨站点脚本漏洞

      • post 方式在表单的文件框中输入<script>alter(123456)</script>,若弹出警告或者查看源代码中存在输入的字符串则存在漏洞

      • SQL注入

        sql='select yhm,mm 
        	 from  users
        	 where username=' 
        如用户名中输入admin'--后,不输入密码也能登录
        

    2.认证测试

    • 登录页面是否存在验证码,不存在说明存在漏洞
    • 验证码和用户名、密码是否一次性、同时提交给服务器验证,如果分开提交,则存在漏洞
    • 在服务器端,只有在验证码校验通过以后才能进行用户和密码的检验,否则出现漏洞
    • 验证码是否为图片形式且在一张图片中,不为图片形式或不在一张图片中,说明存在漏洞
    • 请求10次观察验证码是否随机生成,如果存在一定的规律(如:5次后出现同一验证码)说明存在漏洞
    • 观察验证码图片中背景是否存在无规律的点或线条,如果背景色为纯色(如:只存在白色)说明有loud
    • 服务器不能对认证错误信息提示准确的信息,如用户名错误、密码错误等
    • 提供合理的锁定策略
    • 预防认证被绕过,如:sql注入

    3.会话管理测试

    • 用户登录后,身份信息不再由客户端提交,而不是以服务器会话信息中保存的身份信息为准
    • URL中不能携带SessionID信息
    • 登陆后的页面有明确的“退出”或“注销”按钮,注销时会话信息要清除

    4.权限管理测试

    • 横向越权:攻击者尝试访问其他拥有相同权限的用户资源
    • 纵向越权:一个低级别攻击者尝试访问高级别用户的资源

    5.文件和目录测试

    • 不存在不需要对外开放的敏感接口或者接口进行了完善的权限控制
    • 禁止获取敏感目录或者文件信息
    • 所有对目录的访问均不能打印处文件列表
    • 禁止访问和下载文档的备份
    • 不能越权获取到不该获取的文件
    • 如DirBuster

    链接

    知识目录

    展开全文
  • 安全测试:BurpSuite 学习使用教程

    万次阅读 多人点赞 2017-09-26 16:10:16
    一、简介: Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的...它主要用来做安全性渗透测试

    一、简介:

    Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。它主要用来做安全性渗透测试。

     

    二、工具箱

     

           1.Target(目标)——显示目标目录结构的的一个功能

      2.Proxy(代理)——是一个拦截HTTP/S的代理服务器抓包),作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
      3.Spider(爬虫)——是一个应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
      4.Scanner(扫描器)[仅限专业版]——是一个高级的工具,执行后,它能自动地发现web 应用程序的安全漏洞
      5.Intruder(入侵)——是一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
      6.Repeater(中继器)——是一个靠手动操作来补发单独的HTTP 请求,并分析应用程序响应的工具。
      7.Sequencer(会话)——是一个用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
      8.Decoder(解码器)——是一个进行手动执行或对应用程序数据者智能解码编码的工具。
      9.Comparer(对比)——是一个实用的工具,通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”
          10.Extender(扩展)——可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
          11.Options(设置)——对Burp Suite的一些设置
     

     

    测试工作流程

     

    Burp支持手动的Web应用程序测试的活动。它可以让你有效地结合手动和自动化技术,使您可以完全控制所有的BurpSuite执行的行动,并提供有关您所测试的应用程序的详细信息和分析。 让我们一起来看看Burp Suite的测试流程过程吧。 如下图

    简要分析

    代理工具可以说是Burp Suite测试流程的一个心脏,它可以让你通过浏览器来浏览应用程序来捕获所有相关信息,并让您轻松地开始进一步行动,在一个典型的测试中,侦察和分析阶段包括以下任务:
    手动映射应用程序-使用浏览器通过BurpSuite代理工作,手动映射应用程序通过以下链接,提交表单,并通过多步骤的过程加强。这个过程将填充代理的历史和目标站点地图与所有请求的内容,通过被动蜘蛛将添加到站点地图,可以从应用程序的响应来推断任何进一步的内容(通过链接、表单等)。也可以请求任何未经请求的站点(在站点地图中以灰色显示的),并使用浏览器请求这些。
    在必要是执行自动映射-您可以使用BurpSuite自动映射过程中的各种方法。可以进行自动蜘蛛爬行,要求在站点地图未经请求的站点。请务必在使用这个工具之前,检查所有的蜘蛛爬行设置。
    使用内容查找功能发现,可以让您浏览或蜘蛛爬行可见的内容链接以进一步的操作。
    使用BurpSuite Intruder(入侵者)通过共同文件和目录列表执行自定义的发现,循环,并确定命中。
    注意,在执行任何自动操作之前,可能有必要更新的BurpSuite的配置的各个方面,诸如目标的范围和会话处理。
    分析应用程序的攻击面 - 映射应用程序的过程中填入代理服务器的历史和目标站点地图与所有的BurpSuite已抓获有关应用程序的信息。这两个库中包含的功能来帮助您分析它们所包含的信息,并评估受攻击面的应用程序公开。此外,您可以使用BurpSuite的目标分析器报告的攻击面的程度和不同类型的应用程序使用的URL 。
    接下来主要介绍下BurpSuite的各个功能吧。先介绍Proxy功能,因为Proxy起到一个心脏功能,所有的应用都基于Proxy的代理功能。

    Burp Suite功能按钮键翻译对照

            导航栏
          

         
          Burp            BurpSuite           save state wizard            保存状态向导     
          restore state            恢复状态            Remember setting            记住设置     
          restore defaults           恢复默认            Intruder            入侵者     
          Start attack            开始攻击(爆破)            Actively scan defined insertion points            定义主动扫描插入点     
          Repeater            中继器            New tab behavior            新标签的行为     
          Automatic payload positions            自动负载位置            config predefined payload lists            配置预定义的有效载荷清单     
          Update content-length            更新内容长度            unpack gzip/deflate           解压gzip/放弃     
          Follow redirections            跟随重定向            process cookies in redirections            在重定向过程中的cookies     
          View            视图            Action            行为     

            功能项
          

         
          Target            目标            Proxy            代理     
          Spider            蜘蛛            Scanner            扫描     
          Intruder            入侵者            Repeater            中继器     
          Sequencer            定序器            Decoder            解码器     
          Comparer            比较器            Extender            扩展     
          Options            设置            Detach            分离     
          Filter            过滤器            SiteMap            网站地图     
          Scope            范围            Filter by request type           通过请求过滤     
          Intercept            拦截            response Modification           响应修改     
          match and replace           匹配和替换            ssl pass through            SSL通过     
          Miscellaneous            杂项            spider status            蜘蛛状态     
          crawler settings           履带式设置            passive spidering            被动蜘蛛     
          form submission           表单提交            application login            应用程序登录     
          spider engine            蜘蛛引擎            scan queue            扫描队列     
          live scanning            现场扫描            live active scanning           现场主动扫描     
          live passive scanning            现场被动扫描            attack insertion points           攻击插入点     
          active scanning optimization            主动扫描优化            active scanning areas           主动扫描区域     
          passive scanning areas            被动扫描区域            Payload            有效载荷     
          payload processing           有效载荷处理            select live capture request            选择现场捕获请求     
          token location within response            内响应令牌的位置            live capture options           实时捕捉选项     
          Manual load            手动加载            Analyze now            现在分析     
          Platform authentication            平台认证            Upstream proxy servers           上游代理服务器     
          Grep Extrack            提取         

     

     

    展开全文
  • 安全测试流程

    千次阅读 2020-09-06 23:00:42
    1.安全测试在做什么? 扫描?在很多人的眼中,做安全的就是整天拿个工具在哪里做扫描操作,使用各种不同的工具做扫描。是的,扫描是安全测试的很重要的一部分,扫描可以快速有效的发现问题。扫描工具的易用性、方便...

    1.安全测试在做什么?
    扫描?在很多人的眼中,做安全的就是整天拿个工具在哪里做扫描操作,使用各种不同的工具做扫描。是的,扫描是安全测试的很重要的一部分,扫描可以快速有效的发现问题。扫描工具的易用性、方便性决定了重要地位。但是扫描工具的局限性、程序的不够灵活等缺点也是显而易见的。不管是扫描报告的分析、漏洞的深度挖掘、测试的组织等等的工作都离不开安全测试人员,所以只能说扫描工具减轻了测试人员的工作量,是安全测试的一种手段。
    2.安全测试者是怎样定位自己的?
    我们经常可以从身边的朋友口中听到一些有关安全的名称,向什么软件安全、信息安全、网络安全、计算机安全等一些词组,这些领域都是做安全的,那么我们是属于哪一个呢?
    大家可以上百度百科查看下这些词组的概念。软件安全往小了说就是某一个软件产品,说大了除了硬件就是软件了啊。信息安全看名字我们就知道关键是信息两个字,但是什么是信息呢,客户的数据还是一切有用的数据?网络安全,什么是网络,网络系统硬件、软件这都是写模糊的可大可小的概念。在看计算机安全,PC?服务器?路由器?好吧我们可以看到这些概念往大了说就成了组成我们今天互联网的各种设备包括各种的嵌入式机器、外接USB、浴室柜尺寸价格专卖蓝牙等设备的共同体的硬软件,以及使用、维护、木桶箱子专卖厂家价格管理等这些东西的人的整个的安全问题。在看他们的区别,他们已不同的地方作为其主要关注点,或者说出发点,他们并没有明显的界线却有着自己的侧重点。而我们的侧重点是什么呢,我们产品是一个什么样的产品呢?我们有WEB服务、接口服务、文件服务、视屏等服务等我们把它们统一称为我们的系统,那么我们就是在做这个系统的安全测试,所以我觉得我们应该定位为系统安全测试。
    当然我们的系统运行中也涉及到人、涉及到硬件,

    比如这些站安全比较好

     

     

    此处都不是我们的关注点,我们只从软件技术的角度来识别它。那么,系统安全测试就成了区别于功能测试,和性能测试一样,单独列出来的专项测试了。

    3.安全的本质是什么?
    信任、人性(网络安全的最大漏洞是人)、止损、攻防
    以上是当前网上一些主要的论点,以信任或者不信任作为本质出发点的还是占据主流的。
    4.概念定义
    敏感数据:
    敏感数据的具体范围取决于产品具体的应用场景,产品应根据风险进行分析和判断。典型的敏感数据包括口令、银行帐号、大批量个人数据、用户通信内容和密钥等。
    个人数据:
    指直接通过该数据或者结合该数据与其他的信息,可以识别出自然人的信息。
    匿名化:
    指对个人数据进行的更改(例如单向散列、截短、替换等,如需保留个人数据真实值与替换值之间的对应关系,可以使用对称加密或映射表方式,但密钥/映射表必须由数据所有者控制),使原来有关个人的信息不再能归属到一个可识别的自然人,或推理这种归属需要耗费过多、不相称的时间、费用和精力

    5.我们应该如何去着手
    如何着手去做这个系统安全测试呢?作为一个测试人员要保证系统整体的安全,这就需要有一个整体的结构的框架,就像盖房子一样,先造钢筋混凝土框架,然后砖块去填充它。这里的钢筋混凝土框架就是安全特性方向,其实就是从整体方向上的一个划分,可以有如下简单的划分。
    5.1.测试的特性
    安全特性:操作系统安全、数据库安全、WEB安全、软件的发布和安装安全、协议与接口攻防、敏感数据保护、手机端安全、静态代码分析。
    5.1.1.操作系统安全
    操作系统安全我们可以把它分为以下几块:
    系统漏洞(操作系统补丁)、系统配置(安全加固)
    业界权威工具Nessus,其他如retina、绿盟、天镜等。开源的工具可以使用OpenVAS。
    5.1.2.数据库
    数据库安全我们可以把它分为以下几块:
    数据库漏洞(补丁)、数据库配置特产(安全加固)
    工具可以使用Ngs
    5.1.3.web安全
    数据库安全我们可以把它分为以下几块:
    身份验证、验证码、会话管理、权限管理、敏感信息传输、安全审计、信息泄露、输入校验、输出编码、上传下载、异常处理、注释代码等
    容器的安全(tomcat)
    应用软件安全(nginx、负载均衡软件、jquery等)
    扫描工:appScan、awvs
    5.1.4.软件的发布与安装安全
    发布件的完整性校验(签名、哈希)
    防病毒:需要安装的软件需要经过常用的杀毒软件(如360、卡巴斯基、金山毒霸等)的扫描,保证没有病毒特种码,以免被杀软处理掉。
    5.1.5.协议与接口攻防
    业务交互数据在网络中使用的协议安全性测试
    协议测试工具:codenomical
    对外开放的端口:系统对外开放的端口必须是必须的,禁止开放无用端口
    端口扫描工具:Nmap,近端可以直接在服务器上使用命令查看
    接口:接口接受的数据需要做严格的处理
    接口数据严格校验测试
    5.1.6.敏感数据保护
    识别敏感数据:密码、秘钥、会话标识;个人信息、商业机密、客户信息等
    保护:加密、存储位置、传输方式;获取数据脱敏、匿名化


    5.1.7.手机端安全
    1、app的签名、反逆向
    2、用户隐私
    3、文件权限
    4、网络通讯
    5、运行时解释保护
    6、组件权限保护
    7、升级
    8、3rd库

    移动APP测试要点:http://blog.nsfocus.net/mobile-app-security-security-test/
    5.1.8.静态代码分析(纯白盒)
    白盒测试主要是通过对代码的浏览来发现问题,当然问题的类型可能是跟我们黑灰盒总结的一致,拿出来单独讲是因为其不同于其他的测试方式。
    1、危险函数、方法
    2、工具检测
    3、逻辑漏洞

    灰盒
    结合白盒和黑盒的一些思路,在实际的代码审计中建议采用灰盒的方式,在需要的地方对代码进行动态调试查看。审计中思路可以考虑如下这些部分:
    1、涉及敏感数据的时候,检查是get、post哪种形式发送数据
    Get传输的数据会被记录在代理、浏览器、web容器tomcat等的日志中
    2、提交铭感数据的时候是否有防止csrf的token、refer、验证码等
    3、sql注入
    1)Statement和preparestatement
    2)mybitas框架 #和$
    4、XSS
    我们用的antisamy只能过滤基于标签的XSS伪造,其他的无法过滤,需要做二次过滤
    5、逻辑
    此处是指,逻辑思路不合理,不符合安全的一些思想,如权限最小化等等
    6、参数范围是否造成dos或者影响系统性能
    7、权限校验、越权
    1)横、纵、多步骤关联性
    2)
    8、session会话管理
    1)常规cookie及session形式
    2)把token作为session的形式,特别注入登录用户和token的绑定关系
    9、参数是否是简单形式,是否可以造成遍历
    10、代码中使用的第三方插件、开源软件是否是最新、是否有安全漏洞
    11、代码中所使用的加密算法,是否是安全的
    12、跳转中的redirect形式中不要带敏感信息,会被发回客户端重新请求的,相当于把这些参数放在了get请求中
    13、SSRF服务端请求伪造,注意url中含有另外一个url的请求
    1)源码中使用urlconnection 支持的协议除了http和https以外,还有file、ftp、jar、mailto等
    request、httpurlconnecttion、httpClient、URL等发起网络请求
    14、加密算法的使用,是否使用的是不合场景的弱算法

    15、数据插入自增Id攻击
    数据传入过来做插入动作,并且使用spring自动绑定对象方法获取数据,之后使用生成的插入sql
    此时自动增长id不要写到更新语句中,如果写入可能造成恶意注入integer范围最大值2147483647,使功能不可用dos
    16、Spring自动绑定参数,参数扩展攻击
    后台使用的对象参数自动绑定获取,相应的sql使用了自动的if是否为null和为空的判断条件,前台可以根据猜测
    注入队形的相应的属性实现非预料结果
    5.2.WEB安全测试
    5.2.1.身份验证
    为防止密码破解和猜测:
    复杂度要求,必须由大写、小写、数字等组成;
    时效性要求,建议用户3个月更改一次口令;
    密码长度要求,最小8位,最大?位;
    管理员重置密码后密码必须在下次登录更改;
    强度要求,不能跟原密码一致,不能与用户名相似(如,不能包含用户名正写反写大小写等),
    (最新也有说法不建议频繁修改http://www.secdoctor.cn/html/sec/35995.html)
    口令认证必须在服务端进行。
    必须要有验证码机制。
    登录锁定,登录需要有锁定机制即就是多次登录失败后锁定账号或者ip,在一段时间后自动解锁。
    手机验证码轰炸
    手机验证码超时机制
    账户枚举测试

    弱密码概念:https://help.aliyun.com/knowledge_detail/37509.html?spm=5176.7837442.2.5.ZotsLv
    5.2.2.验证码 (普通验证码、知识验证码、无需思考的滑动验证码)
    验证码字符生成算法的安全随机数
    验证码字符不能被验证码识别工具识别
    验证码必须是一次性的
    验证码超时(验证码有效期的意义:1、增加图片处理识别的难度;2、验证码没有有效期的话导致服务器验证码堆积)
    在忘记密码处做安全问答测试

     

    建议的验证码形式:
    当前的最流行的滑动块验证码,有点用户无需动脑,不会打断用户的思考。
    (验证码的前世今生:http://www.freebuf.com/articles/web/102276.html)

    5.2.3.会话管理
    登录前后会话标示要有变化
    安全退出会话标示注销
    会话标示安全随机
    会话标示的长度适度
    会话超时机制
    会话标识的传输和存储
    会话标识夸PC访问
    5.2.4.权限管理
    通过灰化(隐藏)使功能失效
    纵向越权
    横向越权
    权限分离
    (系统管理、安全管理、审计管理
    系统管理员主要负责用户管理和系统日常运作相关的维护工作;
    安全管理员负责安全策略的配置和系统资源安全属性的设定;
    审计管理员则对系统审计信息进行管理)
    参看《关于越权》

    5.2.5.敏感信息传输及存储
    敏感信息不能以get方式提交
    传输通道使用https(关键数据提交服务端不接收http明文数据)
    严格安全传输HSTS(确保从浏览器发出的请求就是https的)
    在url中有session
    对用户保密的信息不能传输到客户端
    含有敏感信息的页面需要设置不缓存
    5.2.6.安全审计
    登录、退出、操作等都要有日志
    日志格式标准(时间、谁、做了什么操作、结果怎样)
    日志访问的限制
    日志中的敏感信息

    他们是如何迭代的?日志是否保存足够长的时间?
    日志是如何被审查的?管理员能否通过审查出发现攻击行为?
    日志备份如何保存?
    日志记录数据前是否进行验证(最小最大长度,字符等)?
    5.2.7.信息泄露
    数据库版本泄露
    容器版本泄露
    绝对路径泄露
    异常信息泄露
    泄露服务器路径
    泄露容器版本
    泄露程序详细堆栈信息
    源代码泄露
    检测Web网络是否存在源代码泄露漏洞,如果存在此漏洞,攻击者可直接下载网站的源代码。
    管理地址泄露
    网站管理地址属于内部使用的信息,公开增加了安全风险。
    Bak信息泄露
    搜索引擎发现和侦察信息泄露(暂时不涉及)
    服务器指纹探测(使用指纹探测工具whatweb需要在linux上编译运行,httprint--最新的signatures.txt不然识别到不准确)


    【其他关注项:】
    枚举web服务器上存在的应用程序
    Whois信息收集
    识别Web应用框架
    Owasp测试指南4中文:https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/zh/web_application_security_testing/review_webserver_metafiles_for_information_leakage_otg-info-003.html
    拖库撞库http://blog.nsfocus.net/information-leakage-thinking-library-collision/
    5.2.8.输入校验
    前台后台都必须校验(“移除已知的恶意数据”不如移除“良好数据之外的所有数据”)
    5.2.8.1.XSS(跨站点脚本攻击)
    XSS-1反射型跨站点脚本编制
    XSS-2存储型跨站点脚本编制(http://xxxxx0000sssss.lofter.com/post/14b1dc_50023e)
    XSS-3 DOM型跨站点脚本编制
    dom xss并不复杂,他也属于反射型xss的一种,domxss取决于输出位置,并不取决于输出环境,因此domxss既有可能是反射型的,也有可能是存储型的),简单去理解就是因为他输出点在DOM,所以在道哥的《白帽子讲Web安全里》也有详细介绍。dom - xss是通过url传入参数去控制触发的。
    HPP(HTTP参数污染[同名参数]http://blog.csdn.net/eatmilkboy/article/details/6761407)
    漏洞危害:
    1、钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。
    2、网站挂马:跨站时利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
    3、身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取到用户的Cookie,从而利用该Cookie盗取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。
    4、盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。
    5、垃圾信息发送:比如在SNS社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
    6、劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。
    7、XSS蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。
    参考:
    https://help.aliyun.com/knowledge_detail/37444.html?spm=5176.7837442.2.11.F8ceHg
    http://blog.csdn.net/change518/article/details/51024706 隐藏域XSS(借助accesskey属性)
    5.2.8.2.SQL注入
    (1、java预处理preparestatement;2、正则表达式过滤参数;3、严格字符串过滤;4、参数化的sql)
    例子:参数date=if(now()=sysdate(),sleep(0),0)/*'XOR(if(now()=sysdate(),sleep(0),0))OR'"XOR(if(now()=sysdate(),sleep(0),0))OR"*/
    Sql语句中的/斜杠:表示执行,把之前时间内的缓存中的语句再执行一遍
    \斜杠:表示语句未完换行
    单行注释:--
    多行注释:/* */
    If(now()=sysdate(),sleep(2),0)表示如果now()=sysdate(),为真执行sleep(2),否则执行0
    当前形势下,新开发的网站,大部分采用新框架都已经可以预防sql注入了,只有手动拼接的sql语句易被sql注入。
    生成注入用例时注意:
    1)’ 单引号闭合
    2)‘OR 单引号也可以有结束开始下一元素的效果
    3)-- - 注释后面跟空格实现注释不跟后面语句连接,后面实际被注释掉效果
    4)Select CONCAT_WS(0x3A, USER, PASSWORD) FROM mysql.user 获取数据库用户
    5)union all 连接两个select查询结果,合union的区别不去重复;两个select查询的字段一样
    6)insert into mysql.user(Host,User,Password) values("%","Sectest",password("111111")) 给数据库添加用户 %:远程用户,localhost:本地用户

    系统使用了MyBatis动态SQL框架组装sql,注意配置文件中的$和#的使用,使用$可能导致sql注入
    拼接后的语句再放入预编译对象是徒劳的,因为在预编译之前拼接的SQL语句执行逻辑已经被破坏,原 SQL语句的本意已经被改变了。

    概念:
    https://help.aliyun.com/knowledge_detail/37450.html?spm=5176.7837442.2.10.ZotsLv
    Sql注入常用语句:
    http://www.111cn.net/database/mysql/58518.htm
    http://wenku.baidu.com/link?url=sK_daSqJFJt3KsCuYQOjCkuGldDJSJQbATiRX42UEocanxFejYSjVESnyHPhvDP___hGAbKSLMhh4020TOP9wItRr1YWiq8OQ1HzYItXc6q

     

    5.2.8.3.XML注入测试
    (借助XXE,攻击者可以实现任意文件读取,DOS拒绝服务攻击以及代理扫描内网等)
    日志注入(\r,\n换行,伪造日志)
    命令注入(操纵系统命令)
    Email Header Injection(邮件标头注入)
    /*(我们在暂时不涉及)
    Email Header Injection:如果表单用于发送email,表单中可能包括“subject”输入项(邮件标题),我们要验证subject中应能escape掉“\n”标识。
    <!--[if !supportLists]--> <!--[endif]-->因为“\n”是新行,如果在subject中输入“hello\ncc:spamvictim@example.com”,可能会形成以下
    Subject: hello
    cc: spamvictim@example.com
    <!--[if !supportLists]--> <!--[endif]-->如果允许用户使用这样的subject,那他可能会给利用这个缺陷通过我们的平台给其它用户发送垃圾邮件。
    */
    5.2.8.4.代码执行
    代码执行是指应用程序对传入命令的参数过滤不严导致恶意用户能控制最终执行的命令,进而入侵系统,导致严重破坏的高危漏洞。
    https://help.aliyun.com/knowledge_detail/37446.html?spm=5176.7837442.2.2.nCzE5s

    5.2.8.5.CRLF漏洞
    CRLF,carriage-return-line-feed,回车换行漏洞。
    案例参考:https://www.leavesongs.com/PENETRATION/Sina-CRLF-Injection.html(对header进行注入)

    5.2.9.上传下载
    跨目录文件下载
    任意文件下载

    任意文件上传(后缀)
    任意目录文件上传(目录)
    超大文件上传(大小)
    上传文件废弃后处理(堆积)
    上传文件名xss(重命名)
    上传文件名截断(0x00或者0x58,burp也可以修改二进制,url中%00)
    上传文件权限限制
    压缩炸弹
    Include包含上传(shtml)
    上传zip文件名中包含../
    本地文件包含的概念:
    https://help.aliyun.com/knowledge_detail/37472.html?spm=5176.7837442.2.2.2NdNhY
    5.2.10.CSRF

    CSRF【cross site request forgery】跨站点请求伪造。
    原理:利用浏览器内存共享原理,利用用户身份伪造用户动作发送到服务端。(从恶意站点模拟用户发送正常的请求携带cookie,见7.1)
    5.2.10.1.URL重定向(跳转)漏洞:
    (参考http://drops.wooyun.org/papers/154)
    1、问题点
    在页面跳转的地方,URL中包含另外的网址,例如:
    第一类 简单URL过滤
    www.xxx.com?a=http://www.yyy.com
    第二类 底层操作类库支持其他协议导致读取本地或探测网络信息
    http://h2w.iask.cn/h5.php?u=file:///etc/passwd
    由于底层适用类curl库,而没有正确过滤URL导致,可以读取内网诸多信息.还有其他类似的形式:
    如file://, ftp://, telnet://等
    第三类 不支持其他协议但是没有设置网络边界(SSRF漏洞的姿势啊)
    http://wap.sogou.com/tc?url=http%3A%2F%2Fno.sohu.com%2F
    使用域之间的信任,突破到系统的内网

    2、分析
    理论上讲,url跳转属于CSRF的一种,我们需要对传入的URL做有效性的认证,保证该URL来自于正确的地方,限制的方式同防止csrf一样可以包括:
    1)referer的限制
    2)加入有效性验证Token
    3、对跳转的地址没有做严格的校验
    5.2.11.CORS漏洞
    CORS【cross origin resouse-sharing】跨域资源共享。
    工具:shell of the future
    理解参考:http://www.2cto.com/Article/201209/154081.html
    5.2.12.SSRF漏洞(服务端请求伪造)
    行为特点:从其他服务器获取数据资源的功能,并且此功能获取资源的请求是从服务端发起的。
    可以实现的攻击:
    可以对服务器所在的内网、本地端口进行扫描、获取banner等
    攻击运行在内网或者本地的应用程序(比如溢出)
    对内网WEB应用进行指纹识别,访问默认文件的方式
    攻击内网WEB服务器,get请求方式
    利用file协议读取本地文件:例如http://192.168.1.119/pm/www/index.php?m=bug&f=view&bugID=4052


    http://netsecurity.51cto.com/art/201312/424038.htm
    5.2.13.Google黑客
    1、搜索站点看是否能发现敏感的信息或不该公布的信息
    搜索命令,例如:
    site:yizhen.cn
    site:yizhen.cn yizhen.cn:password
    site:yizhen.cn inurl:session
    site:yizhen inanchor:修改密码
    cache:www.yizhen.cn

    参考:http://www.cnblogs.com/xuanhun/p/3910134.html
    5.2.14.其他
    http开放方法测试
    不安全的方法:put、delete、trace、connect
    TRACE: 这个方法简单返回客户端发送给服务器的所有信息,主要用于调试目的。这个方法最初被认为没有危害,被Jermiah Grossman发现能被用于实施XST
    CONNECT: 这个方法允许客户端使用web服务器作为代理。
    DELETE: 这个方法允许客户端删除web服务器上的一个文件。攻击者能利用他简单直接破坏网站或者实施拒绝服务攻击。
    这个方法允许客户端向web服务器上传新的文件。攻击者可以利用他来上传恶意文件(比如一个asp文件通过调用cmd.exe来执行命令),或者简单使用受害者服务器作为文件仓库。
    banner信息检查
    HTTP方法篡改(已验证,没有此问题;问题案例https://www.sobug.com/article/detail/25)
    JavaScript DDOS(切换https后问题解决)
    缓冲器溢出漏洞,java的不涉及
    管理接口暴力枚举(DirBuster)
    测试HEAD访问控制绕过
    跨域策略测试
    数值溢出
    不管整数,浮点数,长整数等都是有一个可以表示的最大值,如果一个该类型变量被赋予超过其最大值的时候就会出现溢出,而找出该变量的值异常。

    5.2.15.重放攻击
    重放多次请求消耗系统资源的请求,造成dos。筛选出较为消耗资源的请求,检查系统是否有防重放策略或者机制。
    5.2.16.容器的安全
    5.2.16.1.Apache tomcat
    1)官网公布的安全漏洞补丁升级
    http://tomcat.apache.org/security-7.html#Apache_Tomcat_7.x_vulnerabilities
    2)运行账户
    建立独立用户,用户名和组名均为tomcat,不设置密码(即禁止SSH登录),tomcat进程以此帐号身份运行,严禁以root权限运行tomcat,禁止以个人帐号或其他有shell权限的帐号运行tomcat。
    3)删除Tomcat自带项目
    4)检查tomcat已知的带有风险的配置
    a)禁用应用程序自动部署功能(待考虑)
    b)禁用webdav
    c)定制Tomcat出错信息
    d)关闭Tomcat的目录列表功能
    e)限制http请求的消息主体的大小
    f)禁止配置Tomcat的网络连接超时时间为0或-1
    g)可执行文件只能由Tomcat属主用户修改
    h)配置文件只能由Tomcat属主用户修改
    i)日志文件只能由Tomcat属主用户修改和执行
    j)配置虚拟目录,用以隐藏后台路径
    k)禁用SSI和CGI功能
    l)不允许使用SetUID程序,尤其是root身份的SetUID程序
    m)开启Tomcat的日志功能:正常的访问日志和错误请求日志。日志文件的记录中包含访问时间、内容、结果及请求用户的ip等关键信息

    影响较大的漏洞:
    CVE-2016-1240 tomcat地权用户提权漏洞。(2016-10)
    5.2.17.其他组件安全
    5.2.17.1.Nginx
    官网安全漏洞先关链接:http://nginx.org/en/security_advisories.html

    影响较大的漏洞:
    CVE-2016-1247 提权漏洞,借助nginx日志,提取到root。(2016-10)
    5.2.17.2.Jquery
    http://192.168.1.120:8080/amol-hospital/js/jquery-1.9.1.min.js
    http://192.168.1.120:8080/amol-hospital/js/ueditor/third-party/jquery-1.10.2.min.js

    在官网上没有找到相应的安全漏洞列表
    https://blog.jquery.com/2013/02/04/jquery-1-9-1-released/

    Jquery两个版本间更新日志,其中有两处vulnerable字样
    https://github.com/jquery/jquery/compare/1.9.1...1.12.3
    5.2.17.3.Java漏洞
    (放到操作系统部分,nessus可以很好的检查这个)
    5.2.17.4.百度Ueditor(1.4.3)
    5.2.17.5.Node.js(超声视频使用)
    node -v
    v0.10.42

    5.2.17.6.Spring
    5.2.17.7.Mybitas
    5.2.17.8.Druid
    数据库连接池组件,包括四部分:DruidDriver、DruidDataSource、SQLParsr、扩展组件。
    可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
    1、访问没有权限控制

    5.2.17.9.Turnserver
    TurnServer 是一个TURN协议的开源实现。
    该协议允许一个客户端以relay方式获得IP地址和端口。这对于symmetric 类型的NAT或者防火墙两边设备的通信非常有用。
    TurnServer项目旨在兼容地处理 TURN 和 STUN请求 (RFC 5766 , RFC 5389),同时也支持 RFC6156 即 TURN-IPV6 (relay between IPv4-IPv6, IPv6-IPv4 and IPv6-IPv6 addresses) 和 RFC6062 即TURN-TCP (relay data with TCP)

    5.2.17.10.Terracotta(session共享)
    5.2.17.11.phpMyAdmin
    http://www.phpmyadmin.net/security/

    5.2.17.12.Redis
    1、指定redis服务使用的网卡 (需要重启redis才能生效)
    在 redis.conf 文件中找到 “# bind 127.0.0.1” ,把前面的#号去掉,然后保存。注:修改后只有本机才能访问Redis。
    2、设置访问密码 (需要重启redis才能生效)
    在 redis.conf 中找到“requirepass”字段,在后面填上你需要的密码,Redis客户端也需要使用此密码来访问Redis服务。
    3、修改Redis服务运行账号 (需要重启redis才能生效)
    请以较低权限账号运行Redis服务,且禁用该账号的登录权限。另外可以限制攻击者往敏感写入文件,但是Redis数据还是能被黑客访问到,或者被黑客恶意删除。
    4、设置防火墙策略

    如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。
    参考:
    https://help.aliyun.com/knowledge_detail/37447.html?spm=5176.7837442.2.10.nCzE5s

    5.2.17.13.Fastjson开源jar
    https://github.com/alibaba/fastjson/wiki/security_update_20170315
    fastjson最新远程代码执行高危安全漏洞,当前涉及1.2.24之前版本
    我们用的1.1.41
    5.2.18.Web木马
    常见的简单形式--诱导优化打开具有网页木马的页面,一般是写入js引用大马的代码网页,用户打开诱导网页后在电脑上实际上已经默认运行了下载大马和执行大马的操作

    5.3.敏感数据保护
    5.3.1.加密算法
    算法列表能用,不能用
    弱算法:md2,md4,md5(2004年的国际密码学会议(Crypto’2004)王小云证明了MD5可以被碰撞,至此,MD5不再安全) ,sha1,blowfish
    推荐算法:sha256,aes128
    可逆的加密算法:des 3des aes128
    可逆加密算法又分为两大类:“对称式”和“非对称式”。
    对称式加密特点:加密和解密使用同一个密钥,通常称之为“Session Key ”。
    DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES
    非对称式加密特点:加密和解密所使用的不是同一个密钥,而是两个密钥:一个称为“公钥”,另一个称为“私钥”;它们两个必须配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则只能由持有人本人知道。
    常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
    不可逆加密算法:sha256 sha512 md5
    不可逆加密算法的特征是,加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文。这种加密后的数据是无法被解密的,只有重新输入明文。
    常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
    参考:
    http://www.360doc.com/content/13/0402/15/3862791_275529254.shtml
    http://book.51cto.com/art/201109/294599.htm
    MD5输出128bit
    SHA1输出160bit
    SHA256输出256bit
    另外还有SHA244,SHA512
    分别输出244bit,512bit

    问题分析
    数据库中的密码的机密算法推荐:
    1、使用不可逆加密算法
    2、使用加盐(避免预先计算彩虹表)

    建议的用户密码加密形式:
    http:若通道未加密,密码在客户端使用可逆加密算法AES-256并加盐(从服务端获取挑战码即盐值),传输到服务端再解密。
    https:服务端接受到明文密码后使用不可逆加密算法对密码进行哈希加密SHA256并加盐(使用安全随机盐值,长度建议跟密码最长一致),再存入密码密文和盐值到数据库。
    5.3.2.证书
    我们一般说的证书都是服务端证书,即浏览器使用的验证服务器身份的证书。
    我们的证书是自生成的证书。
    证书:证明身份的凭据,证书中心用自己的私钥对信息发送者的公钥和一些信息一起的加密,证书可以保证公钥的安全性和有效新,公钥可以验证私钥持有方的身份。常规信息有:颁发给的通用名、组织、组织单元、序列号和颁发者的通用名、组织、组织单元,有效时间开始于、过期时间,指纹SHA-256指纹和SHA1指纹。详细信息还有证书的签名算法、公钥算法、公钥等。

    签名哈希算法:证书编码完整性保证的哈希算法
    签名算法:私钥对证书编码的哈希加密的算法;证书签名使用的算法是发布者自己规定的
    上面两个是发布机构搞得,用来CA验证的

    指纹算法:计算出指纹的哈希的算法,就是哈希算法,一般就是sha1
    指纹:证书的哈希值并用私钥加密。

    鉴别用户的真伪可以通过鉴别用户的私钥的真伪来确认,就是看加密的信息服务端是否可以解密。
    公钥:连接建立时浏览器端加密时使用的秘钥。
    私钥:连接建立时服务器端加密时使用的秘钥。
    使用时:
    步骤一:
    1、浏览器输入网址访问yizhen.cn(应用层的)
    2、浏览器底层的TSL协议发送明文的Hello信息给服务器(网络层)
    3、服务器响应一个Hello信息给浏览器
    步骤二:
    服务器端发送它的证书给浏览器(图中的三,图中的二是之前就生成好的,存储在服务端的公钥、私钥、证书)
    步骤三:
    1、客户端验证服务端发来的证书
    2、验证证书的签名、完整性等信息
    3、去浏览器证书管理中心验证证书是否可信,是否为可信机构的证书或者子证书
    4、如果不可信,浏览器抛出警告,提示用户,需要用户确认选择是否继续
    步骤四:
    1、浏览器产生一个随机的值,作为秘钥,对称加密的秘钥,此处就称为秘钥。
    2、使用证书中的公钥对产生的秘钥进行加密生成密文串
    步骤五:
    1、发送密文串给服务器
    2、服务器接受到密文串,使用证书的私钥进行解密,获得对称加密的秘钥。
    3、服务器使用对称秘钥加密响应报文内容发送给浏览器。
    步骤六:
    服务器和浏览器可以通讯了。
    浏览器发送的数据都是公钥加密,使用对称秘钥解密收到的数据。
    服务器发送的数据都是对称秘钥加密的,收到的数据使用私钥解密。
    简单示意图如下:

    证书介绍和攻击
    Pem格式的证书详细信息查看:
    https://www.trustasia.com/tools/cert-decoder.htm
    SSL证书被攻击、假冒的风险分析
    http://wenku.baidu.com/link?url=LkghTfA11JWJBLFJrgBZfCrIBFJoqfcH1q4xBEbzt3xmGtkR7mdkV91mUnRobYQKYz2ekVTo7XNQdOMHIuOpWZv4TBDBVsBo52dYNeX1zRi
    一个合法有效的SSL证书误签发给了假冒者(--)
    破解SSL证书签发CA的私钥(关注签名算法)
    SSL证书签发CA的私钥泄露(如果是自签名证书需要关注)
    破解SSL证书的私钥(关注指纹算法)
    SSL证书的私钥泄露(服务器端私钥的存贮)
    认证机构主动为假冒网站签发合法有效的证书(--)
    利用可信的SSL服务器证书进行中间人攻击(--)
    在用户主机中植入伪造的根CA证书(或一个完整的CA证书链)(--)
    旁路证书的可信性的验证(--浏览器操作系统漏洞)

    ---如果证书的跟证书没有,第一次访问会去证书网站获取根证书或者中间证书

    5.3.2.1.证书加密算法的检查
    1、证书的指纹算法是否安全,不安全的算法造成证书加密传输的信息可以被解密
    2、证书的签名算法是否安全,不安全的签名算法可能造成证书被伪造
    5.3.2.2.证书对应的秘钥保存检查
    1、证书私钥在服务器端存储是否加密
    2、证书私钥在服务器端的存储文件权限是否只有所有者可以访问
    ----浏览器端客户的CA根证书是否安全可信,这个无法保证(不涉及)
    5.3.3.明文密码
    客户端
    1、浏览器Cookie中存储,浏览器Cookie中记录密文密码
    2、浏览器记录密码保存明文密码
    服务端明文密码检查
    1、 配置文件明文密码
    2、日志中记录明文密码
    3、程序中硬编码密码、密钥
    (针对秘钥场景的理解,主要针对当前的弱算法秘钥爆破的场景,原理是通过对多次的加密后的密文对比差异尝试推倒秘钥,有些场景可以认为是分问题的,如数据库密码以DES加密密文存储在配置文件中,密钥在代码中硬编码,这种场景的密钥硬编码就是没有问题的,他的密钥在配置文件和代码中其实没有多大区别。)
    5.3.4.源代码敏感信息检查
    使用search and replace搜索代码中的关键字、敏感字,查看是否有不当使用的地方
    1、passwd、password、pword等
    2、使用过的密码111111,123456,admin,amol等
    5.4.协议与接口攻防
    5.4.1.端口扫描
    1、远端扫描工具Nmap
    端口扫描命令
    TCP,Nmap -sS -T4 -p 1-65535 -oX filename.xml IP
    UDP,Nmap -sU -T4 -p 1-65535 -oX filename.xml IP
    2、系统检测
    检查服务器的操作系统类型及版本
    Nmap –O IP
    3、近端端口信息检查
    登录服务器,查看端口详细信息
    lsof –i:port
    ps –ef|grep pid
    4、整理系统开放端口的详细列表
    5.4.2.端口服务探测
    1、使用命令nmap -sV -Pn -p port IP,探测端口的详细服务及版本
    -Pn:在扫描之前,不发送ICMP echo请求测试目标是否活跃。
    -sV:探索开放的端口,确定服务器/版本信息


    5.4.3.REST WEB Service(接口协议)
    5.4.4.SOAP
    Soap注入

    5.4.5.SSH协议
    放到操作系统部分,这个组件和操作系统强相关
    5.4.6.IM服务-XMPP协议
    http://wiki.xmpp.org/web/Securing_XMPP
    IM服务检查:https://xmpp.net
    Tigase用户指南:http://docs.tigase.org/tigase-server/snapshot/Administration_Guide/html_chunk/index.html
    Tigase XMPP (Jabber) server ver 7.0.2


    IM服务器如何测试???
    http://my.oschina.net/greki/blog/210393
    Tigase-server
    Tigase-client
    http://localhost:8080/setup/进入tigase后台
    5.4.7.外部接口安全
    获取token:http://192.168.1.120:8080/amol-back/oauth/token?client_id=amol_client_mbox&client_secret=amol_secret_mbox&grant_type=password&username=mbox&password=123456

    1、链路加密
    2、参数校验 -
    3、访问数限制-
    参数:
    使用burp遍历用例payload
    1)特殊字符
    英文字符
    ~!@#$%^&*()____+{}|:”<>?-=;’,./`
    中文字符
    ~!@#¥%……&*()——+:“《》?,。、‘;、】【·
    中文汉字
    哈哈
    2)sql注入
    3)XSS
    4)纯数字、纯英文、组合、大小写、
    5)换行
    6)超长
    7)空
    5.4.8.SSL/TSL
    https等其他协议使用的加密协议SSL/TSL是否是安全的,使用开源工具sslsplit检测,工具下载地址https://github.com/droe/sslsplit/tree/7677fe06557509e95e548318909c1a328b6f6069。
    检查加协议版本及套件的办法Nmap -sV -p port --script ssl-enum-ciphers ip

    1、加密协议SSLv2v3需要全部禁用
    2、TSL的加密密套件部分已经不安全需要配置删除
    5.4.9.WiFi安全
    对象(Wep、Wpa)、原理、工具

    5.5.操作系统安全
    http://www.centoscn.com/CentosSecurity/

    工具:openvas、nessus

    测试方式:可在本地安装nessus home版完来测试


    影响较大的漏洞
    CVE-2016-5195:Linux系统本地提权漏洞,脏牛漏洞。(2016-10)【通吃型】。


    5.5.1.本地提权
    1)Windows下提权(我们是linux服务器,这个暂时不关注)
    2)Linux下提权----
    利用系统漏洞提权(主动提权)
    配置不当提权(被动提权)
    Sudo提权---/etc/sudoers文件配置
    Crontab提权--定时执行的脚本的权限配置
    Init.d提权--/etc/init.d此目录下的文件的写权限要严格禁止
    Environment提权--用户的profile、environment等的权限设置、还有su命令而不是su - 方式切换到root用户
    Setuid提权--通过给脚本或者bash添加s权限获取root权限

     

    5.5.2.各种木马
    键盘记录木马
    绑定端口木马
    回连木马
    端口复用木马
    远程控制木马

    5.5.3.密码破解
    本地破解--md5、linux shadow、ntlm/lm
    远程破解--ssh、httpauth、webform、pop/Smtp


    5.6.数据库安全
    Mysql
    http://www.w3resource.com/mysql/mysql-security.php
    Redis

    影响较大的漏洞:
    CVE-2016-6662 mysql本地提权漏洞。(2016-9)
    5.7.软件的发布与安装安全
    1、下载的软件有没有提供签名
    2、下载后安装是否有校验机制

    5.8.手机端的安全
    1、app的签名、反逆向
    (apk加固步骤:http://jingyan.baidu.com/article/b2c186c8cd1a71c46ef6ffcd.html,数字签名:http://blog.csdn.net/kickxxx/article/details/18252881)
    2、用户隐私
    本地保存用户密码、无论加密与否
    敏感信息隐私信息,如聊天记录、关系链、银行卡号等是否加密保存
    配置文件等是否保存到外部设备上
    保存到外部设备的信息加载前判断是否被篡改
    3、文件权限
    App所在目录不允许其他组成员读写
    4、网络通讯
    重要敏感数据传输加密
    5、运行时解释保护
    嵌有解释器的软件XSS、SQL注入等
    外部连接的是否有URL欺骗等漏洞
    6、组件权限保护
    禁止App内部组件被任意第三方程序调用
    调用外部组件先验证签名
    7、升级
    升级包完整性、合法性校验,避免被劫持
    8、3rd库
    跟进第三方库的更新
    http://blog.nsfocus.net/mobile-app-security-security-test/
    http://www.zhihu.com/question/24083362

    5.9.静态代码分析(纯白盒)
    1、危险函数、方法、关键字
    2、工具检测 findbugs
    3、逻辑漏洞
    5.10.抓包走读代码(灰盒测试)
    1、前台功能执行、中间工具抓包、后端代码走读的形式(过程:结合业务思路查看中间参数、走读后端代码跟踪参数处理,结合常见WEB安全漏洞形式匹配问题,抓包重放验证问题。)
    2、可发现的常见漏洞形式:越权、XSS、sql注入、参数合理性等

    6.安全测试的原则
    攻击面最小化
    默认安全
    最小权限原则
    深度防御原则(多角度、冗余的)
    安全的失败
    外部系统是不安全的
    职责分离(权值分离)
    不依赖隐晦的安全性
    简单
    正确的修复安全性问题
    客户端的输入是不可信的

    我的理解的判断依据:
    1、我们设计的程序的动作是确定的,而程序运行中产生了超出这个预期动作的部分,我们都可认为它是不安全的,需要改正的。
    2、问题产生在我们的设计得程序动作本身就是不符合现有的大环境下的安全标准。
    7.参考资料
    http://www.owasp.org.cn/ OWASP 测试指南
    http://www.wooyun.org/
    http://bbs.51cto.com/thread-1039046-1.html
    8.系统结构简图

    9.涉及的常用工具
    1、Burpsuit
    2、Watchweb
    3、Httprint
    4、Httpwatch
    5、Appscan
    6、Awvs
    7、Nmap
    8、Search and replace
    9、Sqlmap
    10、secureCAT
    11、--验证码识别工具
    12、--Whois查询
    13、DirBuster
    14、Fiddler
    15、Wireshark
    16、Firefox hackbar
    17、在线js执行(http://js.do/)


    9.1.文件名上传XSS
    1、此种问题的特点:首先,是上传点;第二,在上传后使用了上传的文件名(可能又改名,但是记录了文件名);
    2、系统问题发生点医生系统-终审报告-附件

    3、此处符合了1,查看显示文件名的界面的代码
    <a href="javascript:void(0);" οnclick="downloadFile('hospital/0100101/2016/06/03/DR/369/20160603140244.gif','aaa.gif')">aaa.gif</a>
    以上语句2处出现了文件名,即有两个地方是我们可能注入代码的地方
    先看后一个位置,超链接内的文字,普通文本
    考虑尝试最简单的<script>alert(1)</script>,尝试设置文件名为<script>alert(1)</script>a.gif

    发现字符/后的部分被作为了文件名,考虑后台代码有字符截断或者限制长度。并且确认我们的字符<>是接受的。
    下一步设置文件名为aaaaaaaaaaa.gif,发送多次尝试确认文件名可以的最长长度为24个字符,也就是后缀前面的代码只能有20个字符。
    再尝试</script>b.gif,确认/

    失败,什么原因?再尝试a/b.gif

    确认/是有特殊处理的,会被截断,那么其他编码试试?
    <script>alert(1)</script>
    <script>alert(2)<%2Fscript> <%2Fscript>可上传,可是整体超长
    <script>alert(3)<&#x2f;script> 可上传,可是整体超长
    <script>alert(4)<&#47;script> 可上传,可是整体超长
    <script>alert(5)<\u2fscript> \和/同样的效果
    <script>alert(6)<\u002fscript> \和/同样的效果
    好吧,换个思路;这个地方有多个文件上传,能不能用两个文件名组合?试试
    上传<script>a.gif
    再上传<alert(2)<%2Fscript>b.gif


    刷新界面看下

    还是不能执行,后面的脚本都被当成javascript脚本内容解析了,%2F不会被浏览器编码反解析回来;只能是屏蔽了下面的到</script>前的所有代码,其实这里可以说已经是有问题了,改变了原来界面的语义

    这个位置的文件名貌似行不通啊,我们再来看原始的代码,再看看第一处
    <a href="javascript:void(0);" οnclick="downloadFile('hospital/0100101/2016/06/03/DR/369/20160603140244.gif','aaa.gif')">aaa.gif</a>
    两种思路:A)闭合a,在后面形成代码;B)在标签内形成属性事件
    先看B思路,οnclick="downloadFile('hospital/0100101/2016/06/03/DR/369/20160603140244.gif','aaa.gif')",着力点在这里,要闭合’)”,再给一个事件属性如οnmοuseοver=””
    试试文件名’)”οnmοuseοver=”alert(1)”,尝试后发现”和’,都是问题啊会被处理,这个没办法规避啊
    再看看A思路同样避不开’”啊
    在回头看看,谁说执行脚本不需要<scritp>标签啊
    <a href="javascript:void(0);" οnclick="downloadFile('hospital/0100101/2016/06/03/DR/369/20160603140244.gif','aaa.gif')">aaa.gif</a>
    文件名不包含’”/ \,可以考虑的还是标签的属性,于是看二位置换成<a οnclick=alert(1)>a.gif如何

    再看界面

    OK,XSS成功,所有查看这份报告的,点击了这个附件的都会执行这个事件。
    当然也可以换成其他属性触发事件啦,有兴趣可以试试。
    请不要忽略这个断字符的仅能alert(1)的问题,这个问题也可能和其他漏洞结合发挥大的威力哦(比如值同域然后钓鱼)
    9.2.XXE漏洞详解
    什么是XXE ? 就是我们所说的所谓xml实体注入。entity翻译为"实体"。它的作用类似word中的"宏",也可以理解为DW中的模板,你可以预先定义一个entity,然后在一个文档中多次调用,或者在多个文档中调用同一个entity(XML定义了两种类型的entity。一种是我们这里说的普通entity,在XML文档中使用;另一种是参数entity,在DTD文件中使用。)。
    <!DOCTYPE filename
    [
    <!ENTITY entity-name "entity-content"
    ]>
    参考:
    http://blog.csdn.net/dongfengkuayue/article/details/50240157
    http://drops.wooyun.org/papers/1911
    9.2.1.XXE任意文件读取
    构造如下xml文件
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE file [
    <!ENTITY file SYSTEM "file:///C:/Windows/System32/drivers/etc/hosts">
    ]>
    <body>
    <username>&file;</username>
    <select id="chartForConsultation" resultMap="BaseResultMap">
    &file;
    </select>
    </body>
    1、使用最原始的javax.xml.parsers,标准的jdk api


    在解析结果总解析出了hosts文件的内容。
    2、使用dom4j后程序变得更简单

    3、使用JDOM

    9.2.2.XXE拒绝服务攻击
    1、sax解析类已经做了处理

     

    2、循环调用

    10.名词解释
    WAF
    Web应用防护系统(也称:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
    单点登陆
    单点登录(Single Sign On),简称SSO,是目前比较流行的企业业务整合解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有有相互信任的应用系统。
    PR7
    PR值全称为PageRank(网页级别),取自Google的创始人LarryPage。它是Google排名运算法则(排名公式)的一部分,是Google用于用来标识网页的等级/重要性的一种方法,是Google用来衡量一个网站的好坏的唯一标准。在揉合了诸如Title标识和Keywords标识等所有其它因素之后,Google通过PageRank来调整结果,使那些更具“等级/重要性”的网页在搜索结果中令网站排名获得提升,从而提高搜索结果的相关性和质量。级别从1到10级,10级为满分。PR值越高说明该网页越受欢迎(越重要)
    OAuth授权
    OAuth(开放授权)是一个开放标准。
    允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息。
    而这种授权无需将用户提供用户名和密码提供给该第三方网站。
    OAuth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定的时间内访问特定的资源.
    详细参考:http://justcoding.iteye.com/blog/1950270

    REST WebService
    REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。
    隐写术
    隐写术是关于信息隐藏,即不让计划的接收者之外的任何人知道信息的传递事件(而不只是信息的内容)的一门技巧与科学。隐写术英文作“Steganography”,来源于约翰尼斯·特里特米乌斯的一本看上去是有关黑魔法,实际上是讲密码学与隐写术的一本书Steganographia中。此书书名来源于希腊语,意为“隐秘书写”。
    CTF
    CTF(Capture the Flag)夺旗比赛。
    MIME编码
    MIME(Multipurpose Internet Mail Extensions)多部分(multi-part)、多媒体电子邮件和WWW超文本的一种编码标准,用于传送诸如图形、声音和传真等非文本数据。
    PKCS
    The Public-Key Cryptography Standards (PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。
    PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封。
    WASC
    Web Application Security Consortium(WASC),是一个由安全专家、行业顾问和诸多组织的代表组成的国际团体。WASC 组织的关键项目之一是“Web 安全威胁分类”,也就是将 Web 应用所受到的威胁、攻击进行说明并归纳成具有共同特征的分类。该项目的目的是针对 Web 应用的安全隐患,制定和推广行业标准术语。
    OWASP
    Open Web Application Security Project(OWASP),该组织致力于发现和解决不安全 Web 应用的根本原因。它们最重要的项目之一是“Web 应用的十大安全隐患”,总结了目前 Web 应用最常受到的十种攻击手段,并且按照攻击发生的概率进行了排序。这个项目的目的是统一业界最关键的 Web 应用安全隐患,并且加强企业对 Web 应用安全的意识。
    CORS
    CORS(Cross Origin Resourse-Sharing),跨域资源共享。
    Node.js
    Node.js是一个Javascript运行环境(runtime)。 实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更 好。
    [1]  Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用。
    SSRF
    SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
    渗透攻击、攻击载荷payload、shellcode
    CWE
    CWE(Common Weakness Enumeration),通用弱点枚举。软件弱点分类,更好地识别缺陷、修复阻止缺陷实现自动化。
    CDN
    CDN(ConTent Deliver network)内容分发网络。以负载均衡为核心。
    Maven
    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
    WebRTC
    WebRTC(Web Real-Time Commutication)Web实时通讯的缩写,就是使用Web浏览器完成实时的语音对话和视屏对话的技术。
    APT
    APT(Advance Persistent Thread)高级可持续性攻击。APT是黑客以窃取核心资料为目的,针对客户所发动的网络攻击和侵袭行为,是一种蓄谋已久的“恶意商业间谍威胁”。这种行为往往经过长期的经营与策划,并 具备高度的隐蔽性。APT的攻击手法,在于隐匿自己,针对特定对象,长期、有计划性和组织性地窃取数据,这种发生在数字空间的偷窃资料、搜集情报的行为, 就是一种“网络间谍”的行为。
    CVSS
    Common Vulnerability Scoring System,即“通用漏洞评分系统”,是一个“行业公开标准,其被设计用来评测漏洞的严重程度,并帮助确定所需反应的紧急度和重要度”。
    CVSS是安全内容自动化协议(SCAP)[2]的一部分,通常CVSS同CVE一同由美国国家漏洞库(NVD)发布,由美国国家基础建设咨询委员会(NIAC)委托制作,是一套公开的评测标准,经常被用来评比企业资讯科技系统的安全性,并受到eBay、(Symantec)、思科(Cisco)、甲古文(Oracle)等众多厂商支援。
    CVSS的目标是为所有软件安全漏洞提供一个严重程度的评级
     这就意味着CVSS旨在为一个已知的安全漏洞的严重程度提供一个数值(分数),而不管这个安全漏洞影响的软件类型是什么,不管它是操作系统、杀毒软件、数据库、邮件服务器、桌面还是商务应用程序。由于这个评分范围非常广,这个评分系统把能够完全攻破操作系统层的已知安全漏洞评为基准分数10.0分。换句话说,CVSS基准分数为10.0分的安全漏洞一般指能够完全攻破系统的安全漏洞,典型的结果是攻击者完全控制一个系统,包括操作系统层的管理或者“根”权限。例如,国家安全漏洞数据库中一个第三方产品中的这种安全漏洞被解释为,攻击者能够安装程序;观看、修改或者删除数据;或者创建拥有用户全部权利的新账户。
    它的主要目的是帮助人们建立衡量漏洞严重程度的标准,使得人们可以比较漏洞的严重程度,从而确定处理它们的优先级。CVSS得分基于一系列维度上的测量结果,这些测量维度被称为量度(Metrics)。漏洞的最终得分最大为10,最小为0。得分7~10的漏洞通常被认为比较严重,得分在4~6.9之间的是中级漏洞,0~3.9的则是低级漏洞
    CVSS系统包括三种类型的分数
      - 基准分数,暂时的和环境的。每一个分数都要衡量这个安全漏洞的不同属性。甲骨文在严重补丁更新文件中提供这个“基准分数”。这个基准分数有如下特点:
        - 这个基准分数具体指一个指定的安全漏洞。
      - 这个基准分数是不变的。
      - 它不是具体针对一个客户的技术IT环境的

    11.那些网络大牛们的语句
    以安全防御方的角度来看,防御的广度比深度更具优先级,这也是信息安全中木桶原理的体现。
    网络世界如此的年轻,还没有发展出自己独立的行为规范。
    我认为安全的核心理念只有两种:
    一是对无序的内外环境执行线性秩序化策略,构建强韧的防护体系,为系统提供“免疫”能力。
    二是对无序的内外环境执行非线性秩序化策略,构建反脆弱性防护体系,为系统提供“进化”能力。
    --------安在
    安全的三要素:机密性、完整性、可用性
    防御的一些思想:
    白名单思想、深度防御、数据与代码分离、不可预测性、缩小攻击面
    12.其他
    我的一些理解:
    1、安全中总谈到做安全需要首先确认信任域与信任边界,信任边界的概念主要是从这个网络物理结构体系的形式来体现的,比如一般在网闸或者防火墙之类的的设备处作为边界,内部形成一个个安全域。而我们的互联网系统是以云为依托,打破了原来的那种概念。物理层对我们来说是不透明的,以服务提供商的逻辑服务形式体现为8台服务器,2台数据库服务器,2台负载均衡服务器。并且这些服务器之间并没有配置相互的信任关系,这就形成了我们的安全实际形态为多处单点形式。
    仔细来看这12个单点,首先2台负载均衡,只提供负载均衡服务其他均不需要我们看护,其做了哪些措施除了分配连接外一概不知,所以可以从我们的安全形态圈摒弃掉。剩下的10台服务器,彼此独立,互相不应该信任,彼此交互均应该有有效认证行为。
    当然,其彼此的交互也被分为了两种,一是大网交互,二是内网交互。这里的大网内网我们就需要和阿里的网络相结合。内网交互就在阿里的相对安全的一个域,不防叫内域,相对的大网交互就在阿里的相对不安全的域和互联网上了,这是一个不可信的不安全的区域,不防叫外域。这种结构就应该和我们的业务相结合,比如我们的10台服务器要彼此访问,同时此访问服务不需要提供给互联网,我们就可以把业务单独配置到内域,如果业务是提供给互联网的,那么配置到外域或者内域和外域。

    展开全文
  • 安全测试 安全测试的定义: 安全测试相对应的渗透测试定义: 安全测试 VS 渗透测试 OWASP 开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和...

    安全测试

    安全测试的定义:

    安全测试相对应的渗透测试定义:

    安全测试    VS    渗透测试

    OWASP

    开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。其目的是协助个人、企业和机构来发现和使用可信赖软件。

    安全测试工具

    展开全文
  • 区块链安全测试

    万次阅读 2019-03-21 15:34:37
    区块链安全测试 前言 区块链如何进行安全测试? 如何挖掘区块链源码中的安全漏洞? 如何验证可能存在的安全的漏洞? 这些,都是想进入区块链安全领域会遇到的一些常见问题。区块链安全与web安全有很大的...
  • 安全测试入门

    千次阅读 2019-02-15 13:48:53
    众所周知软件测试分为四大类型,分别是:功能测试、自动化测试、安全测试和性能测试,而安全测试是在功能测试 和自动化测试之后,性能测试之前执行的,以免安全测试后修改的一些问题会影响性能。 安全测试...
  • 用您5分钟时间阅读完,希望能对您有帮助! 一.... ...测试手段可以进行安全性测试,目前主要安全测试方法有: ...1)静态的代码安全测试 ...静态的源代码安全测试是非常有用的方法,它可以在编码阶段找出所...
  • 安全测试之应用安全

    千次阅读 2020-09-10 16:41:19
    先列一下安全测试设计的技能列表(本内容来源于网络,经过自己整理和亲身体会,挑出了感觉对自己有帮助的技能供大家参考): A、前期 1、了解什么是hacker,这点看似没什么关系,但作为测试最基本的素质,就是要”...
  • 什么是安全测试

    千次阅读 热门讨论 2020-10-18 13:47:09
    安全测试的目的,怎么做安全测试,与传统测试的区别
  • 安全测试者偏爱的安全测试工具

    千次阅读 2018-01-25 00:14:05
    国外网站 Concise Courses 总结了安全测试者常用且好用的安全测试工具,本文摘录并分类整理列举一二,供安全从业者与爱好者参考。 无线类 1. Metasploit (免费) 2003年,美国网络安全研究员兼...
  • 文章目录系统测试概述功能测试性能测试负载测试压力测试性能测试、压力测试、负载测试的关系兼容性测试安全测试健壮性测试配置测试可用性测试文档测试 系统测试概述 系统测试的定义 将已经集成好的软件系统,作为...
  • 单元测试、集成测试、系统测试和验收测试、冒烟测试、回归测试、随机测试、探索性测试和安全测试 前言:项目前期、中期至发布后测试启动前后我们一般要经历的几种测试方法。
  • 安全测试方法

    千次阅读 2017-09-07 18:16:33
    安全测试方法
  • 系统测试详解内容功能测试健壮性测试常见功能测试分类恢复测试安全测试压力测试 详解 系统测试是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。这种测试可以发现系统...
  • 软件安全测试之应用安全测试

    万次阅读 2015-03-02 21:26:51
    (如果你想从头开始一步步学习安全测试设计,请从我的上一篇文章开始一步步学习下去点击打开链接>,但如果因为工作进度很急,可以先跳过下面的”废话“直接参考总结好的测试方案) 说起安全测试,曾几何时在我心中...
  • 安全测试 对软件产品进行测试以确保其符合产品安全需求和质量标准。 安全测试工具 渗透测试 模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试。 渗透测试 VS 安全测试 兼容性测试 软件本身的兼容性 不同...
  • - 安全测试人员不懂业务,业务测试人员不懂安全,安全测试设计出现遗漏是无法避免的 - 安全测试点繁多复杂,单点分析会导致风险暴露,不安全 目前的状态: - TR2阶段测试人员根据开发人员提供的story威胁分析...
  • 一、常规测试 VS 安全测试 常规测试安全测试 1.目标差异 常规测试以发现Bug为目标 安全测试以发现安全隐患为目标 2.假设条件差异 常规测试假设导致问题的数据是用户不小心造成的,接口一般只...
  • 想学习安全测试,但没有环境,又不能去网上乱搞,是不是很头大,今天博主就教你搭建一个自己的安全测试环境——DVWA DVWA 全名叫Damn Vulnerable Web Application,是一个基于PHP/MYSQL的web应用。专门就是为了帮助...
  • WEB安全测试.pdf

    千次下载 热门讨论 2012-12-13 09:58:32
    《Web安全测试》内容简介:在你对Web应用所执行的测试中,安全测试可能是最重要的,但它却常常是最容易被忽略的。《Web安全测试》中的秘诀演示了开发和测试人员在进行单元测试、回归测试或探索性测试的同时,如何去...
  • App安全测试

    千次阅读 2018-08-13 17:27:38
    目录   一、安装包测试   1.1、关于反编译 ...六、组件安全测试   七、服务端接口测试   一、安装包测试   1.1、关于反编译   目的是为了保护公司的知识产权和安全方面的考虑等...
  • 转http://www.cnblogs.com/imyalost/p/8068382.html一、安全测试要点梳理 二、安全测试工具整理 三、渗透测试要点梳理 PS:这三个思维导图来自《质量全面监控:从项目管理到容灾测试》这本书,感兴趣的童鞋可以...
  • 浅析安全测试

    千次阅读 2019-01-03 10:56:18
    web应用无处不在,存在于每个行业,现在的发展速度非常快速,且web应用在软件开发中所扮演的角色不断成长...今天主要给大家分享下有关安全测试的一些知识点以及注意事项,主要是以下几点: 1、安全测试的验证点: ...
  • 冒烟测试、回归测试、随机测试、探索性测试和安全测试 前言:项目中期至发布后测试启动前后我们一般要经历的几种测试方法 1>冒烟测试: 是指对一个新版本进行大规模的系统测试之前,先验证一下软件的基本功能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,024
精华内容 18,809
关键字:

安全测试