网安自学记录(基础篇)

  1. 概念名词

1.1域名

是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。

1.1.1 二级域名 多级域名

多级域名的概念等同二级域名(cht.worl-xml.com(cht.worl-xml.com(cht.worl-xml.com),不过比二级域名更加延伸,比如我们继续扩展该域名的主机名,设置主机名为 bbs.at,那么就可以建立一个三级域名bbs.at.worl-xml.com,当然也可以建立四级域名bbs.at.go.worl- xml.com,五级域名bbs.at.go.home.worl-xml.combbs.at.worl-xml.com,当然也可以建立四级域名bbs.at.go.worl- xml.com,五级域名bbs.at.go.home.worl-xml.com:bbs.at.worl-xml.com,当然也可以建立四级域名bbs.at.go.worl- xml.com,五级域名bbs.at.go.home.worl-xml.com……,依次类推,可以建立无限级别的域名,我们统称这些域名为顶级域名 worl-xml.com子域名

1.1.2 域名发现对于安全测试意义

可以给安全测试提供更多的测试点,方便获取更多相关信息


1.2 DNS

域名系统(Domain Name System)。它是一个域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

1.2.1 本地 HOSTS 与 DNS 的关系?

Hosts文件主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定。

Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。

浏览器访问网站,要首先通过DNS服务器把要访问的网站域名解析成一个唯一的IP地址,之后,浏览器才能对此网站进行定位并且访问其数据。

1.2.2 CDN 是什么?

CDN的全称是Content DeliveryNetwork,即内容分发网络。

CDN的基本思路:是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上(单纯只使用DNS解析,直接PING就会显示出自己的真实IP,如果又使用CDN,PING出来的IP就不是用户的真实IP而是CDN服务器的IP节点。需要绕过CDN后去找真实IP地址。

使用CDN的目的:是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。

1.2.3 常见的 DNS 安全攻击有哪些?

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

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

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

DNS DDOS攻击:通过控制大批僵尸网络利用真实DNS协议栈发起大量域名查询请求,利用工具软件伪造源IP发送海量DNS查询,发送海量DNS查询报文导致网络带宽耗尽而无法传送正常DNS查询请求。


1.3 脚本语言
1.3.1 常见的脚本语言类型有哪些?

常见的脚本语言有:Python、JavaScript、Asp (逐渐淘汰,基本都是小站点在使用)、Aspx、Php (目前比较流行)javaweb、 pl、cgi等

1.3.2 不同脚本类型与安全漏洞的关系?

不同的脚本语言的编写规则不一样,程序产生的漏洞自然也不一样。


1.4后门
1.4.1 什么是后门?

通常指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。

1.4.2 后门在安全测试中的实际意义?

后门的最主要目的就是方便以后再次秘密进入或者控制系统。


1.5 WEB
1.5.1 WEB 的组成架构模型

网站源码:分脚本类型,分应用方向

操作系统:windows linux

中间件(搭建平台):apache iis tomcat nginx 等

数据库:access mysql mssql oracle sybase db2 postsql 等

1.5.2 为什么要从 WEB 层面为主为首?

web使用的比较广

web网站了漏洞相对较多

web 作为跳板深入到其他资源相对容易


1.6 WEB 相关安全漏洞

2. 数据包扩展

2.1 https&http
  • HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。

  • http和https使用连接方式不同,默认端口也不一样,http是80,https是443。

  • HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。


2.2 HTTP报文组成

2.3响应报文构成

2.4 常见请求方法
GET:请求指定的页面信息,并返回实体主体。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面。

get请求:

post请求:

post和get的区别:

都包含请求头请求行,post多了请求body。

get多用来查询,请求参数放在url中,不会对服务器上的内容产生作用。post用来提交,如把账号密码放入body中。

GET是直接添加到URL后面的,直接就可以在URL中看到内容,而POST是放在报文内部的,用户无法直接看到。

GET提交的数据长度是有限制的,因为URL长度有限制,具体的长度限制视浏览器而定。而POST没有。

2.5 响应状态码

访问一个网页时,浏览器会向web服务器发出请求。此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。

2.5.1 状态码分类:
1XX- 信息型,服务器收到请求,需要请求者继续操作。
2XX- 成功型,请求成功收到,理解并处理。
3XX - 重定向,需要进一步的操作以完成请求。
4XX - 客户端错误,请求包含语法错误或无法完成请求。
5XX - 服务器错误,服务器在处理请求的过程中发生了错误。
2.5.2 常见状态码
200 OK - 客户端请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 - 请求资源不存在,可能是输入了错误的URL
500 - 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

2.6 代理服务器&数据包
#Requeset    请求数据包
#Proxy        代理服务器
#Reponse    相应数据包
代理的出现在接受数据包和发送数据包的时候提供了修改数据包的机会 
2.6.1 通信过程

1.浏览器建立与web服务器之间的连接

2.浏览器将请求数据打包(生成请求数据包)并发送到web服务器

3.web服务器将处理结果打包(生成响应数据包)并发送给浏览器

4.web服务器关闭连接

总结:建立连接——>发送请求数据包——>返回响应数据包——>关闭连接

2.6.2 数据格式

请求数据包包含

1.请求行:请求类型/请求资源路径、协议的版本和类型

2.请求头:一些键值对,一般由w3c定义,浏览器与web服务器之间都可以发送,表示特定的某种含义

3.【空行】请求头与请求体之间用一个空行隔开;

4.请求体:要发送的数据(一般post方式会使用);例:userName=123&password=123&returnUrl=/


3. 搭建安全拓展

域名扫描只能扫描出来域名文件,而域名文件只是占服务器资源的一小部分;IP扫描可以直接扫描出来服务器的根目录,得到的信息更多;
3.1 常见问题
有ASP,PHP,ASPx,JSP,PY,JAVAWEB等搭建环境
WEB源码中敏感文件,后台路径,数据库配置文件,备份文件等
ip或域名解析wEB源码目录对应下的存在的安全问题,域名访问,IP访问(结合类似备份文件目录)
脚本后缀对应解析(其他格式可相同-上传安全)
存在下载或为解析问题
常见防护中的IP验证,域名验证等
后门是否给予执行权限
后门是否给予操作目录或文件权限
后门是否给予其他用户权限
总结下关于可能会存在的安全或防护问题?
3.2 web权限的设置

在一般的情况下我们会对某个目录取消执行权限、最典型的就是图片目录这个目录只放图像没有脚本我们会取消执行的权限、这样我们可以防范一部分的文件上传漏洞、即使开发写的代码有问题也不会导致服务器出现安全事故。

绕过方法:如果我们上传的文件如果不能正常的执行那么将文件放在其他目录、例如网站的根目录下面


4. WEB 源码拓展

WEB 源码在安全测试中是非常重要的信息来源,可以用来 代码审计漏洞也可以用来做信息突破口,其中 WEB 源码有很多技术需要简明分析。
敏感目录结构:数据库配置文件,后台目录,模版目录,数据库目录等
web脚本类型:ASP,PHP,ASPX,JSP,JAVAWEB 等脚本类型源码
应用分类:社交,论坛,门户,第三方,博客等不同的代码机制对应漏洞
开源,未开源问题,框架非框架问题,关于 CMS 识别问题及后续等
关于源码获取的相关途径:搜索,咸鱼淘宝,第三方源码站
关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架类例外)
在获取源码后可进行本地安全测试或代码审计,也可以分析其目录工作原理(数据库备份,bak 文件等)
未获取到的源码采用各种方法想办法获取。
4.1 在线cms识别网站

https://www.yunsee.cn/ 相应的速度快

http://whatweb.bugscaner.com/ 可以在线和多个cms识别


5. 系统&数据库

5.1 操作系统层面
5.1.1 识别操作系统常见方法

有网站:

看字母大小写,windows对大小写不敏感,Linux敏感

看ping值 --ttl在64左右,linux --ttl在128左右windows

没网站:

通过nmap进行扫描方法 nmap -O IP地址

(不是所有的系统都可以用这种方式扫描出操作系统的类型、在windows的一些高版本中无法探测)

TTL:

不同的操作系统的默认TTL值是不同的, 所以我们可以通过TTL值来判断主机的操作系统,但是当用户修改了TTL值的时候,就会误导我们的判断,所以这种判断方式也不一定准确。下面是默认操作系统的TTL:
WINDOWS NT/2000   TTL:128
WINDOWS 95/98     TTL:32
UNIX              TTL:255
LINUX             TTL:64
WIN7              TTL:64

特殊端口 如(22 / 139 / 445 / 1433 / 3389)

5.1.2 W&L两者区别及识别意义情况

可以帮助我们明确思路 筛选掉不符合系统的情况 区别出不同的操作系统才能对症下药、因为windows和linux的漏洞是不一样的、可能windows的漏洞在windows上就不能运用,

5.1.3 操作系统层面漏洞类型对应意义

不同的漏洞会造成不同漏洞利用的条件

5.1.4 操作系统层面漏洞影响范围

有些漏洞会对操作系统造成崩溃、而有些系统只是蓝屏、或者是权限的提升


5.2 数据库层面
5.2.1 识别数据库类型常见方法

默认的语言搭配的数据库

组合类型asp + access/mssql
组合类型php + mysql 
组合类型aspx+mssql
组合类型jsp +mysql/oracle
组合类型Python + MongoDB

常见的数据库默认端口号

关系型数据库
    mysql         3306
    sqlserver     1433
    oracle        1521
    psotgresql    5432
非关系型数据库
    MongoDB       27017
    Redis         6379
    memcached     11211
5.2.2 数据库类型区别及识别意义
• 数据库的漏洞和类型相性很强
• 不同数据库漏洞爆发点不太一样
• 能确定数据库类型、版本,会对渗透有很大帮助
5.2.3 数据库常见漏洞类型及攻击

弱口令 sql注入

5.2.4 数据库层面漏洞影响范围

数据库权限 网站权限 修改网页内容

5.2.5 第三方层面

如何判断那些有第三方平台或软件

端口扫描 特征匹配

为什么要识别第三方平台或软件

不同的第三方软件或工具存在不同的漏洞、识别到更多的信息对收集到的漏洞也就越多

常见第三方平台或软件漏洞类型及攻击

弱口令 软件的漏洞攻击

第三方平台或软件安全测试的范围

直接获取到软件的权限便于进一步的提权和攻击

除去常规WEB安全及APP安全测试外,类似服务器单一或复杂的其他服务( 邮件,游戏,负载均衡等),也可以作为安全测试目标,此类目标测试原则只是少了WEB应用或其他安全问题。所以明确安全测试思路是很重要的!

6. 加密算法

6.1 常见加密编码等算法解析

MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES 等

6.2 常见加密形式算法解析

直接加密,带 salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等

6.3 常见解密方式

枚举,自定义逆向算法,可逆向

6.4 常规加密算法的特性

长度位数,字符规律,代码分析,搜索获取等

6.5 工具

解密:https://www.cmd5.com/

时间戳在线转换工具:https://tool.lu/timestamp/

AES加密:http://tool.chacuo.net/cryptaes

aes在逐渐的取代md5值、在解密的过程中一定要知道密码和偏移量不然是借不出来的。

url网址编码:http://www.esjson.com/urlEncode.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值