P1概念名词
1,1 域名
什么是域名?
- 域名是有一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指的是地理位置)。
什么是二级域名多级域名? - 二级域名:分两种
- 在国际顶级域名下的二级域名
- 国际顶级域名下二级域名,二级域名一般是指域名注册人选择使用的网上名称,如“yahoo.com”;上网的商业组织通常使用自己的商标、商号或其他商业标志作为自己的网上名称,如“microsoft.com”。
- 国家顶级域名下二级域名
- 在国家顶级域名之下二级域名一般是指类似于国际顶级域名的标识注册人类别和功能的标志。例如,在“. com.cn”域名结构中,“.com”此时是置于国家顶级域名“.cn”下的二级域名,表示商业性组织,以此类推。
域名发现对于安全测试的意义
- 可以给安全测试提供更多地测试点,方便获取更多相关信息
1.2 DNS
什么是DNS?
- 域名系统(Domain Name System)。它是一个域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
本地 HOSTS 与 DNS 的关系? - Hosts在本地将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当我们访问域名时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
- Hosts地址:C:\Windows\System32\drivers\etc\hosts
CDN 是什么?与 DNS 的关系?
- CDN:是构建在数据网络上的一种分布式的内容分发网。可以提高系统的响应速度,也可以一定程度的拦截/f防御攻击。
常见的 DNS 安全攻击有哪些?
- 缓存投毒:它是利用虚假Internet地址替换掉域名系统表中的地址,进而制造破坏。
- DNS劫持:是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。(针对面较广)
- 域名劫持:域名劫持就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。(针对面窄一点)
- DNS DDOS攻击:通过控制大批僵尸网络利用真实DNS协议栈发起大量域名查询请求,利用工具软件伪造源IP发送海量DNS查询,发送海量DNS查询报文导致网络带宽耗尽而无法传送正常DNS查询请求。
1.3 脚本语言
常见的脚本语言类型有哪些?
- asp php aspx jsp javaweb pl py cgi 等
不同脚本类型与安全漏洞的关系? - 不同脚本可能爆发漏洞的可能性有所不同
- 不同脚本漏洞的存在点可能不同,因为不同语言的适用范围不同
1.4 后门
什么是后门?
- 通常指那些绕过安全性控制而控制而获取对程序或系统访问权的程序方法。
- 在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。
后门在安全测试中的实际意义? - 可以更方便的链接到主机.
- 在获取到玩主机权限的时候,后门可以充当命令控制台的角色
1.5 WEB
WEB 的组成架构模型?
- 网站源码:分脚本类型,分应用方向
- 操作系统:windows linux
- 中间件(搭建平台):apache iis tomcat nginx 等
- 数据库:access mysql mssql oracle sybase db2 postsql 等
为什么要从 WEB 层面为主为首? - web使用的比较广
- web网站了漏洞相对较多
- web 作为跳板深入到其他资源相对容易
1.6 WEB 相关安全漏洞
- WEB 源码类对应漏洞:SQL 注入,上传,XSS,代码执行,变量覆盖,逻辑漏洞,反序列化等
- WEB 中间件对应漏洞:未授权访问,变量覆盖…
- WEB 数据库对应漏洞:弱口令,权限提升…
- WEB 系统层对应漏洞:提权,远程代码执行
- 其他第三方对应漏洞
- APP 或 PC 应用结合类
P2. 数据包扩展
2.1 https&http
- HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
- HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
- HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
2.2 Request 请求数据包数据格式
Request Headers
Form Data
- name=name&age=11
请求行
- 请求行由三个标记组成:请求方法、请求 URL 和 HTTP 版本,它们用空格分享。
- 例如:GET /index.html HTTP/1.1
请求头
空行
- 最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。
请求数据
- 使用 POST 传送,最常使用的是 Content-Type 和 Content-Length 头标。
2.3 Response 返回数据包数据格式
Response 请求数据包数据格式
HTTP 响应码:
200 存在文件
403 存在文件夹
3xx 均可能存在
404 不存在文件或者文件夹
500 均可能存在
响应头标
P3. 搭建安全拓展
3.1 网站搭建环境
- ASP,PHP,ASPX,JSP,PY,JAVAWEB 等环境
WEB 源码中敏感文件 - 后台路径,数据库配置文件,备份文件等
3.2 基于中间件的简要识别
3.3 后门注意事项
- 后门是否给予执行权限
- 后门是否给予操作目录或文件权限
- 后门是否给予其他用户权限
P4. WEB 源码拓展
4.1 知识点
- 关于 WEB 源码目录结构
- 关于 WEB 源码脚本类型
- 关于 WEB 源码应用分类
- 关于 WEB 源码其他说明
4.2 信息敏感点
- 敏感目录结构:数据库配置文件,后台目录,模版目录,数据库目录等
- web脚本类型:ASP,PHP,ASPX,JSP,JAVAWEB 等脚本类型源码
- 应用分类:社交,论坛,门户,第三方,博客等不同的代码机制对应漏洞
- 开源,未开源问题,框架非框架问题,关于 CMS 识别问题及后续等
- 关于源码获取的相关途径:搜索,咸鱼淘宝,第三方源码站
关于 WEB 源码目录结构
-
网站的脚本类型—asp脚本—从index.asp判断出
-
网站的管理后台—admin目录
-
网站的数据—data目录—包含数据库配置文件
P5. 系统&数据库
5.1 操作系统层面
识别操作系统常见方法
- 看字母大小写,windows对大小写不敏感,Linux敏感
- 看ping值 --ttl在64左右,linux --ttl在128左右windows
- nmap -O ip
简要两者区别及识别意义情况 - 可以帮助我们明确思路
- 可以筛选掉不符合系统的情况
操作系统层面漏洞类型对应意义 - 覆盖面广
- 获取的权限高
- 危害性大
5.2 数据库层面
识别数据库类型常见方法
- nmap -O ip
- nmap ip -p 端口,通过端口开放反推数据库
数据库类型区别及识别意义 - 数据库的漏洞和类型相性很强
- 不同数据库漏洞爆发点不太一样
- 能确定数据库类型、版本,会对渗透有很大帮助
数据库常见漏洞类型及攻击 - 弱口令
- sql注入
简要数据库层面漏洞影响范围 - 要参考数据库的重要程来判定影响范围
常见的数据库结构
- ASP+Access
- php+mysql
- axpx+mssql
- jsp+mssql,oracle
- python+mongodb
服务器端口 - U关系型数据库 --MySQL:3306 --SqlServer:1433 --Oracle:1521
- NOSQL数据库 --MongoDB:27017 --Redis:6379 --memcached:11211
第三方
- 如何判断那些有第三方平台或软件 – 端口扫描 – 特征匹配
- 简要为什么要识别第三方平台或软件 – 可以提供额外的攻击面
- 常见第三方平台或软件漏洞类型及攻击 – 弱口令
- 简要第三方平台或软件安全测试的范围
操作系统层面
- 识别操作系统的方法
#如果是网站----windows大小写不区分,Linux区分大小写
#windows类型
#Linux类型
#根据ttl的值来判断
不同的操作系统的默认TTL值是不同的, 所以我们可以通过TTL值来判断主机的操作系统,但是当用户修改了TTL值的时候,就会误导我们的判断,所以这种判断方式也不一定准确。下面是默认操作系统的TTL:
1、WINDOWS NT/2000 TTL:128
2、WINDOWS 95/98 TTL:32
3、UNIX TTL:255
4、LINUX TTL:64
5、WIN7 TTL:64
如图,ttl为106,接近128,估计为windows系统