admin 管理员组文章数量: 887017
安全测试
- 1.安全测试在做什么?
- 2.安全测试者是怎样定位自己的?
- 3.安全的本质是什么?
- 4.概念定义
- 5.我们应该如何去着手
- 5.1.测试的特性
- 5.1.1.操作系统安全
- 5.1.2.数据库
- 5.1.3.web安全
- 5.1.4.软件的发布与安装安全
- 5.1.5.协议与接口攻防
- 5.1.6.敏感数据保护
- 5.1.7.手机端安全
- 5.1.8.静态代码分析(纯白盒)
- 5.2.WEB安全测试
- 5.2.1.身份验证
- 5.2.2.验证码 (普通验证码、知识验证码、无需思考的滑动验证码)
- 5.2.3.会话管理
- 5.2.4.权限管理
- 5.2.5.敏感信息传输及存储
- 5.2.6.安全审计
- 5.2.7.信息泄露
- 5.2.8.输入校验
- 5.2.8.1.XSS(跨站点脚本攻击)
- 5.2.8.2.SQL注入
- 5.2.8.3.XML注入测试
- 5.2.8.4.代码执行
- 5.2.8.5.CRLF漏洞
- 5.2.9.上传下载
- 5.2.10.CSRF
- 5.2.10.1.URL重定向(跳转)漏洞:
- 5.2.11.CORS漏洞
- 5.2.12.SSRF漏洞(服务端请求伪造)
- 5.2.13.Google黑客
- 5.2.14.其他
- 5.2.15.重放攻击
- 5.2.17.其他组件安全
- 5.2.17.1.Nginx
- 5.2.17.2.Jquery
- 5.2.17.3.Java漏洞
- 5.2.17.4.百度Ueditor(1.4.3)
- 5.2.17.5.Node.js(超声视频使用)
- 5.2.17.6.Spring
- 5.2.17.7.Mybitas
- 5.2.17.8.Druid
- 5.2.17.9.Turnserver
- 5.2.17.10.Terracotta(session共享)
- 5.2.17.11.phpMyAdmin
- 5.2.17.12.Redis
- 5.2.17.13.Fastjson开源jar
- 5.2.18.Web木马
- 5.3.敏感数据保护
- 5.3.1.加密算法
- 5.3.2.证书
- 5.3.2.1.证书加密算法的检查
- 5.3.3.明文密码
- 5.3.4.源代码敏感信息检查
- 5.4.协议与接口攻防
- 5.4.1.端口扫描
- 5.4.2.端口服务探测
- 5.4.3.REST WEB Service(接口协议)
- 5.4.4.SOAP
- 5.4.5.SSH协议
- 5.4.6.IM服务-XMPP协议
- 5.4.7.外部接口安全
- 5.4.8.SSL/TSL
- 5.4.9.WiFi安全
- 5.5.操作系统安全
- 5.5.1.本地提权
- 5.5.2.各种木马
- 5.5.3.密码破解
- 5.6.数据库安全
- 5.8.手机端的安全
- 5.9.静态代码分析(纯白盒)
- 6.安全测试的原则
- 7.参考资料
- 8.系统结构简图
- 9.涉及的常用工具
- 9.1.文件名上传XSS
- 9.2.XXE漏洞详解
- 9.2.1.XXE任意文件读取
- 9.2.2.XXE拒绝服务攻击
- 10.名词解释
- 11.那些网络大牛们的语句
- 12.其他
- <font color=red>👇👇👇少侠,留个赞再走哦 !
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/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/html/sec/35995.html)
口令认证必须在服务端进行。
必须要有验证码机制。
登录锁定,登录需要有锁定机制即就是多次登录失败后锁定账号或者ip,在一段时间后自动解锁。
手机验证码轰炸
手机验证码超时机制
账户枚举测试
弱密码概念:https://help.aliyun/knowledge_detail/37509.html?spm=5176.7837442.2.5.ZotsLv
5.2.2.验证码 (普通验证码、知识验证码、无需思考的滑动验证码)
验证码字符生成算法的安全随机数
验证码字符不能被验证码识别工具识别
验证码必须是一次性的
验证码超时(验证码有效期的意义:1、增加图片处理识别的难度;2、验证码没有有效期的话导致服务器验证码堆积)
在忘记密码处做安全问答测试
建议的验证码形式:
当前的最流行的滑动块验证码,有点用户无需动脑,不会打断用户的思考。
(验证码的前世今生:http://www.freebuf/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/information-leakage-thinking-library-collision/
5.2.8.输入校验
前台后台都必须校验(“移除已知的恶意数据”不如移除“良好数据之外的所有数据”)
5.2.8.1.XSS(跨站点脚本攻击)
XSS-1反射型跨站点脚本编制
XSS-2存储型跨站点脚本编制(http://xxxxx0000sssss.lofter/post/14b1dc_50023e)
XSS-3 DOM型跨站点脚本编制
dom xss并不复杂,他也属于反射型xss的一种,domxss取决于输出位置,并不取决于输出环境,因此domxss既有可能是反射型的,也有可能是存储型的),简单去理解就是因为他输出点在DOM,所以在道哥的《白帽子讲Web安全里》也有详细介绍。dom - xss是通过url传入参数去控制触发的。
HPP(HTTP参数污染[同名参数]http://blog.csdn/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/knowledge_detail/37444.html?spm=5176.7837442.2.11.F8ceHg
http://blog.csdn/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,注意配置文件中的KaTeX parse error: Expected 'EOF', got '#' at position 2: 和#̲的使用,使用可能导致sql注入
拼接后的语句再放入预编译对象是徒劳的,因为在预编译之前拼接的SQL语句执行逻辑已经被破坏,原 SQL语句的本意已经被改变了。
概念:
https://help.aliyun/knowledge_detail/37450.html?spm=5176.7837442.2.10.ZotsLv
Sql注入常用语句:
http://www.111cn/database/mysql/58518.htm
http://wenku.baidu/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”标识。
Subject: hello
cc: spamvictim@example
*/
5.2.8.4.代码执行
代码执行是指应用程序对传入命令的参数过滤不严导致恶意用户能控制最终执行的命令,进而入侵系统,导致严重破坏的高危漏洞。
https://help.aliyun/knowledge_detail/37446.html?spm=5176.7837442.2.2.nCzE5s
5.2.8.5.CRLF漏洞
CRLF,carriage-return-line-feed,回车换行漏洞。
案例参考:https://www.leavesongs/PENETRATION/Sina-CRLF-Injection.html(对header进行注入)
5.2.9.上传下载
跨目录文件下载
任意文件下载
任意文件上传(后缀)
任意目录文件上传(目录)
超大文件上传(大小)
上传文件废弃后处理(堆积)
上传文件名xss(重命名)
上传文件名截断(0x00或者0x58,burp也可以修改二进制,url中%00)
上传文件权限限制
压缩炸弹
Include包含上传(shtml)
上传zip文件名中包含…/
本地文件包含的概念:
https://help.aliyun/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/papers/154)
1、问题点
在页面跳转的地方,URL中包含另外的网址,例如:
第一类 简单URL过滤
www.xxx?a=http://www.yyy
第二类 底层操作类库支持其他协议导致读取本地或探测网络信息
http://h2w.iask/h5.php?u=file:///etc/passwd
由于底层适用类curl库,而没有正确过滤URL导致,可以读取内网诸多信息.还有其他类似的形式:
如file://, ftp://, telnet://等
第三类 不支持其他协议但是没有设置网络边界(SSRF漏洞的姿势啊)
http://wap.sogou/tc?url=http%3A%2F%2Fno.sohu%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/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/art/201312/424038.htm
5.2.13.Google黑客
1、搜索站点看是否能发现敏感的信息或不该公布的信息
搜索命令,例如:
site:yizhen
site:yizhen yizhen:password
site:yizhen inurl:session
site:yizhen inanchor:修改密码
cache:www.yizhen
参考:http://wwwblogs/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/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/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/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/2013/02/04/jquery-1-9-1-released/
Jquery两个版本间更新日志,其中有两处vulnerable字样
https://github/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/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/knowledge_detail/37447.html?spm=5176.7837442.2.10.nCzE5s
5.2.17.13.Fastjson开源jar
https://github/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/content/13/0402/15/3862791_275529254.shtml
http://book.51cto/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(应用层的)
2、浏览器底层的TSL协议发送明文的Hello信息给服务器(网络层)
3、服务器响应一个Hello信息给浏览器
步骤二:
服务器端发送它的证书给浏览器(图中的三,图中的二是之前就生成好的,存储在服务端的公钥、私钥、证书)
步骤三:
1、客户端验证服务端发来的证书
2、验证证书的签名、完整性等信息
3、去浏览器证书管理中心验证证书是否可信,是否为可信机构的证书或者子证书
4、如果不可信,浏览器抛出警告,提示用户,需要用户确认选择是否继续
步骤四:
1、浏览器产生一个随机的值,作为秘钥,对称加密的秘钥,此处就称为秘钥。
2、使用证书中的公钥对产生的秘钥进行加密生成密文串
步骤五:
1、发送密文串给服务器
2、服务器接受到密文串,使用证书的私钥进行解密,获得对称加密的秘钥。
3、服务器使用对称秘钥加密响应报文内容发送给浏览器。
步骤六:
服务器和浏览器可以通讯了。
浏览器发送的数据都是公钥加密,使用对称秘钥解密收到的数据。
服务器发送的数据都是对称秘钥加密的,收到的数据使用私钥解密。
简单示意图如下:
证书介绍和攻击
Pem格式的证书详细信息查看:
https://www.trustasia/tools/cert-decoder.htm
SSL证书被攻击、假冒的风险分析
http://wenku.baidu/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/web/Securing_XMPP
IM服务检查:https://xmpp
Tigase用户指南:http://docs.tigase/tigase-server/snapshot/Administration_Guide/html_chunk/index.html
Tigase XMPP (Jabber) server ver 7.0.2
IM服务器如何测试???
http://my.oschina/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/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/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/mysql/mysql-security.php
Redis
影响较大的漏洞:
CVE-2016-6662 mysql本地提权漏洞。(2016-9)
5.7.软件的发布与安装安全
1、下载的软件有没有提供签名
2、下载后安装是否有校验机制
5.8.手机端的安全
1、app的签名、反逆向
(apk加固步骤:http://jingyan.baidu/article/b2c186c8cd1a71c46ef6ffcd.html,数字签名:http://blog.csdn/kickxxx/article/details/18252881)
2、用户隐私
本地保存用户密码、无论加密与否
敏感信息隐私信息,如聊天记录、关系链、银行卡号等是否加密保存
配置文件等是否保存到外部设备上
保存到外部设备的信息加载前判断是否被篡改
3、文件权限
App所在目录不允许其他组成员读写
4、网络通讯
重要敏感数据传输加密
5、运行时解释保护
嵌有解释器的软件XSS、SQL注入等
外部连接的是否有URL欺骗等漏洞
6、组件权限保护
禁止App内部组件被任意第三方程序调用
调用外部组件先验证签名
7、升级
升级包完整性、合法性校验,避免被劫持
8、3rd库
跟进第三方库的更新
http://blog.nsfocus/mobile-app-security-security-test/
http://www.zhihu/question/24083362
5.9.静态代码分析(纯白盒)
1、危险函数、方法、关键字
2、工具检测 findbugs
3、逻辑漏洞
5.10.抓包走读代码(灰盒测试)
1、前台功能执行、中间工具抓包、后端代码走读的形式(过程:结合业务思路查看中间参数、走读后端代码跟踪参数处理,结合常见WEB安全漏洞形式匹配问题,抓包重放验证问题。)
2、可发现的常见漏洞形式:越权、XSS、sql注入、参数合理性等
6.安全测试的原则
攻击面最小化
默认安全
最小权限原则
深度防御原则(多角度、冗余的)
安全的失败
外部系统是不安全的
职责分离(权值分离)
不依赖隐晦的安全性
简单
正确的修复安全性问题
客户端的输入是不可信的
我的理解的判断依据:
1、我们设计的程序的动作是确定的,而程序运行中产生了超出这个预期动作的部分,我们都可认为它是不安全的,需要改正的。
2、问题产生在我们的设计得程序动作本身就是不符合现有的大环境下的安全标准。
7.参考资料
http://www.owasp/ OWASP 测试指南
http://www.wooyun/
http://bbs.51cto/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,查看显示文件名的界面的代码
aaa.gif
以上语句2处出现了文件名,即有两个地方是我们可能注入代码的地方
先看后一个位置,超链接内的文字,普通文本
考虑尝试最简单的a.gif
发现字符/后的部分被作为了文件名,考虑后台代码有字符截断或者限制长度。并且确认我们的字符<>是接受的。
下一步设置文件名为aaaaaaaaaaa.gif,发送多次尝试确认文件名可以的最长长度为24个字符,也就是后缀前面的代码只能有20个字符。
再尝试b.gif,确认/
失败,什么原因?再尝试a/b.gif
确认/是有特殊处理的,会被截断,那么其他编码试试?
前的所有代码,其实这里可以说已经是有问题了,改变了原来界面的语义这个位置的文件名貌似行不通啊,我们再来看原始的代码,再看看第一处
aaa.gif
两种思路: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思路同样避不开’”啊
在回头看看,谁说执行脚本不需要标签啊
aaa.gif
文件名不包含’”/ \,可以考虑的还是标签的属性,于是看二位置换成a.gif如何
再看界面
OK,XSS成功,所有查看这份报告的,点击了这个附件的都会执行这个事件。
当然也可以换成其他属性触发事件啦,有兴趣可以试试。
请不要忽略这个断字符的仅能alert(1)的问题,这个问题也可能和其他漏洞结合发挥大的威力哦(比如值同域然后钓鱼)
9.2.XXE漏洞详解
什么是XXE ? 就是我们所说的所谓xml实体注入。entity翻译为"实体"。它的作用类似word中的"宏",也可以理解为DW中的模板,你可以预先定义一个entity,然后在一个文档中多次调用,或者在多个文档中调用同一个entity(XML定义了两种类型的entity。一种是我们这里说的普通entity,在XML文档中使用;另一种是参数entity,在DTD文件中使用。)。
参考:
http://blog.csdn/dongfengkuayue/article/details/50240157
http://drops.wooyun/papers/1911
9.2.1.XXE任意文件读取
构造如下xml文件
<?xml version="1.0" encoding="UTF-8"?>]>
&file; &file; 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/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。得分710的漏洞通常被认为比较严重,得分在46.9之间的是中级漏洞,0~3.9的则是低级漏洞
CVSS系统包括三种类型的分数
- 基准分数,暂时的和环境的。每一个分数都要衡量这个安全漏洞的不同属性。甲骨文在严重补丁更新文件中提供这个“基准分数”。这个基准分数有如下特点:
- 这个基准分数具体指一个指定的安全漏洞。
- 这个基准分数是不变的。
- 它不是具体针对一个客户的技术IT环境的
11.那些网络大牛们的语句
以安全防御方的角度来看,防御的广度比深度更具优先级,这也是信息安全中木桶原理的体现。
网络世界如此的年轻,还没有发展出自己独立的行为规范。
我认为安全的核心理念只有两种:
一是对无序的内外环境执行线性秩序化策略,构建强韧的防护体系,为系统提供“免疫”能力。
二是对无序的内外环境执行非线性秩序化策略,构建反脆弱性防护体系,为系统提供“进化”能力。
--------安在
安全的三要素:机密性、完整性、可用性
防御的一些思想:
白名单思想、深度防御、数据与代码分离、不可预测性、缩小攻击面
12.其他
我的一些理解:
1、安全中总谈到做安全需要首先确认信任域与信任边界,信任边界的概念主要是从这个网络物理结构体系的形式来体现的,比如一般在网闸或者防火墙之类的的设备处作为边界,内部形成一个个安全域。而我们的互联网系统是以云为依托,打破了原来的那种概念。物理层对我们来说是不透明的,以服务提供商的逻辑服务形式体现为8台服务器,2台数据库服务器,2台负载均衡服务器。并且这些服务器之间并没有配置相互的信任关系,这就形成了我们的安全实际形态为多处单点形式。
仔细来看这12个单点,首先2台负载均衡,只提供负载均衡服务其他均不需要我们看护,其做了哪些措施除了分配连接外一概不知,所以可以从我们的安全形态圈摒弃掉。剩下的10台服务器,彼此独立,互相不应该信任,彼此交互均应该有有效认证行为。
当然,其彼此的交互也被分为了两种,一是大网交互,二是内网交互。这里的大网内网我们就需要和阿里的网络相结合。内网交互就在阿里的相对安全的一个域,不防叫内域,相对的大网交互就在阿里的相对不安全的域和互联网上了,这是一个不可信的不安全的区域,不防叫外域。这种结构就应该和我们的业务相结合,比如我们的10台服务器要彼此访问,同时此访问服务不需要提供给互联网,我们就可以把业务单独配置到内域,如果业务是提供给互联网的,那么配置到外域或者内域和外域。
👇👇👇少侠,留个赞再走哦 !
版权声明:本文标题:软件测试之安全怎么做? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729157483h1324976.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论