渗透基础知识入门(自学笔记)

渗透基础知识入门


学渗透,要学的东西还是比较广,需要有一些基础知识作铺垫开始学,而且作为一个刚踏上学习道路不久的小伙子更应该在学习道路中不断补充更多基础知识,如编程语言,网络知识等,该篇笔记做一些基础知识的铺垫,主要围绕网络知识(域名,DNS,数据包),操作系统,数据库,Web组成架构(网站源码,操作系统,中间件,数据库),端口,Web相关安全漏洞介绍拓展后门常见的加密方式


网络知识

IP,域名,DNS,Host

    比方说,我现在想日了某站点,那么总应该知道这个站点是哪个名字或者有什么唯一标识吧,这时候就有了IP(每一个网络和主机都会有一个逻辑地址,在交换数据时,它用于防止网络上的通信发生错误)的概念,某站点部署在一台服务器上,那么你知道这台服务器的IP地址就可以访问这台服务器进而转到你想去的站点(在浏览器中http/https协议+ip默认连接的是该服务器上的80/443端口),
但是由于IP不好记(是四个0-255的数字加上把这四个数字分隔开的共三个点组成),因此衍生了域名,又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用来代替IP地址,方便好记,
但是域名又如何和IP建立上联系?这时候便衍生了DNS域名系统,是一个将域名和IP地址相互映射的分布式数据库(使用UDP端口53)。
实际场景中我们经常会通过域名访问同一些常用的网站,那么每次将域名转换为IP去请求对应的服务器会有些浪费,我们实际上可以将这个常用的映射关系缓存/存储在本地,那么就衍生出了Host,与DNS一样是做域名解析的,但是这个解析发生在本地且仅依赖本地文件而并非服务器上,这样子就可以减少服务器压力,并加快域名解析,Host优先级高于DNS,也就是说访问某个域名的时候计算机先从本地Host文件查找是否有映射关系,有的话就返回该域名对应的IP地址,没有的话再进行DNS域名解析。

  1. 域名可以有多级,看的时候从右左数,比如”xxx.
    com.cn“中,com是一级国家域名c下的二级域名。知
    道域名有什么用呢?可以给安全测提供更多的测试
    点,获取更多的相关信息。
  2. DNS安全也是一个点,既然DNS作用是将域名解析
    为IP,(1)那么可以利用虚Internet地址替换掉域名系统表地址(缓存投毒),(2)可以劫持个网络范围内拦截域名解析的请求作恶意修改(DNS劫持/域名劫持)(3)可以控制大批僵尸网络利用真DNS协议栈发起大量域名查询请求还可以利用工具软件伪造IP发送海DNS查询,第(3)点也是DNS DDOS击

Web组成架构

    Web的组成为网站源码,操作系统,中间件,数据库。一个前后端分离的Web应用必然是由前端人员和后端人员各编写一套代码“指挥”该应用如何运行。而这个Web应用部署在哪个操作系统下(Windows还是Linux?)也是我们需要探究的一个点。还有搭建网站的中间件(中间件并不是一个具象的东西,只要能起到连接两个事物的作用那么它就是中间件),还有可以用于存储海量数据的数据库。

  1. 网站源码用于白盒测试的时候会提供很大的助,特别是知道一些敏感接口的请求信息。
  2. 虽然目前大多数Web应用都是部署在Linux统上,但是为了防止意外还是需要对目标操作系进行探测,渗透过程中要按照不同的操作系统朝各自的漏洞方向发展
    探测的方法有:
    1. 利用大小写敏感判断对方操作系统。Linux对大小写敏感,Windows对大小写不敏感。如www.examp.com改为www.exAMp.com能正常访问则为windows
    2. nmap扫
    nmap -sS -A [ip]
  3. 如果不要求的很严谨的情况下,我们可以粗略的认为web服务器,web中间件,web容器是一个东西,如果要加以区别,就是web服务器包含web中间件,web中间件包含web容器.有Apache,Tomcat,Nginx等一系列连通应用系统和系统软件的一类软件。(ps:这里本人对于中间件的认识比较浅薄,后续在学习过程中应强化对这个东西的认知)。
  4. 对于网站数据库的识别也需要知道,比如sql注入的时候要根据不同的数据库进行不同的操作。
    1. 一般的网站编写语言会和其使用的数据库相关,比如php编写的网站一般用mysql,其他的如asp+access等。
    2. 知道了服务器ip可以用nmap端口扫描,因为数据库运行的时候会有一个默认端口号,比如mysql在3306,SQL server在1433,Oracle在1521,Postgresql在5432,mongoDB在27017等
    3. 在地址栏上显示的连接所带的参数后面加些特殊符号,看它的报错信息,如
    HTTP://www.****.com ID = 1’

数据包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KhxUql4l-1659535269162)(./images/data_package.png)]
这是抓取了一个页面发起请求后产生的数据包图片。

  1. 第一行为请求行:提交方式 url HTTP版本,http一般在80端口,https一般开在443端口,https运行在SSL/TLS之上,SSL/TLS运行在TCP之上,传输的内容都经过加密,需要CA申请证书(交钱)。
  2. 请求头:该数据包中二到最后一行均为请求头
    1. Host为主机(IP:port),
    2. connection用来告诉服务器是否可以保持固定的http连接。http是无连接的(close),http/1.1默认使用Keep-Alive来维持http连接。作用是当浏览器需要多个文件时比如一个html文件和相关的图形文件不需要每次都建立http连接。
    3. Cookie:浏览器用这个属性向服务器发送 Cookie。Cookie 是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。
    4. Referer : 表 明 产 生 请 求 的 网 页 URL 。 如 比 从 网 页 /icconcept/index.jsp 中 点 击 一 个 链 接 到 网 页
      /icwork/search , 在 向 服 务 器 发 送 的 GET/icwork/search 中 的 请 求 中 , Referer 是
      http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪 Web 请求是从什么网站来的。
    5. Content-Type:用来表名 request 的内容类型。可以用 HttpServletRequest 的 getContentType()方法取得。
      Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是 ISO-8859-1.
    6. Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到 Web 响应之后先解码,然后再检查文件格式。

返回数据包数据格式:懒得写了,主要还是得记下状态码。
1** :信息,请求收到,继续处理
2** :成功,行为被成功接收,理解和采纳
3** :重定向向其他的路由,为了完成请求,必须进一步执行的操作
4** :客户端错误
5** :服务器错误


CDN服务

CDN服务的意义在于防止远程用户访问过慢,其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
因此,如果我们渗透的是一台服务节点,那么该测试就算拿下了该IP的服务器节点也毫无意义。因此需要做的事情是绕过CDN进行测试。

  1. CDN的判定
    1. 超级Ping工具通过在多地对该域名进行Ping服务,如果Ping出来不同的IP则该站点开通了CDN服务
  2. CDN的绕过
    1. 子域名扫描
      1. 有些站长只会在主域开启CDN,因为主域访问的人最多,子域访问的人比较少,比如我可能会在example.com加CDN,但我不会在www.example.com加CDN,而且也不会在移动端m.example.com加域名。因此可以通过子域名扫描工具如OneForAll或者Fofa(这里如果只是扫子域的话好像OneForAll好用点)
    2. 邮件服务查询
      1. 对方的邮件服务器向我方发送邮件一般不会开启CDN求快
    3. 国外地址请求
      1. 网站一般不会把CDN部署在国外,因为国外人员访问国内网站本来就少数
    4. 遗留文件
      1. 扫全网-----把整个网络,全部对应的网站进行访问(一些站点在搭建之初,会用一些文件测试站点,例如“phpinfo()”文件,此类文件里就有可能包含了真实的IP地址。)
      2. 工具:fuckcdn,zmap
    5. 黑暗引擎
      1. 使用黑暗引擎如Fofa,shodan,zoomeye搜索特定文件(黑暗引擎会定期把网站比较深层次的东西爬虫爬到网站的数据库里面,实时更新)
    6. DNS历史记录
      1. 查询网站的dns记录可能之前没有使用到CDN,但还是有一些历史记录,之前的ip地址解析到哪里去,但是之后又用了CDN。就是通过查看历史记录,看他之前没有生成CDN的情况,ip地址就说不定就是现在的地址。
    7. DDOS攻击,把CDN流量全部打光
    8. 获取真实IP的工具get-site-ip.com

端口

根据提供的服务类型不同,端口可分为以下两种:
TCP端口:CP是一种面向连接的可靠的传输层通信协议。

UDP端口:UDP是一种无连接的不可靠的传输层协议。

TCP协议和UDP协议是独立的,因此各自的端口号也互相独立。

扩展部分

  1. 后门的概念
    后门也是一种网络病毒,其目的在于实现对操作系统的持续控制,并致力于提高隐蔽性,比如利用注册表。
    分类:
    1.远控木马
    2.Webshell
    网页后门,如一句话木马传参。
  2. 域名扫描只能扫描出来域名文件,而域名文件只是占服务器资源的一小部分;IP扫描可以直接扫描出来服务器的根目录,得到的信息更多,nmap扫描ip的一个大作用是知道该服务器上开了什么服务,若刚好有相应漏洞即可攻击
  3. 墨者学院,是一个可以练习各种漏洞的网站
  4. 加密(密码学)也是需要进行了解的一个点,因为某些参数的传递过程中会进行加密,如果对一些加密方式的特征有所了解的话比较好解密。
    1. MD5加密。
      MD5加密是一个最常用的加密方式,是一个不可逆的加密方式。但是可以通过枚举解密(解密平台事先记录好一些常用加密值对应的MD5码,如123对应ahisdqwe),输入密文的时候平台通过其数据库查询是否有记录该映射关系。
    2. SHA1 SHA256 SHA512加密。
      这三种算法加密出来的密文长度各不相同,但同种算法加密出来的密文长度相同。
    3. URL编码
      不常见的字符在url中会进行转换,如空格会被替换为%20,"被替换为%22,#被替换为%23,!被替换为%21单引号’不会被替换。
    4. Base64编码
      后面常会跟一个=或者==
    5. Unicode编码
      每两位字符转为如%u1234的%u+四位数字形式

加密方式的获取也可以通过白盒测试代码审计获取


你可能感兴趣的:(渗透测试,网络,安全,网络安全)