01_概念名词

1.2 DNS

常见的 DNS 安全攻击

缓存投毒

它是利用虚假Internet地址替换掉域名系统表中的地址,进而制造破坏。

DNS劫持

是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。(针对面较广)

域名劫持

域名劫持就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。(针对面窄一点)

DNS DDOS攻击

通过控制大批僵尸网络利用真实DNS协议栈发起大量域名查询请求,利用工具软

件伪造源IP发送海量DNS查询,发送海量DNS查询报文导致网络带宽耗尽而无法传送正常DNS查询请求。

1.5 WEB应用

WEB 的组成架构模型

网站源码:分脚本类型(如java易出现反序列化、代码执行漏洞;php易出现上传漏洞),分应用方向(博客、论坛、服务)

操作系统:Windows Linux

中间件(即搭建平台):Apache iis Tomcat Nginx 等

数据库:Access Mysql Mssql Oracle sybase db2 postsql 等

因此漏洞的挖掘从以上4个方面入手去判别

1.6 WEB 相关安全漏洞

找漏洞即根据以下各种层面去寻找漏洞

WEB 源码类对应漏洞

SQL 注入,文件上传,XSS,代码执行,变量覆盖,逻辑漏洞,反序列化等

WEB 中间件对应漏洞

未授权访问,变量覆盖…

WEB 数据库对应漏洞

弱口令(账号密码),权限提升…

WEB 系统层对应漏洞

提权,远程代码执行

其他第三方对应漏洞

APP 或 PC 应用结合类

02_数据包扩展

Request请求数据包数据格式

  1. 请求行:请求行由三个标记组成:请求方法、请求 URL 和 HTTP 版本,它们用空格分隔。如:GET / HTTP/1.1 。 HTTP 规定了 8 种可能的请求方法:
    1. GET:检索 URL 中标识资源的一个简单请求
    2. HEAD:与 GET 方法相同,服务器只返回状态行和头标,并不返回请求文档
    3. POST:服务器接受被写入客户端输出流中的数据的请求
    4. PUT:服务器保存请求数据作为指定 URL 新内容的请求
    5. DELETE:服务器删除 URL 中命令的资源的请求
    6. OPTIONS:关于服务器支持的请求方法信息的请求
    7. TRACE:web 服务器反馈 Http 请求和其头标的请求
    8. CONNECT :已文档化,但当前未实现的一个方法,预留做隧道处理
  2. 请求头:由关键字/值对组成,每行一对,关键字和值用冒号分开。请求头标识服务器、客户端的功能和标识
    1. HOST: 主机或域名地址
    2. Accept:指浏览器或其他客户可以接爱的 MIME 文件格式。Servlet 可以根据它判断并返回适当的文件格 式。
    3. User-Agent:是客户浏览器名称
    4. Host:对应网址 URL 中的 Web 名称和端口号。
    5. Accept-Langeuage:指出浏览器可以接受的语言种类,如 en 或 en-us,指英语。
    6. connection:用来告诉服务器是否可以维持固定的 HTTP 连接。http 是无连接的,HTTP/1.1 使用
    7. Keep-Alive:为默认值,这样,当浏览器需要多个文件时(比如一个 HTML 文件和相关的图形文件),不需要每次都建立连接
    8. Cookie:浏览器用这个属性向服务器发送 Cookie。Cookie 是在浏览器中寄存的小型数据体,它可以记载 和服务器相关的用户信息,也可以用来实现会话功能。
    9. Referer : 表明产生请求的网页URL(判断点击来源,从其它网站点击过来的就有这个值,直接访问时一般为空) 。比如从 网 页/icconcept/index.jsp 中 点击一个链接到页/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪Web 请求是从什么网站来的。
    10. Content-Type:用来表名 request 的内容类型。可以用 HttpServletRequest 的getContentType()方法取得。
    11. Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是 ISO-8859-1.
    12. Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到 Web 响应之后先解码,然后再检查文件格式。
  3. 空行:最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。
  4. 请求体:要发送的数据(一般post提交会使用),如搜索时提交的参数

HTTP响应码

  • 1xx:收到信息,请求,正在处理,网络极慢时可以看到

  • 2xx:成功,请求被成功地接受、理解和采纳

    • 200 存在文件
  • 3xx:重定向,为了完成请求,必须进一步执行的动作,服务器为客户端重定向到另一个URL

    • 302 重定向
    • 304 缓存:目前已经访问过,存在缓存,服务器返回304说明没有改动,不作处理
    • 3xx 均可能存在文件
  • 4xx:客户端错误

    • 403 存在文件夹
    • 404 不存在文件及文件夹
  • 5xx:服务器错误

    • 503 服务器的服务不可达如服务器服务崩溃
    • 500 均可能存在文件

    04_Web源码拓展

    CMS识别方法

    1. 人工识别:即访问网站观察名称等信息去搜索:xxx建站系统

    2. 工具识别:工具识别的原理是扫描网站的特有文件,改文件就是该CMS所特有的,其他CMS不具备,可以通过扫描特有文件是否存在来确定是什么CMS,以下是CMS特有文件的2个字典库即CMS指纹库

      1. https://github.com/Lucifer1993/cmsprint

      2. https://www.ddosi.org/tidefinger/#%E4%B8%8B%E8%BD%BD%E5%9C%B0%E5%9D%80

      CMS指纹库的实现原理即是通过访问或下载比对特有文件的MD5值,若匹配成功则查找成功并返回CMS名称

    3. 平台识别:

      1. 在线CMS指纹识别
      2. 云悉CMS指纹识别

    CMS识别的意义:

    若能够识别CMS,就可在网上下载CMS源码,查找已公开的漏洞进行分析以及利用。

    开源CMS或内部CMS

    1. 开源CMS:可以通过CMS识别出来的CMS,去网上找寻漏洞文章。直接找漏洞或审计
    2. 内部CMS:找不到源码或者不知道对方的CMS名称,常规的渗透测试,用扫描工具去判断。

    源码获取方法

    1. 扫描工具探测备份文件
    2. CMS识别技术获取CMS名称然后从网上下载
    3. 百度直接搜索:源码
    4. 咸鱼上会有卖:灰色网站
    5. 第三方源码站:如菜鸟源码
    6. 各种行业对应

    总结

    关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架例外),在获取源码后可进行本地安全测试(本地安全测试(手工使用工具去扫描,不需要接触代码))或代码审计,也可以分析其目录工作原理(数据库备份,bak文件等),未获取到的源码采用各种方法想办法获取。

05_系统及数据库等

识别操作系统方法

若目标有网站,通过网站识别

  1. 大小写敏感判断
  2. TTL值来判断

若目标无网站,通过扫描主机来识别

Nmap扫描主机操作系统

命令:

1
2
3
nmap -O IP地址

nmap -O 110.242.68.4

识别数据库类型常见方法

数据库类型

  • 小型数据库:Access
  • 中型数据库:MySQL
  • 大型数据库:SQLServer、Oracle

数据库识别方法

若有网站,则通过网站识别,一般地,有如下常见组合

  • ASP+Access(Win平台)

  • PHP+MySQL

  • ASPX+SQLServer(Win平台)

  • jsp+Oracle(大部分)/MySQL/SQLServer

  • Python+MongoDB

  • ……

若无网站,则通过Nmap扫描识别

  1. 端口扫描:扫描目标主机端口开放情况,而不同数据库运行的默认端口不同

    一、关系型数据库

    1. MySql数据库 ,默认端口是: 3306;

    2. Oracle数据库 ,默认端口号为:1521;

    3. Sql Server数据库 ,默认端口号为:1433;

    4. DB2数据库, 默认端口号为:5000;

    5. PostgreSQL数据库, 默认端口号为:5432;

    6. 国产的DM达梦数据库, 默认端口号为:5236。

    二、NoSql数据库(非关系型数据库):

    1. Redis数据库,默认端口号:6379;

    2. Memcached数据库,默认端口号:11211 ;

    3. MongoDB数据库,默认端口号:27017;

Nmap端口扫描示例:

端口状态filtered:端口状态filtered由于报文无法到达指定的端口,nmap不能够决定端口的开放状百态。

数据库类型区别及识别意义

每个数据库里面的安全机制,内部结构都有些许不一样,同样产生的漏洞也不一样。不同的数据库,攻击方法、漏洞类型及影响都有不同

数据库常见漏洞类型及攻击

弱口令攻击:通过弱口令登录到数据库中,得到网站管理员数据信息,登录网站后台,进行修改

数据库层面漏洞影响范围

通过漏洞,进行攻击,也可以获取数据库的相关权限,进行一系列的操作

站内搜索

没有找到内容!