​ ping www.baidu.com 这种大站时,给出来的 IP 一般不是真实 IP 。

​ 像百度这样的大厂一般会在全国各地架设 CDN(Content Delivery Network),即内容分发网络。

​ CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。简言之就是既减少主机负担,又方便用户访问。CDN 的关键技术主要有内容存储和分发技术。

​ 显然如果你渗透的是 CDN 站而不是主站的话,是没有意义的。


​ web 的大致组成架构:网站源码、web 中间件、操作系统、数据库。

​ web 安全研究的大致就是这几个方向。


​ 信息搜集常用的搜索引擎语法:

  • inurl ,URL 存在关键字的网页。如搜索 inurl:edu.cn ,将返回 url 中存在 edu.cn 的结果。

  • site ,指定域名。

  • intitle ,标题中存在关键字的网页。

  • intext ,正文中存在关键字的网页。如搜索 intext:Powered by Discuz ,可检索到一些用 Discuz CMS 构建的网站。

  • filetype ,指定文件类型。

​ 应用举例:intitle:管理系统 filetype:php ,查询标题含“管理系统”,且用 php 构建的网页。


​ 域名搜集在渗透中的作用。

​ 举个例子,学院官网(computer.xxx.edu.cn)和学校官网(www.xxx.edu.cn),很明显只存在一个子域名不同的差别。由于二者的页面布局不一样,可能学院官网和学校官网用的是两套不一样的程序来构建的,但很可能两个域名解析到的是同一个 IP 。事实就是这样,ping 一下就知道了。

​ www 域名对应该 IP 的主页,computer 对应该 IP 的分页。如果我们授权对 www.xxx.edu.cn 进行渗透,但没找到突破口,而此时搜集到一个 computer 的域名,发现该域名与 www 共享一个 IP ,那么可以从 computer 对应的站找突破口。

​ 除了搜集子域名,还需要搜集域名后缀,如 .com、.org、.top 。可利用相关工具,或进行域名注册查询,根据如 xxx.com 的注册信息查询。


​ 本地 hosts 。

​ 路径:C:\Windows\System32\drivers\etc\hosts

​ 作用:不管是访问网站,还是 ping 之类的,在进行 DNS 域名解析时,首先是在本地 hosts 文件里搜索,搜索不到再请求 DNS 服务器进行解析。假设在里面加上 1.2.3.4 www.baidu.com ,然后再 ping 一下,会发现域名解析成了 1.2.3.4 的 IP 。当然,此时会 ping 不通,访问 www.baidu.com 也会失败。


​ 目录扫描工具原理:字典、发包、根据响应状态码判断目录。理论上自己可以写一个出来,关键在于字典。

​ 子域名扫描工具也是如此,但一般不好用,信息量大且无序,难以找到真正有用的一些域名。一种较好的办法是使用 Google ,搜索如 site:baidu.com ,然后选取前 10~20 页作为搜集内容。


​ 有的程序判断你是 PC 端访问还是移动端访问,仅仅是通过 UA 头判断。“同一个用户只能投票一次”这种判断是不是同一个访问者,是通过 IP 地址判断。这些简单的判断,我们可以通过改 UA 、挂代理来绕过。

​ APK 反编译、APP 抓包获得的网站,用 PC 端访问当然会出错(如显示 400 Bad Request),因为请求包不对,得改为手机端访问时的包格式。


​ 在进行目录扫描的时候,扫 IP 地址比扫域名更好。有的网站在构建的时候,IP 地址与域名解析的目录是不一样的。通常 IP 地址对应的解析目录比域名更高一级,IP 地址解析的是根目录,这往往也是有的网站换做用 IP 地址访问时会显示禁止访问的原因。


​ IIS 网站安全设置:

  1. 身份验证:https://www.cnblogs.com/WarBlog/p/11250865.html
  2. IP 地址和域限制:设置指定 IP 和域名访问该网站的权限。

​ 0777 文件权限含义解析:

​ 文件权限通常是三位数字表示,这里的首位 0 表示的是十进制计数,所以实际的值是 777 。

​ Linux 将用户分为 所有者(Owner)、组成员(Group)、其他(Other)、超级用户(Root) ,文件权限由用户的三种类型组成,每一位代表一种用户的权限:[所有者][组成员][其他用户]

​ 权限值由对应的描述计算得来,对应关系:

  • r → 4 可读
  • w → 2 可写
  • x → 1 可执行
  • - → 0 无权限

​ 所以 0777 权限含义为:所有者可读可写可执行,组成员可写可读可执行,其他用户可写可读可执行。


​ 一般为了网站安全,上传目录会设置文件权限,如不可执行脚本,目的是防止上传限制被突破。此时上传脚本进来还是没用的,应该尝试把脚本传到其他具有可执行权限的目录里。


​ 探测服务端 web 中间件类型,抓个包看响应头即可。


​ 识别操作系统类型的方法:

  1. 如果有网站,更改大小写访问如 www.xxx.com/index.phP 。如果正常,则是 Windows ,因为 Windows 对大小写不敏感。如果访问失败,则是 Linux 。

  2. ping 一下看 TTL 。但由于 TTL 值可被修改且不能具体到操作系统的某个版本,所以一般不用。

    TTL(Time To Live,生存时间)是 IP 协议包中的一个值,当我们使用 Ping 命令时,本地计算机会向目的主机发送数据包,但是有的数据包会因为一些特殊的原因不能正常传送到目的主机,如果没有设置 TTL 值的话,数据包会一直在网络上面传送,浪费网络资源。数据包在传送的时候至少会经过一个以上的路由器,当数据包经过一个路由器的时候,TTL 就会自动减 1 ,如果减到 0 了还是没有传送到目的主机,那么这个数据包就会自动丢失。

    例如:如果一个主机的 TTL 是64,当它经过 64 个路由器后还没有将数据包发送到目的主机的话,这个数据包就会自动丢弃。

    常见操作系统的 TTL:

    • WINDOWS NT/2000 TTL:128
    • WINDOWS 95/98 TTL:32
    • UNIX TTL:255
    • LINUX TTL:64
    • WIN7 TTL:64
  3. nmap 扫描。


​ 识别数据库类型的方法:

  1. 根据网站的构建语言推断,如果 PHP 常用 MySQL 。
  2. nmap 扫描开放端口,通过端口识别数据库。
    • MySQL:3306
    • Oracle:1521
    • SQL Server:1433
    • DB2:50000
    • PostgreSQL:5432
    • MongoDB:27017
    • pointbase:9092
    • Sybase:5000
    • Redis:6379
    • memcached:11211

​ 越权,指越过该角色原有的权限,访问了没有授权的资源或信息。越权分为水平越权和垂直越权。

  • 水平越权:相同级别(权限)的用户或同一角色的不同用户之间的越权。

  • 垂直越权:不同级别之间或不同角色之间的越权,又分为向上越权和向下越权。


​ 拖库,即数据库中数据的导出操作。


​ DoS 与 DDoS 。

​ DoS 是拒绝服务(Denial of Service)的缩写,DDoS 是分布式拒绝服务(Distributed Denial of Service)的缩写。它是一种拒绝服务攻击的形式,与普通的 DoS 攻击不同,DDoS 攻击利用了分布在多个不同地点的多个计算机(或者被感染的设备)来同时向目标系统发送大量的请求,从而超出目标系统的处理能力,使其无法正常提供服务,导致服务不可用。

​ DDoS 攻击的特点是攻击源点分布广泛,因此更具破坏性和难以应对。攻击者可以通过操纵大量被感染的计算机、利用僵尸网络或其他分布式方法,协调大规模的攻击。

​ 与传统的 DoS 攻击相比,DDoS 攻击更难以识别和防御,因为攻击流量来自多个不同的源点,常规的防御手段可能无法有效拦截所有恶意流量。防御 DDoS 攻击需要综合运用流量过滤、入侵检测系统、负载均衡、分布式防御系统等技术手段,以及协同网络服务提供商和安全专家的合作。


​ CC 攻击。

​ CC 攻击是 DoS 攻击的一种形式,全称为“连接消耗”(Connection Consumption)攻击。在这种攻击中,攻击者通过向目标系统发送大量的连接请求,消耗目标系统的资源,使得正常用户无法访问或使用该系统的服务。

​ CC 攻击通常是通过利用大量的虚假请求或无效的连接请求来占用目标系统的资源,例如网络带宽、CPU 和内存等。这些请求可能来自于恶意构造的程序或者被感染的计算机,也可能是通过利用漏洞或特定的网络工具发送的。

​ CC 攻击的目的可能是多种多样的,包括对目标系统造成破坏、影响其正常运行、使其服务不可用,或者用作其他更复杂的攻击的一部分。

​ 为了应对 CC 攻击,网络管理员可以采取一系列的防御措施,包括使用防火墙、入侵检测系统(IDS)、入侵防御系统(IPS)等来过滤恶意流量,同时定期更新系统补丁以修补已知漏洞,以及使用流量限制和访问控制等方法来限制连接数量和频率。


​ 0day 的含义是破解,是指一个软件或系统中存在的安全漏洞,而开发者还没有发布相应的补丁或修复程序。这意味着攻击者可以利用这个漏洞来进行攻击,因为开发者还没有意识到漏洞的存在或者尚未提供解决方案。

​ 0day漏洞通常是黑客或安全研究人员在软件或系统发布之前发现的。由于开发者还没有意识到漏洞的存在,所以被利用的时间窗口被称为“零日”(Zero-day)。一旦漏洞被开发者或安全研究人员发现,他们将开始开发并发布补丁来修复该漏洞,此时漏洞将不再是 0day 漏洞。

​ 在 Web 方面,比如某一开源 CMS 发布出来,被攻击者找到 0day 漏洞,但漏洞并没有公开,也没有提交给厂商,所以也就没有补丁。这种情况下使用 0day 攻击此系列的网站可以说是百发百中,使用这一 CMS 的所有用户都可能受波及。由此可见,用户量越大,0day 的威力越大。


​ exp,即 exploit,漏洞利用代码。

​ poc ,漏洞验证代码。

​ payload ,可以理解为 exp 是“大”,而 payload 是“小”。payload 也是 exp 的核心部分。


​ 有时候某个 MD5 或其他的哈希值解不出,可能是因为它加了盐。

​ 在密码学中,通过在密码任意固定位置插入特定字符串,让散列后的结果和使用原始密码的散列结果不相符,这样一个过程我们称之为“加盐”。

​ “盐值”是一组随机的字符串,被称为 Salt 。Salt 可以插在最前面、最后面,也可以插在中间,可分开插入也可倒序。


​ CMS(Content Management System)内容管理系统,主要是为了方便发布网络内容而存在的一体化 Web 管理系统。

​ 通常 CMS 有一个后台,登录后台进入一个可视化的操作界面,便可对网站进行一系列操作,比如发布内容、创建用户。

​ 若依就是一个 CMS 。

​ 用框架开发,叫一次开发。用 CMS 开发,叫二次开发。


​ 文件 MD5 值的生成命令:certutil -hashfile filename MD5


​ 如果还想玩玩用这个 CMS 建的站,可以搜:

  1. intext:Powered by xxx
  2. inurl:该CMS的关键文件路径(不带文件名)

​ 写漏洞分析报告时,要清楚该漏洞涉及哪一层面:操作系统、网站源码(框架、CMS,还是自己写的)、中间件、数据库,还是第三方软件(如phpAdmin)。是否涉及权限,涉及什么权限,做好风险评估。


​ 根据网站主要功能测漏洞,如:电商——交易、门户——综合、论坛——XSS 。


​ VPS(Virtual Private Server) 虚拟专用服务器技术,将一台服务器分割成多个虚拟专享服务器的技术。每个 VPS 可分配独立公网 IP 地址、独立操作系统、独立内存、独立 CPU 资源、独立执行程序和独立系统配置等。即相当于一台服务器被分割成多台虚拟机,每台虚拟机作为一个 VPS 供外界使用。

​ 拿租房来比喻,同样是租房子,有的房子是一套房子隔成很多间(VPS),每间都有厨房与卫生间,有的房子租的就是整套房子(云服务器)。 

  VPS 的虚拟机运行于一台物理服务器之上,云服务器的虚拟机运行于物理服务器集群之上。

​ 云服务器就是一些实际的硬件设备,通过虚拟化技术,可以大规模统一调度,并当成一台机器的技术。你看不到它在哪里,看不到它的 CPU、内存、硬盘,但是你可以轻松把它当成一台现实中的主机来操作,无论是配置软件、测试性能、还是上传文件都和传统服务器没什么区别。

  更重要的是云服务器可以动态平衡负载,当你的带宽、内存、硬盘不够用的时候,可以随时点击鼠标增加相应服务,通过弹性的调整,来实现满足各种变化的需求,同时还能控制成本,这就是云服务器最大的卖点。

  VPS 是一台真实主机虚拟成多个小主机,性能往往得不到保障,而云服务器是数量庞大的服务器阵列,在均衡负载之后诞生很多虚拟主机,无论是数据安全还是性能都有基本的保证。