0x00 概念名词
0x00.1 域名
0x00.1.1 什么是域名
- 域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
- 由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
0x00.1.2 域名注册和多级域名
- 域名注册是Internet中用于解决地址对应问题的一种方法。根据中国互联网络域名管理办法,域名注册服务机构及域名注册管理机构需对申请人提出的域名是否违反了第三方的权利和申请人的真实身份进行核验。每一个相同顶级域名中的二级域名注册都是独一无二的,不可重复的。但不同顶级域名中的二级域名可以是相同的,例如baidu这个二级域名可以在.com中注册,也可以在.cn中注册,也可以在.xyz中及其他多种顶级域名中注册,且每个域名都起到同样的作用。因此,在网络上域名是一种相对有限的资源,它的价值随着注册企业和个人用户的增多而逐步为人们所重视。因特网采用层次树状结构命名方法。域是名字空间中一个可被管理的划分(按机构组织划分),域可被划分为子域,子域可再被划分,即形成了顶级域名、二级域名、三级域名等。从右向左为顶级域名、二级域名、三级域名等,用点隔开。如:tieba.baidu.com,它由三个标号组成, com即为顶级域名,baidu为二级域名,tieba即为三级域名。且域名不分区大小写。详请可参考https://blog.csdn.net/m0_37263637/article/details/85157611
- 注册地:万网、阿里云、腾讯等等
- 二级域名及多级域名
- news.baidu.com
- tieba.baidu.com
- guoji.news.baidu.com
0x00.1.3 域名发现对于安全测试的意义
- 进行渗透测试时,其主域名找不到漏洞时,就可以尝试去测试收集到的子域名,有可能测试子域名网站时会有意向不到的效果,然后可以由此横向到主网站。
- 旁站攻击
0x00.2 DNS
0x00.2.1 什么是DNS
- DNS是计算机域名系统(Domain Name System 或 Domain Name Service)的缩写,它是由解析器和域名服务器组成的,作用是把域名转换成为网络可以识别的ip地址。比如我们上网时输入的 www.163.com 会自动转换成为202.108.42.72。
0x00.2.2 本地HOSTS与DNS的关系
- Hosts是一个没有扩展名的系统文件(路径C:\Windows\System32\drivers\etc),可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。DNS就是进行域名解析的服务器。当访问一个网站时系统将从DNS缓存中读取该域名所对应的IP地址,当查找不到时就会到系统中查找hosts文件,如果还没有那么才会向DNS服务器请求一个DNS查询。
- 域名解析IP地址会先查HOSTS文件,如果没有才会去DNS服务器进行解析
0x00.2.3 CDN与DNS的关系
- cdn全称是内容分发网络。其目的是让用户能够更快速的得到请求的数据。简单来讲,cdn就是用来加速的,他能让用户就近访问数据,这样就更更快的获取到需要的数据。举个例子,现在服务器在北京,深圳的用户想要获取服务器上的数据就需要跨越一个很远的距离,这显然就比北京的用户访问北京的服务器速度要慢。但是现在我们在深圳建立一个cdn服务器,上面缓存住一些数据,深圳用户访问时先访问这个cdn服务器,如果服务器上有用户请求的数据就可以直接返回,这样速度就大大的提升了。
- cdn实际上是一个就近访问,那么现在有一个问题是,我们怎么知道用户的所在位置从而给他分配最佳的cdn节点呢。这就需要dns服务来进行定位了。当我们通过使用dns服务的时候,可以根据他使用的LDNS服务器来进行一个定位,例如我们的调度服务器看到他是来自深圳电信的LDNS服务器,那么我们就认为该用户来自深圳电信,然后调度服务器可以让该用户去访问深圳电信的CDN服务器,这样就让用户访问到了最优的cdn节点。通过dns服务我们可以很快的定位到用户的位置,然后给用户分配最佳cdn节点。
CDN检测工具:http://ping.chinaz.com/
- DNS服务器:114.114.114.114 8.8.8.8
0x00.2.4 当用户请求一个文件时,cdn的工作过程
- DNS请求当地的local DNS
- 当地local DNS递归的查询服务器的gslb
- 服务器根据local DNS分配最佳节点,返回IP
- 用户获得最佳接入IP,访问最佳节点
- 如果该节点没有用户想要获取的内容,则通过内部路由访问上一节点,直到找到文件或到达源站为止
- cdn节点缓存该数据,下次请求该文件时可以直接返回
0x00.2.5 常见的DNS安全攻击
0x00.2.5.1 缓存投毒(DNS污染)
- 通常也称为域名系统投毒或DNS缓存投毒。它是利用虚假Internet地址替换掉域名系统表中的地址,进而制造破坏。当网络用户在带有该虚假地址的页面中进行搜寻,以访问某链接时,网页浏览器由于受到该虚假条目的影响而打开了不同的网页链接。在这种情况下,蠕虫、木马、浏览器劫持等恶意软件就可能会被下载到本地用户的电脑上。
0x00.2.5.2 DNS劫持
- DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。这类攻击一般通过恶意软件来更改终端用户TCP/IP设置,将用户指向恶意DNS服务器,该DNS服务器会对域名进行解析,并最终指向钓鱼网站等被攻击者操控的服务器。
0x00.2.5.3 DNS DDOS攻击
- 针对DNS的DDoS攻击通过控制大批僵尸网络利用真实DNS协议栈发起大量域名查询请求,利用工具软件伪造源IP发送海量DNS查询,发送海量DNS查询报文导致网络带宽耗尽而无法传送正常DNS查询请求。发送大量非法域名查询报文引起DNS服务器持续进行迭代查询,从而达到较少的攻击流量消耗大量服务器资源的目的。
0x00.2.5.4 反射式DNS放大攻击
- DNS 反射放大攻击主要是利用 DNS 回复包比请求包大的特点,放大流量,伪造请求包的源 IP 地址为受害者 IP,将应答包的流量引入受害的服务器。
0x00.3 脚本语言
0x00.3.1 常见的脚本语言类型
- 脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。 常见的脚本语言有Scala、JavaScript,VBScript,ActionScript,MAXScript,ASP,JSP,PHP,SQL,Perl,Shell,python,Ruby,JavaFX,Lua,AutoIt等。
0x00.3.2 不同脚本类型与安全漏洞的关系
- 不同的脚本语言的编写规则不一样,程序产生的漏洞自然也不一样(代码审计)
0x00.4 后门
0x00.4.1 什么是后门?有哪些后门?
- 后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。
- 类别:网页、线程插入、扩展、C/S后门
0x00.4.2 后门在安全测试中的实际意义
- 例如后门藏在网页上、软件内,悄无声息的进行攻击者想要的操作
0x00.4.3 关于后门需要了解哪些?(玩法,免杀)
深知攻击型再反侦察,防止被相关软件识别到
玩法:网站后门、主机后门
免杀:免除杀软的查杀
0x00.5 WEB
0x00.5.1 web的组成架构模型
- 网站源码:分脚本类型、分应用方向
- 操作系统:windows、linux
- 中间件(搭建平台):apache、iis、tomcat、nginx等
- 数据库:access、mysql、mssql、oracle、sybase、db2、postsql等
0x00.5.2 架构漏洞安全测试简要介绍
- 今后的攻击漏洞和攻击方法都围绕这4方面
0x00.5.3 为什么要从web界面为主为首
- WEB使用率广,源码多。从WEB提权,拿到服务器及其内网
0x00.6 WEB相关安全漏洞
0x00.6.1 web源码对应漏洞
- SQL注入、文件上传、XSS、代码执行、变量覆盖、逻辑漏洞、反序列化等等
0x00.6.2 web中间件对应漏洞
- 未授权访问
0x00.6.3 web数据库对应漏洞
- 版本漏洞
0x00.6.4 web系统层对应漏洞
- 提权漏洞,安全代码执行
0x00.6.5 其他第三方对应漏洞
- 电脑第三方软件
0x00.6.6 APP或PC应用结合类
- 移动端,PC端,网页端
- 逆向破解
0.00.7 演示案例
多级域名的枚举查找(原理,方式)
- Layer子域名挖掘机
- 在线第三方查询平台
- DNS 解析修改后分析(本地或服务)
EXE 后门功能及危害及类似 WEB 后门
- Quasar:生成带后门的exe程序,并主动连接跳板机
APP 类结合 WEB 协议,PC 类结合 WEB 协议
- 逍遥安卓模拟器
- apk数据提取:apkAnalyser(漏了个大洞)
0x00.8 涉及资源
0x01 数据包拓展
0x01.1 网站解析对应
0x01.1.1 简要网站搭建过程
- 可参考:https://blog.csdn.net/weixin_43188825/article/details/103731725
0x01.1.2 涉及到的攻击层面
- 源码,搭建平台,系统,网络层等
0x01.1.3 涉及到的安全问题
- 目录,敏感文件,弱口令,IP以及域名等
0x01.2 HTTP/S数据包
0x01.2.1 关于HTTP和HTTPS
- Request:请求数据包
- Response:响应数据包
- Request:请求数据包
Proxy:代理服务器
- Response:响应数据包
0x01.2.1.1 HTTP和HTTPS的区别
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
0x01.2.1.2 HTTP和HTTPS的简要通信过程
- HTTP通信过程:
- 建立链接——>发送请求数据包——>返回响应数据包——>关闭连接
- 浏览器建立与web服务器直接的连接
- 浏览器将请求数据打包(生成请求数据包)并发送到web服务器
- web服务器将处理结果打包(生成响应数据包)并发送给浏览器
- web服务器关闭连接
- HTTPS通信过程:
0x01.2.2 Request请求数据包数据格式
- 请求行:请求类型/请求资源路径、协议的版本和类型
- 请求行由三个标记组成:请求方法、请求URL和HTTP版本,它们用空格分隔。
- 例如: GET /index.html HTTP/1.1
- HTTP 规划定义了8种可能的请求方法:
- GET:检索URL中标识资源的一个简单请求
- HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
- POST:服务器接收被写入客户端输出流中数据的请求
- PUT:服务器保存请求数据作为指定URL新内容的请求
- DELETE:服务器删除URL中命令的资源的请求
- OPTIONS:关于服务器支持的请求方法信息的请求
- TRACE:web服务器反馈HTTP请求和其头标的请求
- CONNECT:已文档化,但当前未实现的一个方法,预留做隧道处理
- 请求头:一些键值对,浏览器与web服务器之间都可以发送,特殊的某种含义
- HOST:主机或域名地址
- Accept:指浏览器或其他客户可以接受的MIME文件格式,servlet可以根据它判断并返回适当的文件格式
- User-Agent:是客户浏览器名称
- Host:对应网址URL中的web名称和端口号
- Accept-Language:指出浏览器可以接受的语言种类,如en或者en-us,指英语
- connection:用来告诉服务器是否可以维持固定的HTTP连接、http是无连接的,HTTP/1.1使用Keep-Alive为默认值,这样当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接
- Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,他可以记载服务器相关的用户信息,也可以用来实现会话功能
- Referer:表明产生请求的网页URL,这个属性可以用来跟踪web请求是从什么网站来的。
- Content-Type :用来表明request的内容类型,可以用HttpServeletRequest的getContentType()方法取得。
- Accept-Charset:指出浏览器可以接受的字符编码
- Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件传递速度。浏览器在接收到web响应之后再解码,然后再检查文件格式
- 空行:请求头与请求体之间用一个空行分开
- 最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标
- 请求体:要发送的数据(一般post提交时候会用)
- 使用POST传送,最常使用的是Content-Type和Content-Length头标
POST /adduser HTTP/1.1
Host: localhost:8030
Connection: keep-alive
Content-Length: 16
Pragma: no-cache
Cache-Control: no-cache
Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
name=name&age=11
0x01.2.3 Response返回数据包格式
- Response返回数据包数据格式
- 一个响应由四个部分组成:状态行、响应头标、空行、响应数据
- 状态行:协议版本,数字形式的状态代码和状态描述,各元素之间用空格进行分割
- 响应头标:包含服务器类型、日期、长度、内容类型等
- 像请求头标一样,它们指出服务器的功能,标识出响应数据的细节
- 空行:响应头与响应体之间用空行隔开
- 最后一个响应头标之后是一个空行,发送回车符和退行,表面服务器一下不再有头标。
- 响应数据:浏览器会将实体内容中的数据取出来
- 生成相应的页面,HTML文档和图像等,也就是HTML本身
- 一个响应由四个部分组成:状态行、响应头标、空行、响应数据
- HTTP响应码
- 1XX:信息,请求收到,继续处理
- 2XX:成功,行为被成功的接收、理解和采纳
- 200:存在文件
- 3XX:重定向,为了完成请求,必须进一步执行的动作
- 3XX:均可能存在
- 4XX:客户端错误
- 403:存在文件夹
- 404:不存在文件及文件夹
- 5XX:服务器错误
- 500:均可能存在
0x01.3 涉及演示案例
- Burpsuite抓包修改测试
敏感文件扫描工具简要实现
- 第三方检测修改实现XSS攻击
数据包相关检验对比(APP与直接访问)
- CTF或实际应用中部分考题解析(mozhe)
0x01.4 涉及资源
0x02 搭建安全拓展
0x02.1 常见搭建平台脚本启用
- ASP,PHP,ASPX,JSP,PY,JAVAWEB等环境
- win2k3搭建IIS服务器
0x02.2 域名IP目录解析安全问题
- IP地址访问可以发现更多的信息同时经常能找到程序源码备份文件和敏感信息,而域名访问只能发现一个文件夹下的所有文件。网站搭建的时候支持IP访问和域名访问,域名访问的时候一般只会指向某个目录,IP访问的时候指向的是根目录。
0x02.3 常见文件后缀解析对应安全
- 指定后缀名对应某个文件,访问网站出现遇到不能解析的文件就是中间件可能默认或者添加某些设置(比如扩展名与可执行文件路径的映射)导致解析时出现问题。
0x02.4 常见安全测试中的安全防护
- 网和企业内网会限制外部人员访问内部的网站,限制IP地址,规范访问者的权限
- 身份验证和访问控制,基于用户的限制
- 限制IP地址的访问,授权访问-只允许指定IP地址可以访问。 拒绝访问-指定IP地址拒绝访问
0x02.5 WEB源码中敏感文件
- 后台路径
- 配置文件
- 备份文件
0x02.6 web后门与用户及文件权限
- 设置相关权限,禁止来宾用户的权限,导致连接的后门看不到任何东西,它属于防护技巧,同时也是测试里经常碰到的问题
- 设置了执行权限,没有执行权限,文件不给执行,代码就无法正常执行,后门就无法正常使用
- 绕过思路:将后门试着放在其他可以执行的目录。比如,网站根目录或者其他有脚本存放的目录下面。
0x02.7 基于中间件的简要识别
- 通过抓取数据包的返回结果,查询搭建平台信息
0x02.8 基于中间件的安全漏洞
- 可参考https://www.freebuf.com/articles/web/192063.html
- 《web中间件常见漏洞总结.pdf》
0x02.9 涉及资源
- https://www.vulhub.org/
- Web 中间件常见漏洞总结,Vulhub 靶场
0x03 Web源码拓展
- Web源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中Web源码有很多技术需要简明分析。比如:获取某ASP源码后可以采用默认数据库下载为突破,获取某其他脚本源码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为后期的安全测试提供了更多的思路。
0x03.1 关于Web源码目录结构
- 据库配置文件,后台目录,模板目录,数据库目录等
- index.php 根据文件后缀判定
- admin 网站后台路径data 数据相关目录
- install 安装目录
- member 会员目录
- template 模板目录(和网站相关的整体架构)
- data => confing.php 数据库配置文件,网站和数据库的通讯信息,连接账号密码,可以去连接对方数据库,从数据库去得到这个网站的源码里面涉及到的管理员的账号密码。
0x03.2 关于Web源码脚本类型
- ASP,PHP,ASPX,JSP,JAVAWEB等脚本类型源码安全问题
0x03.3 关于Web源码应用分类
- 社交,论坛,门户,第三方,博客等不同的代码机制对应漏洞
- 开源,未开源问题, 框架非框架问题,关于CMS识别问题及后续等
- 拿到对方的源码或者判断这个网站的应用类型之后应该侧重在哪些漏洞上做文章
- 门户网站————————综合类漏洞
- 电商——————————业务逻辑漏洞
- 论坛——————————XSS漏洞
- 博客——————————漏洞较少
- 第三方—————————根据功能决定
0x03.4 关于Web源码其他说明
- 如果对方网站采用的是框架开发的话那么你面对的就是寻找框架的漏洞,如果是非框架的话寻找的漏洞针对的是代码写出来的漏洞(代码审计),比如:thinkPHP漏洞
- CMS识别:判定一个网站是用什么程序搭建的
- CMS是Content Management System的缩写,意为”内容管理系统”。
- 内容管理系统组成要素:文档模板、脚本语言或标记语言、与数据库集成
- CMS识别在线工具:
- http://whatweb.bugscaner.com/look/
- https://www.yunsee.cn/
- 开源:去网上找寻漏洞文章。直接找漏洞或审计(可以通过CMS识别出来的)
- 内部:常规的渗透测试,用扫描工具去判断。(找不到源码或者不知道对方的CMS名称)
- 关于源码的获取途径:
- 扫描工具探测备份文件
- CMS识别技术获取CMS名称然后从网上下载
- 百度直接搜索:源码
- 咸鱼上会有卖
- 第三方源码站:比如菜鸟源码
- 各种行业对应
- 总结
- 关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架例外),在获取源码后可进行本地安全测试(本地安全测试(手工使用工具去扫描,不需要接触代码))或代码审计,也可以分析其目录工作原理(数据库备份,bak文件等),未获取到的源码采用各种方法想办法获取
0x03.5 涉及资源
- https://cnmmm.com
https://www.yunsee.cn
- https://w.ddosi.workers.dev
http://whatweb.bugscaner.com
- https://github.com/Lucifer1993/cmsprint
https://github.com/M4tir/Github-Monitor
- https://websec.readthedocs.io/zh/latest/language/index.html
0x04 系统及数据库
- 除去搭建平台中间件,网站源码外,容易受到攻击的还有操作系统,数据库,第三方软件平台等,其中此类攻击也能直接影响到Web或服务器的安全,导致网站或服务器权限的获取
0x04.1 操作系统层面
0x04.1.1 识别操作系统常见方法
- 通过网站或通过扫描相关软件识别大小写对网页都没有影响,这种情况就可以认定为windows服务器,因为windows服务器不区分大小写
- 可以用TTL来判断服务器系统,相邻的值来判断
- 不同的操作系统的TTL值是不相同的。默认情况下:
- Linux系统的TTL值为64或255
- Windows NT/2000/XP系统的TTL值为128
- Windows 98系统的TTL值为32
- UNIX系统的TTL值为255
- 不同的操作系统的TTL值是不相同的。默认情况下:
- ip地址可用nmap来判断操作系统
- 命令:nmap -O 110.242.68.4
0x04.1.2 两者区别以及识别的意义
- 网站路径、大小写、文件在两个系统之间的适用性,兼容性
- 如果判断出是哪种操作系统,就会从操作系统所支持的漏洞类型下手
0x04.1.3 操作系统层面漏洞类型对应意义
0x04.1.3.1 SQL注入漏洞
- SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。
0x04.1.3.2 跨站脚本漏洞
- 跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。
0x04.1.3.3 弱口令漏洞
- 弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。设置密码通常遵循以下原则:
- 不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。
- 口令长度不小于8个字符。
- 口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。
- 口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。
- 口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息,以及字典中的单词。
- 口令不应该为用数字或符号代替某些字母的单词。
- 口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
- 至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。
0x04.1.3.4 HTTP报头追踪漏洞
- HTTP/1.1(RFC2616)规范定义了HTTP TRACE方法,主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息。当Web服务器启用TRACE时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中HTTP头很可能包括Session Token、Cookies或其它认证信息。攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。该漏洞往往与其它方式配合来进行有效攻击,由于HTTP TRACE请求可以通过客户浏览器脚本发起(如XMLHttpRequest),并可以通过DOM接口来访问,因此很容易被攻击者利用
0x04.1.3.5 Struts2远程命令执行漏洞
- Apache Struts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。CNVD处置过诸多此类漏洞
0x04.1.3.6 框架钓鱼漏洞(框架注入漏洞)
- 框架注入攻击是针对Internet Explorer 5、Internet Explorer 6、与 Internet Explorer 7攻击的一种。这种攻击导致Internet Explorer不检查结果框架的目的网站,因而允许任意代码像Javascript或者VBScript跨框架存取。这种攻击也发生在代码透过多框架注入,肇因于脚本并不确认来自多框架的输入。这种其他形式的框架注入会影响所有的不确认不受信任输入的各厂商浏览器和脚本。
0x04.1.3.7 文件上传漏洞
- 文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。因此,在开发网站及应用程序过程中,需严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。
0x04.1.3.8 应用程序测试脚本泄露
- 由于测试脚本对提交的参数数据缺少充分过滤,远程攻击者可以利用洞以WEB进程权限在系统上查看任意文件内容。防御此类漏洞通常需严格过滤提交的数据,有效检测攻击
0x04.1.3.9 私有IP地址泄露漏洞
- IP地址是网络用户的重要标示,是攻击者进行攻击前需要了解的。获取的方法较多,攻击者也会因不同的网络情况采取不同的方法,如:在局域网内使用Ping指令,Ping对方在网络中的名称而获得IP;在Internet上使用IP版的QQ直接显示。最有效的办法是截获并分析对方的网络数据包。攻击者可以找到并直接通过软件解析截获后的数据包的IP包头信息,再根据这些信息了解具体的IP。
0x04.1.4 操作系统层面漏洞影响范围
- 通过漏洞去获取权限,对操作系统形成干扰,使得某些服务崩溃
0x04.2 数据库层面
0x04.2.1 识别数据库类型常见方法
- 数据库分类
- 小型数据库 Access
- 中型数据库 MySQL
- 大型数据库 Oracle、SQL Server
- 通过网站及操作系统识别
- ASP+Access,sql server (windows)
- PHP+Mysql(linux、windows) 端口:3306
- ASPX+Mssql(windows) 端口:1433
- Jsp+Mssql(windows),oracle (linux、windows)端口:1521
- Python+Mongodb (linux、windows)
- 注意:access和mssql不支持linux操作系统
- 使用nmap工具扫描,查看端口开放情况
- sql server——–端口:1433
- Mysql————-端口:3306
- Oracle————-端口:1521
- Mongodb———端口:27017
0x04.2.2 数据库类型区别及识别意义
- 每个数据库里面的安全机制,内部结构都有些许不一样,同样产生的漏洞也不一样。不同的数据库,攻击方法、漏洞类型及影响都有不同
0x04.2.3 数据库常见漏洞类型及攻击
- 弱口令攻击:通过弱口令登录到数据库中,得到网站管理员数据信息,登录网站后台,进行修改
0x04.2.4 数据库层面漏洞影响范围
- 通过漏洞,进行攻击,也可以获取数据库的相关权限,进行一系列的操作
0x04.3 第三方层面
0x04.3.1 判断有哪些第三方平台和软件
- 常见的第三方软件:Jboss,PHPmyadmin,vsftpd,teamview等
- 比如phpmyadmin的判定
- 通过网站扫描其目录来判定,如果网站探测不到,那就通过端口扫描。要多层次判断,不能仅限于端口扫描,根据不同的应用采取不同的方法。
- 如果nmap扫描不出来,可能是有第三方防护软件(安全狗)等拦截。还有可能是对方服务部署在内网。
0x04.3.2 为什么要识别第三方平台或软件
- 通过识别第三方软件,来找出漏洞,从而进行渗透测试
0x04.3.3 第三方平台或软件安全测试的范围
- 直接影响到权限
0x04.4 其他
- 除去常规web安全及app安全测试外,类似服务器单一或复杂的其他服务(邮件,游戏,负载均衡等),也可以作为安全测试目标,此类目标测试原则只是少了web应用或其他安全问题,所以明确安全测试思路是很重要的
0x04.5 涉及资源
- https://nmap.org/
https://www.kali.org/downloads/
- https://github.com/hellogoldsnakeman/masnmapscan-V1.0
0x05 加密编码算法
在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备。
0x05.1 常见加密编码等算法
- MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES等
0x05.2 常见加密形式算法
- 直接加密,带salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等
0x05.3 常见解密方式
- 枚举,自定义逆向算法,可逆向
0x05.4 了解常规加密算法的特性
- 长度位数,字符规律,代码分析,搜索获取等
0x05.5 涉及在线工具
- http://www.jsons.cn/desencrypt/
- https://www.cmd5.com/
- https://tool.lu/timestamp/
- http://tool.chacuo.net/cryptaes
- http://tools.jb51.net/password/des_encode
- http://encode.chahuo.com/
- https://www.mozhe.cn
- https://ctf.bugku.com/challenges
- https://www.cr173.com/soft/21692.html
- https://gitee.com/ComsenzDiscuz/DiscuzX
文档信息
- 本文作者:mik1th0n
- 本文链接:https://mik1th0n.github.io/2021/10/21/Penetration-testing-foundation-knowledge/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)