PenetrationTest
一、渗透测试是什么
渗透测试(PenetrationTest)是对安全情况最客观、最直接的评估方式,主要是模拟黑客的攻击方法对系统和网络进行非破坏性质的攻击性测试,在保证整个渗透测试过程都在可以控制和调整的范围之内尽可能的获取目标信息系统的管理权限以及敏感信息,并将入侵的过程和细节产生报告给用户,由此证实用户系统所存在的安全威胁和风险,并能及时提醒安全管理员完善安全策略。
渗透测试是工具扫描和人工评估的重要补充。工具扫描具有很好的效率和速度,但是存在一定的误报率,不能发现高层次、复杂的安全问题;渗透测试需要投入的人力资源较大、对测试者的专业技能要求很高(渗透测试报告的价值直接依赖于测试者的专业技能),但是非常准确,可以发现逻辑性更强、更深层次的弱点。
二、渗透测试的流程

三、渗透测试内容
《代码层安全》
应用程序及代码在开发过程中,由于开发者缺乏安全意识,疏忽大意极为容易导致应用系统存在可利用的安全漏洞。一般包括SQL注入漏洞、跨站脚本漏洞、上传漏洞、CSRF跨站请求伪造漏洞等。
1) SQL注入漏洞
SQL注入漏洞的产生原因是网站程序在编写时,没有对用户输入数据的合法性进行判断,导致应用程序存在安全隐患。SQL注入漏洞攻击就是利用现有应用程序没有对用户输入数据的合法性进行判断,将恶意的SQL命令注入到后台数据库引擎执行的黑客攻击手段。
2) 跨站脚本漏洞
跨站脚本攻击简称为XSS又叫CSS (Cross Site Script Execution),是指服务器端的CGI程序没有对用户提交的变量中的HTML代码进行有效的过滤或转换,允许攻击者往WEB页面里插入对终端用户造成影响或损失的HTML代码。
3) 会话管理漏洞
会话管理主要是针对需授权的登录过程的一种管理方式,以用户密码验证为常见方式,通过对敏感用户登录区域的验证,可有效校验系统授权的安全性,测试包含以下部分:
4) 用户口令易猜解
通过对表单认证、HTTP认证等方式的简单口令尝试,以验证存在用户身份校验的登录入口是否存在易猜解的用户名和密码
5) 是否存在验证码防护
验证码是有效防止暴力破解的一种安全机制,通过对各登录入口的检查,以确认是否存在该保护机制
6) 是否存在易暴露的管理登录地址
某些管理地址虽无外部链接可介入,但由于采用了容易猜解的地址(如:admin)而导致登录入口暴露,从而给外部恶意用户提供了可乘之机
7) 是否提供了不恰当的验证错误信息
某些验证程序返回错误信息过于友好,如:当用户名与密码均错误的时候,验证程序返回“用户名不存在”等类似的信息,通过对这一信息的判断,并结合HTTP Fuzzing工具便可轻易枚举系统中存在的用户名,从而为破解提供了机会。
会话管理主要是针对验证通过之后,服务端程序对已建立的、且经过验证的会话的处理方式是否安全,一般会从以下几个角度检测会话管理的安全性:
8) Session是否随机
Session作为验证用户身份信息的一个重要字符串,其随机性是避免外部恶意用户构造Session的一个重要安全保护机制,通过抓包分析Session中随机字符串的长度及其形成规律,可对Session随机性进行验证,以此来确认其安全性。
9) 校验前后Session是否变更
通过身份校验的用户所持有的Session应与其在经过身份验证之前所持有的Session不同
10) 会话储存是否安全
会话存储是存储于客户端本地(以cookie的形式存储)还是存储于服务端(以Session的形式存储),同时检测其存储内容是否经过必要的加密,以防止敏感信息泄露
11) 不安全的对象引用
不安全的对象引用是指程序在调用对象的时候未对该对象的有效性、安全性进行必要的校验,如:某些下载程序会以文件名作为下载程序的参数传递,而在传递后程序未对该参数的有效性和安全性进行检验,而直接按传递的文件名来下载文件,这就可能造成恶意用户通过构造敏感文件名而达成下载服务端敏感文件的目的。
12) 跨站请求伪造
跨站请求伪造(Cross-site request forgery,缩写为CSRF),也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
《应用层安全》
由于应用系统和数据库系统开发配置的具体过程中,可能由于管理员缺乏安全意识或疏忽大意导致应用层存在安全隐患。
1) 弱口令
弱口令通常有以下几种情况:用户名和密码是系统默认、口令长度过短、口令选择与本身特征相关等。系统、应用程序、数据库存在弱口令可以导致入侵者直接得到系统权限、修改盗取数据库中敏感数据、任意篡改页面等。
2) 敏感信息泄露
敏感信息泄露漏洞指泄露有关WEB应用系统的信息,例如,用户名、物理路径、目录列表和软件版本。尽管泄露的这些信息可能不重要,然而当这些信息联系到其他漏洞或错误设置时,可能产生严重的后果。例如:某源代码泄露了SQL服务器系统管理员账号和密码,且SQL服务器端口能被攻击者访问,则密码可被攻击者用来登录SQL服务器,从而访问数据或运行系统命令。
3) 安全配置错误
某些HTTP应用程序,或第三方插件,在使用过程中由于管理人员或开发人员的疏忽,可能未对这些程序或插件进行必要的安全配置和修改,这就很容易导致敏感信息的泄露。而对于某些第三方插件来说,如果存在安全隐患,更有可能对服务器获得部分控制权限。
4) 链接地址重定向
重定向就是通过各种的方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。
而某些程序在重定向的跳转过程中,对重定向的地址未进行必要的有效性和安全性检查,且该重定向地址又很容易被恶意用户控制和修改,这就可能导致在重定向发生时,用户会被定向至恶意用户事先构造好的页面或其他URL,而导致用户信息受损。
《移动安全》
|
测试类型 |
测试项 |
测试项描述 |
|
安装包 |
反编译 |
测试app安装文件是否能被反编译 |
|
重打包 |
测试app安装文件是否能被重打包并签名发布 |
|
|
本地存储 |
内存修改 |
测试app内存是否可被修改,比如修改内存中的金额 |
|
明文存储 |
测试app是否在本地明文存储敏感文件,如:帐号、协议结构等 |
|
|
数据传输 |
封包篡改 |
测试app数据包被拦截下来后修改内容重新发送,服务端是否能识别 |
|
封包重放 |
测试app数据包被拦截下来后重复发送,服务端是否能识别 |
|
|
业务相关 |
验证码绕过 |
测试app的验证码是否能被绕过 |
|
暴力破解 |
测试app的登录口是否能进行暴力破解、撞库攻击。 |
|
|
订单篡改 |
测试app的订单是否能被篡改,比如:订单被新增、修改、删除等。 |
|
|
订单重放 |
测试app的订单是否能被重放,比如:转帐订单数据包重新提交,是否能再一次转帐。 |
|
|
逻辑安全 |
测试app是否存在逻辑上的安全漏洞,比如:付款金额为负数,实际上不但没有扣款,反而给买家增加了余额。 |
|
|
自我保护 |
完整性校验 |
测试app相关组件是否能被篡改,有无完整性校验机制。 |
|
动态调试 |
测试app能否被IDA等工具动态调试;有无加壳保护 |
|
|
软件源替换 |
测试app更新源是否可被替换,比如:修改hosts文件将域名定位到指定IP;修改升级文件为自定义文件。 |
|
|
键盘记录 |
测试app密码是否能被键盘记录工具明文记录 |
|
|
服务端安全 |
web安全 |
测试app服务端是否存在web安全漏洞 |
|
接口安全 |
测试app连接的接口是否存在安全漏洞 |
PenetrationTest的更多相关文章
- 常见Web源码泄露总结
来自:http://www.hacksec.cn/Penetration-test/474.html 摘要 背景 本文主要是记录一下常见的源码泄漏问题,这些经常在web渗透测试以及CTF中出现. .h ...
- DoraBox sql注入&文件上传
SQL注入 1.sqli数字型 判断是否存在注入点,执行1 and 1=1,有回显判断存在注入点 判断字段数,执行1 order by 3以及执行1 order by 4时报错,判断字段数为3 判断具 ...
- BlackArch-Tools
BlackArch-Tools 简介 安装在ArchLinux之上添加存储库从blackarch存储库安装工具替代安装方法BlackArch Linux Complete Tools List 简介 ...
- sqli-labs之Page-1
搭建与安装 参考:https://www.fujieace.com/penetration-test/sqli-labs-ec.html 下载:sqli-labs下载 第一关:单引号报错注入 ?id= ...
- 阿里云服务器搭建vulhub靶场
阿里云服务器搭建vulhub靶场 环境 服务器:阿里云服务器 系统:centos7 应用:vulhub 步骤 vulhub需要依赖docker搭建,首先安装docker. 使用以下方法之一: # cu ...
随机推荐
- 小组开发项目针对性的NABC分析
单独就我们团队开发项目——重力解锁的功能特点而言,我们解决了智能手机屏幕解锁的乏味和繁琐的特点,显得更有趣味性和独特性,更符合现代人追随时尚的潮流:我们根据个人的不同喜好和便利性来设定一些动作,利用重 ...
- Mac下安装及配置Eclipse
1.安装Eclipse前先确认你的Mac上是否已安装java运行环境.进入终端,输入”java -version”,如果返回了java版本号则说明已安装,否则,请先安装java运行环境: 2.访问ec ...
- hdu 2629 Identity Card (字符串解析模拟题)
这题是一个字符串模拟水题,给12级学弟学妹们找找自信的,嘿嘿; 题目意思就是要你讲身份证的上的省份和生日解析出来输出就可以了: http://acm.hdu.edu.cn/showproblem.ph ...
- Java 字符编码归纳总结
String newStr = new String(oldStr.getBytes(), "UTF-8"); java中的String类是按照unicode进行编码的 ...
- java笔记之变量的存储方式
1.java变量存储域 java变量的存储区域主要放在以下几个地方: (1)寄存器:可以说是最快的存储区,在C/C++中可以声明寄存器变量,但是在java中不能声明寄存器变量,只是编译器在编译时确定. ...
- JavaScript原型与原型链学习笔记
一.什么是原型?原型是一个对象,其他对象可以通过它实现属性继承.简单的说就是任何一个对象都可以成为原型 prototype属性: 我们创建的每个函数都有一个prototype属性,这个属性是一个指针, ...
- 文件读写器FileRW 1.0发布
这个软件未发布前,当年被计算机杂志报道过. FileRW 文件读写器 1.0功能介绍:1.可以以各种方式读普通文件和I/O文件.2.可以以各种方式写文件.3.可以配置文件的分享读写方式.4.可以指定文 ...
- How to find and fix Bash Shell-shock vulnerability CVE-2014-6271 in unix like system
type command - env x='() { :;}; echo vulnerable' bash -c 'echo hello' in your terminal. if your sy ...
- linux yum 命令 详解
linux yum命令详解 yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能 ...
- PHP合并数组array_merge函数运算符加号与的区别
两个的区别是:1.数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用array_merge()不会覆盖掉原来的值,而使用“+”合并数组则会把最先出现的值作为最终结果返回,而把后面的数 ...