一、域名

域名:inurl:域名.xxx

二级域名、多级域名:inurl:XXX.域名.xxx

意义:二级域名、多级域名是给你的测试提供多种可能性,通过跳转页面等方式,对web端口页面进行漏洞扫描、渗透测试;

二、DNS

DNS:域名系统服务协议。是一种分布式网络目录服务,主要用于域名与IP地址的相互转换,以及控制因特网的电子邮件发送;

本地HOSTS与DNS的关系:把HOSTS文件看作是一个你手写的、放在家门口的“私人通讯录”。DNS是整个社会的“公共电话亭”。你找人(访问网站)时,必须先翻自己的私人通讯录(HOSTS),找不到才会去公共电话亭(DNS服务器)查询;

HOSTS文件:这是一个存在于你电脑(或手机)上的文本文件。你可以在里面手动写入 IP地址 和 域名 的对应关系。比如:192.168.1.1   www.example.com

CDN:CDN 的全称是 Content Delivery Network,即内容分发网络。

  • 加速访问:让用户就近获取内容,降低延迟。

  • 减轻源站压力:大部分请求都由CDN节点处理了,原始的服务器压力就小了很多。

  • 提高可用性和安全性:如果一个节点坏了,会自动切换到其他节点。CDN也能在一定程度上防御DDoS攻击。

CDN与DNS的关系:DNS是CDN的“调度员”和“指路人”。 CDN必须依靠DNS来实现“让用户访问最近的节点”这个功能;

常见的DNS攻击:

1. DNS DDoS攻击(分布式拒绝服务攻击)

  • 方式:攻击者控制大量“肉鸡”(被病毒感染或控制的计算机),向目标DNS服务器发送海量的虚假查询请求,导致DNS服务器资源耗尽(CPU、内存、带宽),无法处理正常的查询请求。

  • 结果:所有人都无法通过这个DNS服务器解析域名,导致大面积断网。

  • 变种DNS反射放大攻击。攻击者伪造受害者的IP地址,向开放的DNS服务器发送一个小查询请求,但诱使DNS服务器向受害者返回一个巨大的响应数据包,从而用大流量冲垮受害者。

2. DNS缓存投毒(DNS Cache Poisoning)

  • 方式:这是一种欺骗攻击。攻击者利用DNS协议的漏洞,向DNS服务器发送伪造的DNS响应信息,抢在真正的响应之前“骗”过DNS服务器。DNS服务器会将这个虚假信息(比如把 www.your-bank.com 指向攻击者的钓鱼网站IP)缓存起来。

  • 结果:之后所有使用这个DNS服务器的用户,在访问正常网站时,都会被引导到攻击者设置的恶意网站上,从而可能被盗取密码、银行卡信息等。

3. DNS劫持

  • 方式:这是一种比缓存投毒更“底层”的攻击。攻击者不是攻击DNS服务器本身,而是劫持了用户与DNS服务器之间的通信通道,或者直接篡改路由器、运营商层面的DNS设置

    • 本地劫持:你的电脑中了木马,修改了你的HOSTS文件或本地DNS设置。

    • 路由器劫持:你家路由器被破解,DNS设置被篡改。

    • 运营商劫持(也称为中间人攻击):电信运营商为了推送广告,在HTTP层面强制将你不存在的域名解析到他们的广告服务器上。(这也是为什么现在大力推行HTTPS的原因之一)

  • 结果:无论你想访问什么网站,都可能被强插广告,或者被引导到钓鱼网站。

4. 域名劫持

  • 方式:这不是技术攻击,而是社会工程学攻击或对域名注册商的攻击。攻击者通过盗取你的域名管理密码,或者利用域名注册商的漏洞,直接将你的域名转移到他的名下,或者修改域名的DNS服务器地址。

  • 结果:你的整个网站就彻底归别人控制了,流量可以任其随意引导。这是最严重的DNS攻击之一。

三、脚本语言:

常见的脚本语言有哪些:asp,aspx,php,jsp,javaweb,pl,py,cgi等

(1)PHP 小众型网站开发

(2)java-mvc大型网站开发

(3)python-django.flask

(4)asp,aspx,jsp等等

不同脚本类型与安全漏洞的关系:Web后端类(PHP、ASP)、动态全能类(Python、Ruby、Node.js、Perl)、以及编译型语言(Java、Go、C/C++)

A. PHP(最经典的Web后端语言)
  • 常见漏洞:

    1. 文件包含 (LFI/RFI - Local/Remote File Inclusion):这是PHP的“特色漏洞”。由于PHP允许通过 include 或 require 动态包含文件,如果开发者直接使用用户输入(如 ?page=userinfo.php)而不加过滤,攻击者可以包含任意文件,甚至执行恶意代码。

    2. SQL注入:早期PHP开发中,很多教程直接使用字符串拼接的方式操作数据库(如mysql_query("SELECT * FROM user WHERE id=" . $_GET['id'])),导致SQL注入泛滥。

    3. 代码执行:PHP 提供了 eval()assert()preg_replace() 的 /e 修饰符等函数,如果用户输入能传入这些函数,极易造成代码执行漏洞。

    4. 弱类型比较:PHP 的 == 会进行类型转换,导致 "0e12345" == "0e54321" 为真(因为都被当作科学计数法转成0),这在哈希校验等场景下会引发逻辑漏洞。

B. JavaScript(Node.js / 前端)
  • 常见漏洞:

    1. 跨站脚本 (XSS - Cross Site Scripting)这是JavaScript的头号漏洞。前端JavaScript直接操作DOM,如果开发者将用户输入的内容(如评论、用户名)直接插入页面而不进行转义,攻击者可以注入自己的脚本窃取Cookie或劫持用户会话。

    2. 原型链污染:这是Node.js中非常典型的一类漏洞。JavaScript 基于原型链继承,如果攻击者能修改 Object.prototype,就能改变所有对象的默认行为,通常导致拒绝服务或远程代码执行。

    3. 依赖库漏洞:Node.js 拥有庞大的 npm 生态。开发者可能引入了包含漏洞的第三方包(如历史上的 event-stream 事件),导致供应链攻击。

    4. 不安全的反序列化:Node.js 的 eval() 或某些JSON解析库如果处理不当,可能导致代码执行。

C. Python / Ruby(通用型脚本)
  • 常见漏洞:

    1. 服务器端模板注入 (SSTI - Server Side Template Injection):这是Python和Ruby的高危漏洞。如果开发者使用Jinja2(Python)或ERB(Ruby)模板引擎,并将用户输入直接拼接到模板中,攻击者可以通过模板语法执行任意代码。例如在Flask的Jinja2中,{{ config }} 可以泄露配置,{{ ''.__class__.__mro__[2].__subclasses__() }} 可以寻找执行系统命令的方法。

    2. 命令注入:Python的 os.system() 或 subprocess.Popen(),Ruby的反引号 ` 如果拼接了用户输入,很容易造成命令执行。

    3. 路径遍历:在使用 open(filename) 读取文件时,如果没有过滤 ../,攻击者可以读取服务器上的任意文件。

    4. 不安全的反序列化:Python 的 pickle 模块在反序列化数据时,可以执行任意代码。Ruby的 Marshal.load 也存在类似问题。

D. Java / C# / Go(强类型编译型)
  • 常见漏洞:

    1. SQL注入(MyBatis/XML配置不当):虽然Java多用预编译(PreparedStatement)防止SQL注入,但如果开发者错误地使用了 ${}(MyBatis中)而不是 #{},依然会产生SQL注入。

    2. XML外部实体注入 (XXE - XML External Entity):Java中很多XML解析库(如DOM4J、SAX)默认支持外部实体,如果解析了用户上传的恶意XML文件,可能导致内网端口探测、文件读取或拒绝服务。

    3. 反序列化漏洞:这是Java历史上最著名的漏洞之一(如Apache Commons Collections)。Java应用常常在Session、RPC(远程过程调用)中传输序列化对象,如果攻击者能提交恶意的序列化数据,就能在服务器端触发任意代码执行。

    4. 表达式注入:Java的SpEL、OGNL表达式(Struts2框架)如果解析了用户输入,会导致代码执行(著名的Struts2漏洞大多源于此)。

    5. 内存安全(Go/C/C++区别)

      • Go:内存安全,有垃圾回收,基本不存在缓冲区溢出。

      • C/C++极易产生缓冲区溢出,这是最危险的漏洞之一。由于C/C++直接操作内存指针,不进行边界检查,strcpygets 等函数会导致栈溢出,攻击者可以直接劫持程序执行流程,获得服务器控制权

漏洞挖掘代码审计与脚本类型的关系:

四、后门:下次更容易入侵获取信息 and 提供攻击的路径

什么是后门?有哪些后门?

后门在安全测试中的实际作用:

关于后门需要了解哪些?(玩法、秒杀

五、Web:

web的组成架构模型:

(1)网站源码:分脚本类型,分应用方向覆盖;

(2)操作系统:windows,linux

(3)中间件(搭建平台):apache,lis,tomcat,nginx

(4)数据库:mysql,access,mssql,oracle,Sybase,db2,postsql

架构漏洞安全测试:

为什么要从web层面为主为首:

六、web相关安全漏洞:

(1)WEB源码类的对应漏洞:

(2)SQL注入,上传,xss,代码执行,变量覆盖,逻辑漏洞,反序列化等

(3)WEB中间件对应漏洞:

(4)WEB数据库对应漏洞:

(5)WEB系统层对应漏洞:

(6)其他第三方对应漏洞:

(7)APP或PC应用结合类:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐