基础入门
基础入门-概念名词
域名
什么是域名?
- 域名 (英语:DomainName ),又称 网域 ,是由一串用点分隔的名字组成的 Internet 上某一台 计算机 或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
- 域名在哪里注册?
- 国内在阿里云的万网注册
- 国外在NameSilo注册
- 什么是二级域名多级域名?
- www是顶级域名
- 二级域名例如:news.baidu.com
- 多级域名例如:news.sina.com.cn
- 域名发现对安全测试有什么意义?
- 收集域名:给测试多了一种可能性。
- 当对某一个网站的主站做测试,发现没有找到突破口,可以收集它的子站点,也就是它的多级域名。可以以子站为突破口,渗入主站点。不管是在同一服务器还是同一网段主站与子站多多少少有联系,有可能密码等等是通用的。
DNS
什么是DNS?
- 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
- 本地hosts与dns的关系
- windows中hosts文件路径:C:\Windows\System32\drivers\etc\hosts
- 当解析域名时dns会先到hosts文件里找看有没有这个域名对应的IP地址。如果没有它就会去互联网上的dns服务器上解析。
- host文件使用
1. 绑定域名的IP地址
2. 修改hosts文件,达到让对方的一个网指向你指向的IP地址
3. 网站钓鱼:掉包、重定向,做一个一样的网站。
4. 加速器,访问国外网站时,修改成国内IP地址。
- cdn是什么? 与dns有什么关系?
- CDN的全称是Content Delivery Network,即[内容分发网络](https://baike.baidu.com/item/内容分发网络/4034265)。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
- cdn 缓冲节点技术
- cdn 主要看地区,就近给节点
- cdn 和dns更换没有关系
- 常见dns攻击方式?
- dns服务器被攻击之后,大量用户再访问时被恶意解析。再访问网站时,恶意解析指向恶意地址。
脚本语言
常见脚本类型
- PHP、Javaweb、ASP、aspx、JSP、p1、Python、cgi
- 不同脚本类型与安全漏洞的关系?
- 面对网站它的程序源码选用,写法,以及用什么语言去写源代码,将决定这套程序源码漏洞产生的概率。
- 语言的严谨,注重的多,语言上写法的规矩比较多,编写这个网站时,相对性安全性漏洞少一些(比如Java一块)
- 程序源码偏重性不同,php中小型,Java大项目。
- 漏洞挖掘代码审计与脚本类型的关系?
- 脚本语言开发了解,看的懂代码
后门
什么是后门?有哪些后门?
- 攻击者在拿到一定权限之后遗留后门
- 网站后门—webshell
- 服务器,个人计算机等等-后门木马
- 深层次的后门rootkey,内核级
- 后门在安全测试意义?
- shell控制
- 后门用法(免杀)
- 特殊的目的
- 免杀
- 加壳
Web
web组成架构模型
- 网站源码,分脚本类型、分应用方向
- 脚本类型编写源码可能性漏洞
- 源码使用函数的可能性漏洞
- 网站所使用功能上可能性漏洞
- 操作系统:Windows、Linux
- 所使用攻击载荷不同
- 中间件(搭建平台):apache、iis、tomcat、nginx等等
- 提供服务的
- 数据库:access、MySQL、oracle、sybase、db2、postsql等
- 储存数据
架构漏洞安全测试简要介绍?
- 其web漏洞所出现在的四个方面
- 漏洞所出现的四个层面
为什么要从web安全层面为首
- 使用范围广
- 漏洞出现较多
- 由web先获取一些权限之后,再由web进行权限提升,拿到某台主机的网站权限,然后达到内网,搞到大的局域网、框架,获取更多有用价值的信息。
- 漏洞必须的前提条件
web相关漏洞
web源码类对应漏洞
- SQL注入漏洞、xss(代码执行)、文件上传、代码执行、变量覆盖、逻辑漏洞、反序列化等
web中间件对应漏洞
- 未授权访问、解析漏洞、任意文件上传、弱口令等
web数据库对应漏洞
- 弱口令、内核、未授权等
web系统对应的漏洞
- 提权、溢出等
其他第三方对应漏洞
- 软件漏洞、phpstudy后门等
app或pc应用结合类
- 应用漏洞
- 逆向破解
- app分装:你可能app看到的架构模板可能是套用的是网站的。就是说你用网页访问,和你用app打开看到的是一样的
- 结合web二次开发
- 分析app里面存在的web协议以及信息
演示案例
多级域名枚举查找(原理,方式)
- 搜索引擎:youku.com
- 域名挖掘机爆破
- 第三方运营商查询
dns解析修改后分析(本地或服务)
EXE后门功能及其危害类似于web后门
- Quasar
app类结合web协议,pc类结合web协议
- app端
- bur抓包,抓app包 - 使用pc端访问时注意替换原数据包,因为客户端不同数据包有差异
- 第三方软件 逆向破解 - 漏了一个大洞
- pc端
- 进程抓包工具
- WSE
涉及资源
逍遥模拟器
http://www.xyaz.cn
Wsexplorer
http://www.downcc.com/soft/11196.html
Quasar
https://github.com/quasar/QuasarRAT/releases
漏了一个大洞
链接:https://pan.baidu.com/s/16j0evEEyaD6nOKcjAjb_WA 提取码:chen
基础入门-数据包拓展
数据包请求方式
- request 请求数据包
- respondes 响应数据包
- proxy 代理
超文本传输协议
- http 普通网站协议
- http、tcp、ip
- 通信过程
- 建立连接—发送请求数据包—返回响应数据包—关闭连接
https 加密网站协
- http、ssl or tls 、tcp、ip
- 加密传输
- 通信过程
- http请求—服务响应—加密信息
[证书校验、生成密码、公钥加密]
—加密信息
[私钥解密、解密握手消息验证HASH]
—正常加密通信
[解密握手消息、验证HASH]
request请求数据包
Request请求数据包格式:
1.请求行:请求类型/请求资源路径、协议的版本和类型
2.请求头:一些键值对,浏览器与web服务器之间都可以发送,特定的某种含义
3.空行:请求头与请求体之间用一个空行;
4.请求体:要发送的数据(一般post提交使用);例:user=123&pass=123
例:
POST /zb_system/cmd.php?act=search HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cache-Control: max-age=0
Connection: keep-alive
Content-Length: 3
Content-Type: application/x-www-form-urlencoded
Cookie: ZDEDebuggerPresent=php,phtml,php3
Host: xiaodi8.com
Origin: http://www.xiaodi8.com
Referer: http://www.xiaodi8.com/
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36 Edg/100.0.1185.39
请求行:
请求行由三个标记组成:请求方法、请求URL和HTTP版本,它们用空格隔开
#注意HTTP1.0与HTTP1.1版本区别
HTTP1.0仅支持 GET、POST、HEAD 请求方法
HTTP1.1以下请求方法都支持
例:
POST /zb_system/cmd.php?act=search HTTP/1.1
HTTP 规划定义了8种可能的请求办法:
GET 检索URL中标识资源的一个简单请求
HEAD 与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
POST 服务器接受被写入客户端输出流中的数据的请求
PUT 服务器保存请求数据作为指定URL新内容的请求
DEELETE 服务器删除URL中命令的资源的请求
OPTIONS 关于服务器支持的请求方法信息请求
TRACE web服务器反馈http请求和其他头标的请求
CONNECT 已文档化,但当前未实现的一个方法,顶留做隧道处理
请求头:
由关键字/值对组成,每一行一对,关键字和值用冒号分隔。请求头标通知服务器服务器腾于客户端的功能和标识。
HOST 主机或域名地址
Accept 指浏览器或其他客户可以接受的MIME文件格式,Server可以根据它判断并返回适当的文件格式。
User-Aqent 是客户浏览器名称
Host 对应网址URL中web名称和端口号
Accept-Langeuage 指出浏览器可以接受的语言种类,如cn或cn-un,指英语
connection 用来告诉服务器是否可以维持固定的HTTP连接,http是无连接的,HTTP/1.1使用Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接
Cookie 浏览器用这个属性向服务器发送Cookie,Cookie是在浏览器中寄存的小型数据库,它可以记载和服务器相关的用户信息,也可以用来实现会话功能
REferer 表明产生请求的网页URL,如此从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,在向服务器发送的GET /icconcept/index.jsp
这个属性可以用来跟踪web请求是从什么网站来的
Content-Type 用来表明request的内容内容类型,可以用来httpServerRequest的getContentType()方法获取
Accept-Charset 指出浏览器可以接受的字符编码,英文浏览器的默认值是ISO-8859-1
Accept-Encoding 指出浏览器可以接受的编码方式,编码方式不同于文件格式,它是为了压缩文件并加载文件传递速度,浏览器在接收到web响应之后先解码,然后再检查文件格式
空行
最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标
请求数据
使用POST传送,最常使用的是Content-Type 和 Content-Length
Response返回数据包格式
Response返回数据包格式:
一个响应由四个部分组成:状态行、响应头标、空行、响应数据
1.状态行:协议版本、数字形式的状态代码和状态描述,单个元素之间以空格隔开
2.响应头标:包含服务器类型、日期、长度、内容类型等等
3.空行:响应头与响应体用空行隔开
4.响应数据:浏览器会将实体内容中数据取出来,生成相应页面
HTTP响应码:
1xx 信息,请求收到,继续处理
2xx 成功.行为被成功的接受,理解和采纳
3xx 重定向,为了完成请求,必须进一步执行的动作
4xx 客户端错误
5xx 服务器错误
200 存在文件
403 存在文件夹
3xx 均可能存在
404 不存成文件夹和文件
500 均可能
#响应头标
像请求头标一样,它们指出服务器的功能,标识出响应数据的细节
#空行
最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标
#做渗透测试
宁愿误报也不能遗漏
演示案例
burpsuite抓包修改测试
- 抓包伪造数据,绕过检测
敏感文件扫描工具简要实现
- 御剑后台扫描
#第三方检测修改实现XSS攻击
- 通过抓包修改数据包,改成js脚本代码实现xss攻击
数据包相关检验对比(APP与直接访问)
- 将抓到的app访问的数据包与pc端浏览器访问的数据包进行替换
- 在测试app漏洞时,你要保证访问的数据包是对的才能测试漏洞
CTF或实际应用中部分考题解析(mozhe)
- referer:来源伪造
- aqent:浏览器客户端伪造(手机端iPhone),netType/2G(网络伪造)
- 修改提交方式(post)
- 伪造服务器获取客户端IP(php获取ip方法),x-forwared-for:ip
涉及资源
基础入门-搭建安全拓展
常见搭建平台脚本启用
#ASP,PHP,ASPX,JSP,PY,JAVAWEB等环境
域名IP目录解析安全问题
#WEB源码中敏感文件
#后台路径,数据库配置文件,备份文件等
1.网站访问有两种形式:
#域名访问:使用域名访问只能看到当前网站的文件夹
#IP访问:使用IP访问将会把网站根本目录下所有文件夹,甚至网站备份文件,敏感文件
IP访问的是根目录
域名访问的是根目录是下网站
IP是网站域名上一级
#IP或域名解析WEB源码目录对应下的安全问题
#域名访问,IP访问(结合类似备份文件目录)
常见文件后缀解析对应安全
#脚本后缀对应解析(其他格式可相同-上传安全)
#存在下载或为解析问题
#asp.dll:解析协议
asp.dll默认扩展名 .cer .cdx
漏洞:
1.如果其他后缀(扩展名)也是对应着解析asp.dll文件的话,它就会以asp脚本解析相应文件执行
2.在IIS6.0 中,文件夹[*.asp] 下的所有文件都会被当作asp 脚本来执行
假如某个网站在解析文件时(如文件上传时)有的不解析,或有的直接下载、有的报错、有的解析,这中情况其实就是网站中间件解析协议的设置
常见安全测试中的安全防护
#常见防护中的IP验证,域名解析等
内部网站防护
1.身份验证控制
2.ip或域名限制
WEB后门与用户以及文件权限
#后门是否给予执行权限
#后门是否给予操作目录或文件权限
#后门是否给予其他用户权限
网站所对应的权限来自于来宾账户
其实就是匿名访问所使用的来宾账户
Windows权限默认是允许,权限一旦拒绝就是拒绝
#网站目录执行权限——无(针对图片目录之类)
绕过思路:将后门放到有执行权限的目录下,比如根目录或有脚本的目录下(有脚本的地方就有可执行权限)
取决于你有没有那个权限或操作执行
绕过有前提条件,遵循该有的规则下,寻找绕过思路
#总结下关于可能存在的安全或防护问题
演示案例
基于中间件的简要识别
response headers \\响应头
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html; charset=UTF-8
Date: Tue, 26 Apr 2022 13:50:28 GMT
Server: Tengine //中间件(搭建平台)
Transfer-Encoding: chunked
Vary: Accept-Encoding
-
基于中间件的安全漏洞
web中间件常见漏洞总结.pdf
-
基于中间件的靶场使用
Vulhub - Docker-Compose file for vulnerability environment
涉及资源
Vulhub - Docker-Compose file for vulnerability environment
vulhub靶场搭建
基于centos7搭建
1.备份yun源
cd /etc/yum.repos.d/
cp CentOS-Base.repo{,.bak}
2.添加源
curl -O http://mirrors.aliyun.com/repo/Centos-7.repo
curl -O http://mirrors.aliyun.com/repo/epel-7.repo
curl -O http://mirrors.aliyun.com/repo/epel-testing.repo
3.清理缓存并重新建立缓存
yum clean all && yum makecache
4.更新yum软件包
yum update -y
5.安装docker基本依赖
yum insatll -y yum-untils device-mapper-persistent-data lvm2
yum makecache fast
6.安装docker-ce
yum list docker-ce --showduplicates | sort -r //列出所有版本
yum -y install docker-ce-18.03.1.ce-1.el7.centos //安装docker-18.03版本
7.验证docker是否安装好
docker -version
8.启动docker服务
systemctl start docker //临时启动
systemctl enable docker //开机自启
9.配置docker源(加速映像)
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://3laho3y3.mirror.aliyuncs.com",
"http://f1361db2.m.daocloud.io",
"https://mirror.ccs.tencentyun.com"
]
}
10.重启服务及加速映像
systemctl restart docker
systemctl daemon-reload
11.安装docker-compose
1.使用官方安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.使用daocloud地址下载
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
3.使用pip安装
pip install docker-compose
12.给docker-compose目录可执行权限
chmod +x /usr/local/bin/docker-compose
13.安装git
yum install -y git
git -version
14.创建存储vulhub环境目录
mkdir CVE
14下载vulhub
cd /CVE
git clone https://github.com/vulhub/vulhub
15.进入某个漏洞环境目录下
cd /CVE/vulhub/wordpress/pwnscriptum/
16.启动环境
docker-compose up -d
16.查看端口
docker-conpose ps
docker-compose config
17.删除环境
docker-compose down
基于ubuntu搭建
推荐文章:https://www.cnblogs.com/Xy--1/p/12767967.html
基础入门-WEB源码拓展
前言:
WEB源码在完全测试中非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中WEB源码有很多技术需要简明分析。
比如:
获取ASP源码后可以采用默认数据库下载为突破,获取某些脚本源码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为后期安全测试提供更多思路。
如图:
知识点
- 关于WEB源码目录结构
- 关于WEB源码脚本类型
- 关于WEB源码应用分类
- 关于WEB源码其他说明
数据库配置文件,后台目录,模版目录、数据库目录等
配置操作目录:includes
后台目录:admin
模版目录:template
数据相关目录:data、(一般其中有数据库配置文件 config)
安装目录:install
会员中心目录:member
#ASP,PHP,ASPX,JSP,JAVAWEB 等脚本类型源码安全问题
查看笔记:https://websec.readthedocs.io/zh/latest/
#社交,论坛,门户,第三方,博客,等不同的代码机制对应漏洞
网站功能不同对应漏洞也不同
#关于源码获取的相关途径,搜索,咸鱼淘宝,第三方源码站,各种行业对应
获取源码方式并不一样,看网站对应是什么行业
#总结
关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架类例外(框架直接找相对应框架)),在获取源码后可进行本地安全测试或进行代码审计,也可以分析其目录工作原理(数据库备份,bak文件等),未获取到的源码采用各种方法想办法获得。
演示案例
#ASP,PHP等源码下安全测试
平台识别-某CMS无漏洞-默认数据库
1.ASP网站中特有的文件(xycms.mdb(只有asp网站会有的文件))
2.XYCMS,原名为南京XYCMS企业建站系统,该建站系统是一款基于ASP开发的商业性建站系统,网站系统方便、简洁、容易上手。所设计的版本分为动态版和静态版。
3.xycms.mdb是xycms建站系统的数据库文件可以在其中找到后台账户和密码
总结:
在发现某网站的建站系统架构是什么平台时,可以在网上查找相同架构的cms源码,通过源码分析网站目录文件,找出后台文件例如:admin文件夹,网站数据文件夹例如:data文件夹(前提是在该网站没有更改默认架构时)
--------------------------------------------------------
平台识别-某CMS有漏洞-漏洞利用
PHP网站:
1. (cms识别)首先查找cms,看是哪个cms建站系统
2.(漏洞搜索)在网上查找看是否这个版本的cms是否有漏洞
3.(若没有)在网上下载该cms源码之后做漏洞分析
--------------------------------------------------------
cms识别:
1.人工
2.工具(扫面该cms特有文件,从而查找是哪个cms建站系统)
cms字典对比特用文件的md5值
3.平台识别——cms识别平台(百度搜索)
#源码应用分类下的针对漏洞
web网站中,网站的功能越多,可以说漏洞与功能的数量是相对应的,并且网站所对应的漏洞也是与其网站应用功能所对应的,因此在漏洞发现的过程中可以从web网站应用功能的模块开始。
例如:niushop电商类关注漏洞点-业务逻辑
使用burp suite对其网站抓包
如若这个电商类网站是前端校验,通过对数据包的修改关键点,导致形成业务逻辑漏洞
#简要目标从识别到源码获取
(1).本地演示个人博客-手工发现其cms-漏洞搜索或下载分析
通过搜索引擎,F12,通过网络分析抓取特殊文件
(2).内部搭建的靶场,实验
通过报错,暴露出网站的框架,再通过网上搜索看该框架是否有漏洞,如若有在网上可以搜索到该框架的漏洞利用
(3).人工爆破-收索特定url-获取其他相符站点-漏洞测试
例:thinkPHP框架,可以使用think_getshell工具利用
也可通过搜索该页面路径,找到相关资料:index/login/login/token
(3).web源码获取——借助特定行业源码或闲鱼进行搜索获取-本地搭建-代码审计或其它(安全测试)
第三方源码站
菜鸟源码(还有其他等等)
通过获取与之网站相似的源码,对之源码分析,找出可以利用的点
小中型,通过闲鱼,淘宝
涉及资源
cms识别
云悉互联网WEB资产在线梳理|在线CMS指纹识别平台 - 云悉安全平台 (yunsee.cn)
GitHub - Lucifer1993/cmsprint: CMS和中间件指纹库
资产监控
GitHub - M4tir/Github-Monitor: Github RCE/0day监控系统 My’Blog:
学习文章
5. 语言与框架 — Web安全学习笔记 1.0 文档 (websec.readthedocs.io)
(90条消息) 渗透测试之网站cms识别大法汇总_白帽子九一的博客-CSDN博客_cms识别
GitHub - Lucifer1993/cmsprint: CMS和中间件指纹库
源码下载
网站源码下载,A5下载 - 更快的站长下载站 (a5xiazai.com)
基础入门-系统及数据库等
前言:除去前期讲到过的搭建平台中间件,网站源码外,容易受到攻击的还有操作系统,数据库,第三方软件平台等,其中此类攻击也能直接影响到WEB或服务器的安全,导致网站或服务器权限的获取。
#操作系统层面
识别操作系统常见方法
1.在对方有网站情况下
通过网站URL地址识别操作系统
Linux:严格区分大小写
windows:不区分大小写
例如:
windows:http://www.xiaodi8.com/?CATE=8(将URL地址中换成大写不报错)
Linux:https://ckteam.top/wP-login.php(Linux中URL换成大写直接404)
2.在对方没有网站情况下
(1) 通过TTL值判断(ping,通过相邻ttl值,不准确)
(2) 通过nmap扫描 nmap -O 网址或IP/nmap -sV 网址/IP
进行概率判断
-----------------------------------------------------------------
简要两者区别及识别意义
###主要是为了在后期渗透测试缩小范围,找到测试点###
1.区别操作系统主要是在后期测试,操作系统不一样,同样文件路径不一样,文件类型不一样,我们需要知道其操作系统,对其相应文件路径以及文件类型。
2.前期测试之后在知道操作系统之后,后期测试就要围绕这个操作系统所支持的范围进行测试,发展。
-----------------------------------------------------------------
#操作系统层面漏洞类型对应意义
1.权限性漏洞(获取权限)
(1)远程代码执行漏洞
MS17-010(SMB) //没有前提条件,直接获取权限,危害等级 高
还有一些中小型漏洞需要用户一定权限
2.危害性漏洞(带攻击性)
危害性漏洞不会获取权限,只是导致系统崩溃,蓝屏,等等。
-----------------------------------------------------------------
#简要操作系统层面漏洞影响范围
1.获取权限,围绕权限挂钩,漏洞能不能获取相应权限,后期要有一定权限才能做一些后期的事情(有了一定权限才能利用漏洞)
2.干扰操作系统,操作系统蓝屏,崩溃
-----------------------------------------------------------------
#数据库层面
数据库:存储网站所有数据
********************************************
#网站分为两种:静态网站和动态网站
(必须有数据传递的网站才有漏洞)
静态网站:类似于单页面,没有其它功能,没有后台前台,没有数据库,也没有数据,就是个页面。(没有实现数据传递,没有数据交互,静态网站并没有漏洞)
动态网站:对于静态网站相反而言
********************************************
#识别数据库类型常见方法
#1.有网站型数据库识别:
(1)通过脚本推算
********************************************
asp+access
php+mysql
aspx+mssql
jsp+mssql,oracle
python+maongdb
********************************************
(2)通过操作系统推算
********************************************
window:全都可以
Linux:除了access以及mssql,其他都支持(因为access,mssql是微软官方的)
********************************************
#2.没有网站型数据库识别:
(1)数据库有相应默认端口(通过百度查一下,常见数据库默认端口)
(2)通过nmap端口扫面
-----------------------------------------------------------------
数据库类型区别及识别意义
1.数据库类型不同,产生漏洞也不一样
2.数据库类型不同,存储结构不同,数据写法不同
3.数据库类型不同,攻击方式,和一些漏洞影响都有一些差异
-----------------------------------------------------------------
#数据库常见漏洞类型及攻击
1.弱口令
2.漏洞
简要数据库层面漏洞影响范围
1.数据库权限甚至网站权限
-----------------------------------------------------------------
#第三方层面
如何判断有哪些第三方平台或软件
简要为什么要识别第三方平台或软件
常见第三方平台或软件漏洞类型及攻击
简要第三方平台或软件安全测试的范围
#补充
#除去常见WEB安全及APP安全测试外,类似服务器单一或复杂的其他服务(邮件,游戏,负载均衡等),也可以作为安全测试目标,此类目标测试原则只是少了WEB应用或其他安全问题,所以明确安全测试思路是很重要的!
课程安排->漏洞技术->WEB层面,系统层面,第三方等其他
演示案例
操作系统层面漏洞测试
ms170_010
- 永恒之蓝(ms17-010)过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
- 目前已知受影响的Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0
web层面数据库漏洞测试
Mysql 身份认证绕过漏洞
- MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23 are not.
- MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not.
第三方软件平台漏洞测试
phpmyadmin scripts/setup.php 反序列化漏洞
- phpmyadmin 2.x版本中存在一处反序列化漏洞,通过该漏洞,攻击者可以读取任意文件或执行任意代码
vsftpd-2.3.4 手工触发漏洞
- 当进行FTP认证时,如果用户名USER中包含:),那么直接就触发监听6200端口的连接的shell。
涉及资源
Nmap: the Network Mapper - Free Security Scanner
Vulhub - Docker-Compose file for vulnerability environment
基础入门-加密编码与算法
前言:在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备,本次课程将讲解各种加密编码等知识,便于后期的学习和发展。
常见加密编码等算法解析
MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES 等
--------------------------------------------------------------
MD5加密方式:常见md5加密,是由a-z和0-9组成的16位或32位字符,一般网站都采用md5值加密
MD5解密方式:在线平台cmd5.com
-----------------------------------------------------------------------------
SHA加密方式:hash值
sha:由a-z和0-9组成的20位字符
sha1:由a-z和0-9组成的40位字符
sha256:由a-z和0-9组成的位32位字符
sha384:由a-z和0-9组成的48位字符
sha512:由a-z和0-9组成的64位字符
SHA为20字节(160位)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位)
SHA解密方式:在线平台cmd5.com
--------------------------------------------------------------------------
进制:进制转换 二进制 十进制 八进制 十六进制
------------------------------------------------
时间戳:将一个时间段转换成秒
eg. 2022-08-08 11:11:37 转换成时间戳 1659928297
转换方式:
在线: tool.lu/timestamp
linux:date -d 时间段 +%s
windows:https://blog.csdn.net/kate_mj/article/details/104384892
--------------------------------------------------------------------------
URL编码:%开头0-9和a-z组成的几位字符 eg. 空格 %20
注意:二次编码,在编码之后又进行编码,浏览器只会进行一次编码
以上为常见编码,不区分大小写
--------------------------------------------------------------------------
BASE64编码:明文有多长相应的密文就有多长,0-9和a-z或A-Z 区分大小写 (经常会在末尾出现一或两个=号)
主要应用:web网站中,密码加密,安全性代码加密,特殊参数加密
BASE64解密:https://base64.us/
#注意AES解密会进行二次编码,当解密base64时出现乱码很可能就是AES加密
-----------------------------------------------------------------------------------------
Unescape编码:%u四位数字组成的字符串,偶数结尾时后面经常出现%u0000
常应用:web方面
---------------------------------------------------------------
AES加密:AES加密是一种安全性加密,字符串中常出现/
由六个模块组成:加密模式 加密长度 秘钥 偏移量 编码 输出字符集
编码类型:base编码 hex编码(十六进制)
#注意:AES加密方式是使用了二次编码形式,当解密出来是一种乱码格式,就说明进行过二次编码
eg. UFgGlyPTiFytLhUVCbb6vAiGp4MDNU8I6e8uSxoGP+Y=
在此注意编码样式类似于base64,base64编码经常以=结尾,在进行解密时首先将编码进行转换
应用范围:安全性和大型网站以及ctf比赛类
AES解密:在线网站 http://tool.chacuo.net/cryptaes
解密时必须条件:秘钥和偏移量
AES正在逐渐替代MD5
------------------------------------------------------------------
DES加密:和base64相似,明文与密文长度一样,但是字符串中常出现+/
--------------------------------------------------------------------
常见加密形式算法解析
直接加密,带 salt(加盐值),带密码,带偏移,带位数,带模式,带干扰,自定义组合等
常见解密方式(针对)
枚举,自定义逆向算法,可逆向
了解常规加密算法的特性
长度位数,字符规律,代码分析,搜索获取等
演示案例
-
某 CTF 比赛题目解析
脚本自定义算法组合逆向 密码逆向从后往前解析 <?php function decrypt($str) { $mykey = "729623334f0aa2784a1599fd374c120d"; //md5(issc) $key_len= strlen($mykey); $temp = $str; /* base64_encode()函数来进行base64加密,而base64_decode()函数则可解密 */ $temp = base64_decode($temp); //对base64后的字符串解密 decode $md5_len = strlen($temp); //获取字符串长度 $x = 0; $char = ""; for($i=0;$i < $md5_len;$i++) { //获取二次加密用的key if($x == $key_len) // 数据长度是否超过key长度检测 $x = 0; $char .= $mykey[$x]; //从 key 中取二次加密用key $x+=1; } $md5_data = array(); //获取偏移后密文数据 for($i=0;$i<$md5_len;$i++) { array_push($md5_data,ord($temp[$i])); } $md5_data_source = array(); $data1 = ""; $data2 = ""; foreach($md5_data as $key => $value) { //对偏移后的密文数据进行还原 $i = $key; if ($i >= strlen($mykey)){$i = $i - strlen($mykey);} $dd = $value; /*ord() 函数返回字符串中第一个字符的 ASCII 值*/ $od = ord($mykey[$i]); array_push($md5_data_source,$dd); /* chr() 函数从指定 ASCII 值返回字符。 ASCII 值可被指定为十进制值、八进制值或十六进制值。八进制值被定义为带前置 0,十六进制值被定义为带前置 0x。*/ $data1 .=chr(($dd+128)-$od); //第一中可能,余数+128-key 为回归数 $data2 .=chr($dd-$od); //第二种可能,余数直接-key 为回归数 } print "data1 => ".$data1."<br>\n"; print "data2 => ".$data2."<br>\n"; } $str = "fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA="; //密文 decrypt($str); //调用解密函数进行解密 ?>
-
某 CMS 密码加密解密
MD5+salt #注意大部分网站的数据库里的密码都是通过MD5加盐值的算法,单独解密MD5是解不出来,必须加盐 eg. #部分 CMS 密码加密形式-wp,dz 等 #DiscuzX wordpress phpcms zblok等等cms采用
-
某 URL 加密地址的漏洞测试
AES+Base64+自定义 #观察参数值加密字符串,下载源代码分析,函数定义 AES 加密,涉及模式 CBC,128 位,加密密码,偏移 量,两次 base64 减去常规一次,填充模式。(_mozhe) ZUlJOGMzSmVMMHQwZHhNN3diM056Zz09 eII8c3JeL0t0dxM7wb3Nzg== #注意URL加密之后对应的参数都要加密跟原有的一样形式,网站才能成功执行解密
-
某实际应用 URL 地址参数加密
搜素特定关键字加密字符串 eg. inurl:id=MQ== MQ== base64 加密 在尝试进行注入时应以同种加密类型方式写 #eg. 1.先猜测URL链接加密方式,常规的话就进行解密 https://www.inkomet.com/detail.php?id=MQ== MQ== 进行了base64加密 2.解密之后 1 ,通过 将原有字符和新的字符拼接加密之后放进URL中测试,才能与网站正常通讯 MQ== base64解密 1 1 and 1=1 base64加密 MSBhbmQgMT0x 3.再次测试网站 https://www.inkomet.com/detail.php?id=MSBhbmQgMT0x 返回正常
涉及资源
Base64 在线编码解码 | Base64 加密解密 - Base64.us
ASCII 在线转换器 ,ASCII码,ASCII 转码—在线工具 (sojson.com)
在线AES加密解密、AES在线加密解密、AES encryption and decryption–查错网 (chacuo.net)