点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍,小窗口回复“资源”、“测试工具包”领取测试资源。
随着互联 的发展,安全问题也显得越来越重要。一个大型的互联 站点,你如果每天查看日志,会发现有很多尝试攻击性的脚本。如果没有,证明 站影响力还不够大。信息一体化的背后深藏着各类安全隐患,例如由于开发人员的不严谨导致为Web应用程序编写的代码质量堪忧,这很有可能被第三方恶意利用,从而未经授权的访问就能获取敏感数据和Web服务器的控制权。
目前很多所谓的安全测试工程师仅仅停留在使用一些自动化审计工具来检测系统,并对工具检测出来的Bug进行梳理,然后把它提给开发人员。不懂原理,不懂代码,当开发人员也对于安全一窍不通的时候,没办法从自动审计工具上整理下来的Bug。今天就安全测试做一个简单介绍,为将来想从事安全测试或者对 络安全,渗透测试感兴趣的各位做好基础装备技能的普及。
一
安全测试基础知识
XSS简介
(1) 什么是XSS?
XSS(Cross Site Scripting)跨站脚本攻击,Web攻击的一种,通过对 页注入可执行代码(html代码或JS代码)成功被浏览器执行。
(2) 实施XSS具备的条件?
(3) XSS攻击原理?
用户传入的数据被当做是程序,所以会执行程序。
(4) XSS攻击方式?
(5) XSS攻击注入点?
(6) XSS攻击的危害性?
(7) 如何防御XSS攻击?
CSRF简介
(1) 什么是CSRF?
CSRF(Cross Site Request Forgy)跨站请求伪造,用户访问的 站对恶意 站发出了一些请求,且这些请求是用户不知情的情况下完成的;攻击者盗用受信任用户的身份,以他的名义向第三方 站发送恶意请求,对于服务器来说这个请求是合法的。
(2) CSRF是如何攻击的?
(3) CSRF攻击的危害性?
SQL注入
(1) 什么是SQL注入?
SQL注入是比较常见的 络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账 登录,甚至篡改数据库。
(2) SQL注入原理?
(3) 如何防御SQL注入?
XPath注入
(1) 什么是XPath注入?
XPath注入攻击本质上和SQL注入攻击是类似的,都是输入一些恶意的查询等代码字符串,从而对 站进行攻击。
XPath注入攻击,是利用XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。
(2) XPath注入原理?
XPath注入攻击主要是通过构建特殊的输入,这些输入往往是XPath语法中的一些组合,这些输入将作为参数传入Web 应用程序,通过执行XPath查询而执行入侵者想要的操作。
(3) 如何防御XPath注入?
二
安全测试开展
安全测试类型
安全测试分为以下几种:
类型 |
描述 |
失效的身份验证机制 |
只对首次传递的Cookie加以验证,程序没有持续对Cookie中内含信息验证比对,攻击者可以修改Cookie中的重要信息以提升权限进行 站数据存取或是冒用他人账 取得个人私密资料(测试对象:可以进行传参的URL,提交请求页面,登录后的Cookie)。 |
会话管理劫持 |
检测Web应用程序会话机制是否存在安全隐患,能否被非法利用(会话劫持,伪装成合法用户)而影响Web应用程序的安全。 |
SQL注入 |
注入攻击漏洞,这些攻击发生在当不可信的SQL语句作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。 |
XPath注入 |
XPath注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知识的情况下,通过XPath查询得到一个XML文档的完整内容。 |
XSS跨站脚本攻击 |
恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。 |
CSRF跨站请求伪造 |
攻击者通过调用第三方 站的恶意脚本来伪造请求,在用户不知情的情况下,攻击者强行递交构造的具有“操作行为”的数据包。(测试对象: 页中可进行输入的表单)。 |
不安全的直接对象引用 |
在具有导出/下载功能的页面参数中修改内容,WEB服务器便会导出/下载程序源代码或者指定文件(测试对象:URL中有用户参数的地址,可以进行下载操作的地址)或者当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙, 就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据。 |
安全配置错误 |
Config中的链接字符串以及用户信息,邮件,数据存储信息等都需要加以保护,如果没有进行保护,那么就是安全配置出现了问题。 |
不安全的加密存储 |
未对需要保护的数据进行加密或者加密算法太弱都是不安全的加密存储。 |
没有限制URL访问 |
系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击者能够很容易的就伪造请求直接访问未被授权的页面(测试对象:需要身份验证的页面)。 |
传输层保护不足 |
在身份验证过程中没有使用SSL/TLS,因此暴露传输数据和会话ID,被攻击者截听。它们有时还会使用过期或者配置不正确的证书。(测试对象:登录模块)。 |
未验证的重定向(redirectUrl)和转发 |
攻击者可以引导用户访问他们所要用户访问的站点。而最终造成的后果,重定向会使得用户访问钓鱼 站或是恶意 站。 |
敏感信息泄露 |
许多Web应用程序没有正确保护敏感数据,如信用卡、税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。 |
功能级访问控制缺失 |
大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。 |
使用含有已知漏洞的组件 |
组件,比如:库文件、框架和其他软件模块,几乎总是以全部的权限运行。如果使用含有已知漏洞的组件,这种攻击可以造成更为严重的数据丢失或服务器接管。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。危害比较严重。 |
缓冲区溢出 |
当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。 |
LDAP注入 |
利用LDAP注入技术的关键在于控制用于目录搜索服务的过滤器。使用这些技术,攻击者可能直接访问LDAP目录树下的数据库,及重要的公司信息。情况还可能比这更严重,因为许多应用的安全性依赖于基于LDAP目录的单点登录环境。 |
篡改输入 |
利用一些命令或者工具等篡改一些字段的值,从而达到恶意的效果。例如,篡改商品的单价和数量等。 |
安全测试攻防手段
安全测试通用测试用例
以下总结一些通用的安全测试用例,但安全测试远不如此,欢迎补充。
(1) 漏洞扫描
对系统的URL进行漏洞扫描,扫描系统开放的端口、服务和存在的漏洞。
(2) 明文传输
定义:对系统传输过程中的敏感内容是明文&密文进行检查。
系统传输敏感信息场景:登录、注册、支付、修改密码。
系统敏感信息:登录密码、支付金额、注册的手机 码、身份证、邮箱等信息。
(3) 越权访问
定义:测试能否通过URL地址获取管理员及其他用户信息
1.出现admin、user、system、pwd等敏感目录的URL地址。
2.垂直越权场景:当系统存在多个不同权限的管理员时,低权限的管理员不能访问或操作到高权限的管理的资源。
3.水平越权场景:当系统存在多个需要登录用户,A用户不能访问B用户的资源。
(4) 反射性跨站脚本
定义:测试系统是否对输入进行过滤或转移,规避用户通过跨站脚本攻击造成风险。
跨站脚本攻击场景:搜索框、输入框、留言、上传文件。
(5) 文件上传
定义:测试能否上传木马、病毒、色情图片等恶意图片。
(6) 越权文件下载
定义:测试URL中是否包含文件名或文件目录,尝试提交参数值查看是否可下载或读取其他目录的文件内容。
文件下载场景:文件下载、文件读取功能。
测试url:包含文件名或文件目录的url。
(7) 短信/邮箱验证
定义:测试短信、邮箱验证方式是否进行安全设置。
触发短信、邮箱验证码验证相关的场景:找回或重置密码、注册、邀请注册、引流活动分享。
(8) 鉴权缺失
定义:测试需要登录、鉴权才可操作的系统中可修改资源的相关接口,鉴权是否可靠。
测试对象:可以修改资源的接口。
(9) 密码健壮性
定义:测试密码、验证码验证的方式是否可靠,是否可以被暴力猜测直至命中。
(10) 数据安全
定义:检查系统中敏感数据的存储是否安全。
敏感数据:密码、身份证、家庭住址、银行卡 、手机 、真实姓名。
三
安全测试常见问题
安全测试的好处?
如果黑客利用了系统安全漏洞,对系统进行攻击导致而成,从而导致损失的代价也是不言而喻的。安全测试的好处有如下几个方面:
安全测试能发现哪些问题?
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!