浅谈渗透测试方法及流程

1﹑分析目标网站内容及功能

(1)  首先确定网站采用何种语言编写.或者是否有混用的情况.此处可以通过查看网站源文件,观察网站链接,捕获提交请求等方式获取.

(2)  爬行网站目录,使用工具对网站目录进行爬行,可以辅助上一步让结果更加精准.将爬行结果存档,如果可以,此处应分析出网站是否使用通用程序,如果是,记录下来.进行下一步.

(3)  根据上一步的爬行结果,对网站根目录或者关键目录进行暴力目录探测,如果网站为通用程序,判读是否有过二次开发,如非通用程序,在探测到的目录中寻找关键目录及文件.

此步骤详细测试方法:

1﹑输入并访问一些不可能存在的文件或目录名,再输入并访问一些通过目录爬行已知存在的目录及文件名,从而得知服务器如何处理无效资源.

2﹑使用网站爬行到的结果作为此步骤暴力目录探测的依据,扫描关键目录或全部.

3﹑确定服务器如何处理文件无法找到的回应,并使用关键字技术来处理这些回应.从而判断有效资源及无效资源.

4﹑收集此步骤暴力扫描得到的结果,并手工检测探测到目录的有效性.

5﹑重复以上步骤,得到更多更关键的目录及文件.
 
(4)  通过上面步骤,得到一个完整的网站目录结构,以及枚举到的所有目录名称,文件名称及文件扩展名.了解网站开发人员的命名思路,确定其命名规则,推测出更多的目录及文件名.

此步骤详细测试方法:

1﹑检查整个列表中的文件命名规则,判读其命名依据,如发现几个部分内容相同的文件名,addnews.php,viewnews.php,那么我们就可以尝试是否存在editnews.php,delnews.php,通常只要查看几个文件名,就可以推测出网站开发人员的命名习惯,根据其个人风格,开发者可能采用各种命名方法,如冗长式(addnewuser.php),简洁式(adduser.php),缩写式(addusr.php),或者更加模糊的命名方式(addu.php).了解开发者使用的命名习惯有助于推测出尚未确定内容的准确名称.

2﹑有些不同内容的命名方案使用数字和日期作为标识符,通过他们可以轻易推测出隐藏的内容.静态页面经常采用这种命名方式.
例如PKAV.NET 的团队博客中,文章里所展示的图片的文件名没有被重新定义,采用了日期加数字递增的命名方案,如2012年12月12号发布的文章中的图片分别为1.jpg,2.jpg,3.jpg.那么这些图片的路径就是/2012-12-12/1.jpg, /2012-12-12/2.jpg, /2012-12-12/3.jpg  , 此时我们在博客上发布了一篇内容加密的文章,只有团队成员才知道密码,但是黑客们根据博客以往发布文章的命名规则推测出了这些图片的准确地址,从而通过图片内容泄漏了文章的大致概念.

3﹑检查所有客户端代码,如HTML及JS代码,寻找任何隐藏了服务器端的线索,以及隐藏的表单元素等.认证检查注释内容,往往能带给我们惊喜,如部分通用程序会在网站首页放置一个通向网站管理后台的链接,但网站管理人员不希望这个链接被正常访问者所得知,于是将内容注释,我们可以通过查看HTML代码得知此具体地址,还有大多数的管理后台中所调用的JS 中常常会存储着后台所有功能模块的链接地址,但在判断了当前用户权限后将其隐藏起来,我们也可以通过直接查看JS代码的方式得知具体的内容,还有一些开发者会在注释内容中记录一些敏感信息,我多次从注释信息中得到数据库的名称,甚至可以得到数据库的具体连接信息,SQL 查询语句等.

4﹑把我们通过推测枚举出来的内容放在其他地方进行尝试。
如文件a.php 在/111/这个目录下存在,那么我们可以尝试在/222/这个目录下尝试是否存在相同文件,把所有枚举出来的文件名使用一些常规后缀来尝试访问,如index.php 这个文件已知存在,我们可以使用txt,bak,src,inc,tmp 等后缀进行尝试,如尝试index.txt,index.bak 或者添加在原有后缀基础上,index.php.bak 等.这样可以帮助我们获取这些文件的未编译版本,开发版本或者备份文件,还可以通过网站使用的语言来推测,如java 使用的.cs 后缀等.

5﹑搜索开发者使用的开发工具或者文本编辑器创建的临时文件。如SVN的.svn/entries,又或者Ultraedit这类文本编辑器的自动备份功能创建的.bak文件,被大量使用的.tmp后缀,以及index.php~1 这样的遗留文件,这些都是可能会发现重要线索的细节,测试中一定不要遗漏这些步骤.

6﹑将上述的步骤自动化,提取所有存在的文件名以及目录,后缀的词干信息,在所有目录下进行自动化批量探测.

7﹑如果通过以上步骤已经确定一种统一的命名方案,那么就可以使用此命名规则在整个站点下进行测试.

8﹑不断重复以上步骤,获取更多的关键信息,根据时间及个人想象力尽情发挥!
 
(5)  利用公共信息,如搜索引擎,站点快照信息,以及其网站所使用的程序开发商公布的一些使用文档等信息近一步获取目标站点更多信息.

1﹑使用几种不同的搜索引擎和网站快照来获取目标站点的索引和历史内容记录.

2﹑使用搞基搜索技巧如:
site:www.qxzxp.com  (返回此目标站点被搜索引擎抓取收录的所有内容)
site:www.qxzxp.com  关键词  (返回此目标站点被搜索引擎抓取收录的包含此关键词的所有页面.此处我们可以将关键词设定为,网站后台,管理后台,密码修改,密码找回等.)
site:www.qxzxp.com inurl:admin.php  (返回目标站点的地址中包含admin.php的所有页面,可以使用admin.php,manage.php或者其他关键词来寻找关键功能页面)
link:www.qxzxp.com  (返回所有包含目标站点链接的页面,其中包括其开发人员的个人博客,开发日志,或者开放这个站点的第三方公司,合作伙伴等)
related:www.qxzxp.com  (返回所有与目标站点”相似”的页面,可能会包含一些通用程序的信息等.)

3﹑在搜索时不要只使用网页的搜索功能,可以尝试如图片,新闻等功能来定位具体信息.

4﹑从搜索引擎的快照中寻找一些关键信息,如程序报错信息可以会泄漏网站具体路径,或者一些快照中会保存一些测试用的测试信息,比如说某个网站在开发了后台功能模块的时候,还没给所有页面增加权限鉴别,此时被搜索引擎抓取了快照,即使后来网站增加了权限鉴别,但搜索引擎的快照中仍会保留这些信息.

5﹑通过搜索引擎获取目标站点的子域名,得到更多的功能,如有些网站经常使用admin 这个子域名作为其管理后台,如admin.hao123.com等.
 
(6)  收集网站开发者信息,如网站的开发人员,管理维护人员等在互联网上的一些信息.

1﹑列出网站中得到的所有开发及维护人员的姓名和邮件地址及其他联系方式,其中包含从网站联系功能中获取到的,从HTML或JS中的注释信息中得到的,已经内容页面上获取到的。

2﹑使用上面介绍的一些高级搜索技巧,查找这些人在互联网上发布的与目标站点有关的一切信息,分析并发现有用的信息,如我曾经在用这个方法获取某国内大型网站的开发人员的信息时,竟发现他把他开发过的所有功能页面的源代码都放在一个公开的网站中,可以随意下载,包含了这个网站的数据库链接信息等关键内容,从而导致我轻松获取到这个大型网站的权限。

时间: 2024-10-14 16:35:45

浅谈渗透测试方法及流程的相关文章

测试浅谈(原则、简单流程)

1.测试的原则:·测试证明软件存在缺陷·不可能执行穷尽测试.·测试应尽早启动.尽早介入·缺陷存在群集现象(二八定律)·杀虫剂悖论·不同的测试活动依赖不同的测试背景·不存在缺陷的谬论 2.测试的流程·1.需求分析·2.测试计划[一般测试组长]·3.用例设计·4.执行用例(基础.基本)·5.缺陷跟踪·6.测试总结[一般测试组长] 测什么?·软件源代码·与软件源代码匹配的文档·支撑软件源代码运行的配置数据·需求阶段-----需求规格说明书·系统设计阶段-----概要设计说明书.详细设计说明书·系统测试

Flask解读 --- 浅谈Flask基本工作流程_1

网站写了蛮长时间了,一直想具体分析分析Flask的运行机制,但是源码看得断断续续,不过最近状态不错,进度上来了点,这里先新建一个类别,专门来说说Flask和源码有关系的内容, 这篇准备粗略说一下应用Flask框架的时候,从HTTP请求开始到响应的流程 前置技能   ---   WSGI 在具体读源码之前,这里先需要说一个概念,什么是WSGI. WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,

浅谈软件测试方法

      软件测试已然成为生产高质量软件必不可少的一个工程实践活动,其中软件测试方法更是种类繁多,对于初学者而言,记忆起来比较困难.因而我通过课上听讲及查阅资料加以简单地整理总结,方便大家有个整体的了解. 从测试设计方法分类 测试名称                                 测试内容 Black Box Testing黑盒测试 黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用.在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的

浅谈HTTP与其工作流程

一.什么是HTTP协议 HTTP协议(Hyper Text Transfer Protocol)翻译过来是超文本传输协议,也是一种restful风格的协议,在web开发和APP接口开发都很常用. HTTP协议是应用层协议,同样是应用层协议的还有FTP,MQTT,SMAP等,但总结来说都是基于TCP/IP之上传输,应用层的协议可以理解为根据不同的协议传输不同格式的字节. 比如以下是一个HTTP协议报文 那么在应用层的报文就是 01001000 01010100 01010100 01010000

浅谈HDFS的读流程

1.使用HDFS提供的客户端Client,向远程的Namenode发起RPC请求: 2.Namenode会视情况返回文件的部分或者全部block列表,对于每个block,Namenode都会返回有该block拷贝的DataNode地址: 3.客户端Client会选取离客户端最近的DataNode来读取block:如果客户端本身就是DataNode,那么将从本地直接获取数据: 4.读取完当前block的数据后,关闭当前的DataNode链接,并为读取下一个block寻找最佳的DataNode: 5

浅谈HDFS的写流程

1.使用HDFS提供的客户端Client,向远程的Namenode发起RPC请求 2.Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常: 3.当客户端开始写入文件的时候,客户端会将文件切分成多个packets,并在内部以数据队列"data queue(数据队列)"的形式管理这些packets,并向Namenode申请blocks,获取用来存储replicas的合适的datanode列表,列表的大小根据Namen

浅谈自动化测试流程

浅谈AST(自动化测试)流程,欢迎大家多多指点,多提宝贵意见. AST阶段一:需求收集——分析自动化测试需求 1.举行启动会议,对SUT(被测试的系统)进行总体描述 2.SUT的要求是可测试和可自动化的 3.评估哪些测试可以自动化 4.分析当前生命周期中SUT使用的工具和复用现有的AST工具 5.对AST和测试中需要的工具进行评估,并提出建议 6.确定和讨论测试环境,包括测试环境的采购和安排,列出测试环境的概要 7.与开发相关人员一起走查一遍AST测试需求,最后达成一致意见 8.给出可以自动化的

浅谈内网渗透

引子离上篇文章的时间过去很久了,答应写一篇内网渗透的文章,今天抽点时间,把这个坑给添平了吧.标题是浅谈,所以我不认为自己能在内网渗透写的有多深入.渗透这玩意更多是经验,积累的多了自然水到渠成.而且我个人认为很多前辈人物都已经写的很好了,我这里纯粹抛砖引玉,把前辈级人物的经验集成在一起,也算基础篇吧.如果有不足的地方或者有更好的实现方法,欢迎随时交流.交流方式就以邮件吧,邮件地址在文章结束处,上次公开的Q加了很多人,即时通讯=即时打扰,过段时间集中清理,如果不小心被清理了,诸位勿怪,这里算是提前打

浅谈安全性攻击人为攻击的主要形式和防御

0x01 安全性攻击主要的两种方式 当前,对信息系统(包括硬件.软件.数据.人.物理环境及其基础设施)的攻击来自多方面,这些攻击我们可以宏观地分为人为攻击(主观因素)和自然灾害攻击(客观因素),这两大类的攻击都会对信息安全构成威胁.造成自然灾害攻击的自然因素包括各种自然灾害:如水.火.雷.电.风暴.烟尘.虫害.鼠害.海啸和地震等:系统的环境和场地条件,如温度.湿度.电源.地线和其他防护设施不良造成的威胁:电磁辐射和电磁干扰的威胁:硬件设备自然老化,可靠性下降的威胁等.因为自然灾害往往不可预知和抗