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请求数据包数据格式
- 请求行:请求行由三个标记组成:请求方法、请求 URL 和 HTTP 版本,它们用空格分隔。如:GET / HTTP/1.1 。 HTTP 规定了 8 种可能的请求方法:
- GET:检索 URL 中标识资源的一个简单请求
- HEAD:与 GET 方法相同,服务器只返回状态行和头标,并不返回请求文档
- POST:服务器接受被写入客户端输出流中的数据的请求
- PUT:服务器保存请求数据作为指定 URL 新内容的请求
- DELETE:服务器删除 URL 中命令的资源的请求
- OPTIONS:关于服务器支持的请求方法信息的请求
- TRACE:web 服务器反馈 Http 请求和其头标的请求
- CONNECT :已文档化,但当前未实现的一个方法,预留做隧道处理
- 请求头:由关键字/值对组成,每行一对,关键字和值用冒号分开。请求头标识服务器、客户端的功能和标识
- HOST: 主机或域名地址
- Accept:指浏览器或其他客户可以接爱的 MIME 文件格式。Servlet 可以根据它判断并返回适当的文件格 式。
- User-Agent:是客户浏览器名称
- Host:对应网址 URL 中的 Web 名称和端口号。
- Accept-Langeuage:指出浏览器可以接受的语言种类,如 en 或 en-us,指英语。
- connection:用来告诉服务器是否可以维持固定的 HTTP 连接。http 是无连接的,HTTP/1.1 使用
- Keep-Alive:为默认值,这样,当浏览器需要多个文件时(比如一个 HTML 文件和相关的图形文件),不需要每次都建立连接
- Cookie:浏览器用这个属性向服务器发送 Cookie。Cookie 是在浏览器中寄存的小型数据体,它可以记载 和服务器相关的用户信息,也可以用来实现会话功能。
- Referer : 表明产生请求的网页URL(判断点击来源,从其它网站点击过来的就有这个值,直接访问时一般为空) 。比如从 网 页/icconcept/index.jsp 中 点击一个链接到页/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪Web 请求是从什么网站来的。
- Content-Type:用来表名 request 的内容类型。可以用 HttpServletRequest 的getContentType()方法取得。
- Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是 ISO-8859-1.
- Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到 Web 响应之后先解码,然后再检查文件格式。
- 空行:最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。
- 请求体:要发送的数据(一般post提交会使用),如搜索时提交的参数
HTTP响应码
1xx:收到信息,请求,正在处理,网络极慢时可以看到
2xx:成功,请求被成功地接受、理解和采纳
- 200 存在文件
3xx:重定向,为了完成请求,必须进一步执行的动作,服务器为客户端重定向到另一个URL
- 302 重定向
- 304 缓存:目前已经访问过,存在缓存,服务器返回304说明没有改动,不作处理
- 3xx 均可能存在文件
4xx:客户端错误
- 403 存在文件夹
- 404 不存在文件及文件夹
5xx:服务器错误
- 503 服务器的服务不可达如服务器服务崩溃
- 500 均可能存在文件
04_Web源码拓展
CMS识别方法
人工识别:即访问网站观察名称等信息去搜索:xxx建站系统
工具识别:工具识别的原理是扫描网站的特有文件,改文件就是该CMS所特有的,其他CMS不具备,可以通过扫描特有文件是否存在来确定是什么CMS,以下是CMS特有文件的2个字典库即CMS指纹库
CMS指纹库的实现原理即是通过访问或下载比对特有文件的MD5值,若匹配成功则查找成功并返回CMS名称
平台识别:
CMS识别的意义:
若能够识别CMS,就可在网上下载CMS源码,查找已公开的漏洞进行分析以及利用。
开源CMS或内部CMS
- 开源CMS:可以通过CMS识别出来的CMS,去网上找寻漏洞文章。直接找漏洞或审计
- 内部CMS:找不到源码或者不知道对方的CMS名称,常规的渗透测试,用扫描工具去判断。
源码获取方法
- 扫描工具探测备份文件
- CMS识别技术获取CMS名称然后从网上下载
- 百度直接搜索:源码
- 咸鱼上会有卖:灰色网站
- 第三方源码站:如菜鸟源码
- 各种行业对应
总结
关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架例外),在获取源码后可进行本地安全测试(本地安全测试(手工使用工具去扫描,不需要接触代码))或代码审计,也可以分析其目录工作原理(数据库备份,bak文件等),未获取到的源码采用各种方法想办法获取。
05_系统及数据库等
识别操作系统方法
若目标有网站,通过网站识别
- 大小写敏感判断
- TTL值来判断
若目标无网站,通过扫描主机来识别
Nmap扫描主机操作系统
命令:
1 | nmap -O IP地址 |
识别数据库类型常见方法
数据库类型
- 小型数据库:Access
- 中型数据库:MySQL
- 大型数据库:SQLServer、Oracle
数据库识别方法
若有网站,则通过网站识别,一般地,有如下常见组合
ASP+Access(Win平台)
PHP+MySQL
ASPX+SQLServer(Win平台)
jsp+Oracle(大部分)/MySQL/SQLServer
Python+MongoDB
……
若无网站,则通过Nmap扫描识别
端口扫描:扫描目标主机端口开放情况,而不同数据库运行的默认端口不同
一、关系型数据库
MySql数据库 ,默认端口是: 3306;
Oracle数据库 ,默认端口号为:1521;
Sql Server数据库 ,默认端口号为:1433;
DB2数据库, 默认端口号为:5000;
PostgreSQL数据库, 默认端口号为:5432;
国产的DM达梦数据库, 默认端口号为:5236。
二、NoSql数据库(非关系型数据库):
Redis数据库,默认端口号:6379;
Memcached数据库,默认端口号:11211 ;
MongoDB数据库,默认端口号:27017;
Nmap端口扫描示例:

端口状态filtered:端口状态filtered由于报文无法到达指定的端口,nmap不能够决定端口的开放状百态。
数据库类型区别及识别意义
每个数据库里面的安全机制,内部结构都有些许不一样,同样产生的漏洞也不一样。不同的数据库,攻击方法、漏洞类型及影响都有不同
数据库常见漏洞类型及攻击
弱口令攻击:通过弱口令登录到数据库中,得到网站管理员数据信息,登录网站后台,进行修改
数据库层面漏洞影响范围
通过漏洞,进行攻击,也可以获取数据库的相关权限,进行一系列的操作
