1、用自己的语言描述渗透测试流程
渗透测试流程:
明确目标------信息收集---漏洞探测----漏洞验证-----
(信息分析------获取所需---信息整理)---形成报告
1.明确目标
1). 明确目标:确定目标的范围,ip,域名、内外网
2). 确定规则:渗透的程度,时间,是否提权等
3). 确定需求:web应用的漏洞(上线),业务逻辑漏洞,人员权限管理漏洞,全方位检查等。
2. 信息收集
1). 方式:主动扫描,开发搜索(利用搜索引擎获取后台,未授权页面、敏感url)等
2). 收集的主要内容有:
基础信息: ip、网段、域名、端口
系统信息: 操作系统版本
应用信息: 各端口的应用,如web的应用等
版本信息: 对方服务器版本号等信息
服务信息:目标服务器所开放的端口,支持的服务或者方法等
人员信息:域名注册人员信息,管理员姓名、id等
防护信息:对方企业所使用的防火墙,安全设备等
3. 漏洞探测
方法:
1.漏洞扫描,使用工具 awvs、ibm appscan等
2. 结合漏洞去exploit-db(漏洞提交平台)等平台找利用信息。
3.在网上寻找验证poc(证明漏洞的代码)。
内容:
系统漏洞:系统没有及时打补丁
Websever漏洞:Websever配置问题
Web应用漏洞:Web应用开发问题
其它端口服务漏洞:各种21/8080(st2)/7001/22/3389(端口)
通信安全:明文传输,token在cookie中传送等。
4.漏洞验证
结合实际情况,搭建模拟环境进行试验。成功后再应用于目标中。
自动化验证:结合自动化扫描工具提供的结果
手工验证,根据公开资源进行验证
试验验证:自己搭建模拟环境进行验证
登陆猜解:有时可以尝试猜解一下登陆口的账号密码等信息
业务漏洞验证:如发现业务漏洞,要进行验证
公开资源的利用:如下
-exploit-db/wooyun/
-google hacking
-渗透代码网站
-通用、缺省口令
-厂商的漏洞警告等等。
5. 信息分析
为下一步实施渗透做准备。
精准打击:准备好上一步探测到的漏洞的exp(exploit:利用系统漏洞进行攻击的动作),用来精准打击
绕过防御机制:是否有防火墙等设备,如何绕过
定制攻击路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标
绕过检测机制:是否有检测机制,流量监控,杀毒软件,恶意代码检测等(免杀)
攻击代码:经过试验得来的代码,包括不限于xss代码,sql注入语句等
6. 获取所需
实施攻击:根据前几步的结果,进行攻击
获取内部信息:基础设施(网络连接,vpn,路由,拓扑等)
进一步渗透:内网入侵,敏感目标
持续性存在:一般我们对客户做渗透不需要。rookit(隐藏软件不被发现),后门添加管理账号,驻扎手法等
清理痕迹:清理相关日志(访问,操作),上传文件等
7. 信息整理
整理渗透工具:整理渗透过程中用到的代码,poc,exp等
整理收集信息:整理渗透过程中收集到的一切信息
整理漏洞信息:整理渗透过程中遇到的各种漏洞,各种脆弱位置信息
目的:为了最后形成报告,形成测试结果使用。
8. 形成报告
按需整理:按照之前第一步跟客户确定好的范围,需求来整理资料,并将资料形成报告
补充介绍:要对漏洞成因,验证过程和带来危害进行分析
修补建议:当然要对所有产生的问题提出合理高效安全的解决办法
2、静态 动态语言区别
1.动态语言: 在运行时代码可以根据某些条件改变自身结构 。
如 javascript、php、python
2.静态语言: 在运行时结构不可变。
如java、c、c++
区别:
1. 静态语言在使用变量之前必须生命数据类型;
动态语言是在运行时确定数据类型的语言,变量使用之前不需要类型声明。
2. 静态语言相对比较封闭,使得第三方开发包对代码的侵害性可以降到最低。
动态语言 专注于业务逻辑表达,代码量比较少。
3、常见的脚本语言有那些
php 、asp 、 asp.net(aspx)、jsp、python、
javascript、css
4、常见的数据库有那些
access、redis、mysql、sqlServer、Oracle、MongoDB
5、常见的数据库与脚本语言搭配
1. php+mysql
2. jsp+mysql
3. jsp+oracle
4. asp+access
5. asp+mssql
6. aspx+oracle
7. aspx+mssql
6、系统、脚本语言、中间件如何组合
1. linux + apache+ php
2. linux + nginx + php
3. linux + tomcat + jsp
4. windows + iis + asp/aspx/php
5. windows +tomcat +jsp
6. windows + apache + php
7、写出以下状态码的含义(200、201、301、302、400、401、403、404、500)
状态码为分为5类:
1. 100-101:信息提示
2. 200-206: 成功
3. 300-305: 重定向
4. 400-415: 客户端错误
5. 500-505:服务器错误
常见状态码:
200: 客户端请求成功
201: 请求成功并且服务器创建了新的资源(put请求的响应返回的状态码)
301:请求的网页已永久重定向
302:请求的网页已暂时重定向
400:客户端请求有语法错误,不能被服务器理解(客户端提交了无效的http请求)
401:请求未经授权
403:服务器收到请求,但是拒绝提供服务(不管是否通过身份验证,禁止任何人访问被请求的资源)
404:请求资源不存在
500: 服务器在执行期间发生不可预期的错误
8、我们平时常用的编码有那些
ASCII、 GBK、 utf-8、unicode、、iso8859-1 、html、
9、常见的渗透术语:
poc:能够证明漏洞存在的代码
exp(exploit):漏洞利用代码
payload----攻击载荷,被送到目标机器执行的整段代码。
木马: 表面上伪装成正常的程序,在程序运行时会获取 系统的整个控制权限。
webshell:通过web入侵只会留下的后门工具
waf:web应用防火墙
弱口令:密码强度不够的密码
网友评论