CSRF跨站请求伪造漏洞
该文章属于WEB渗透系列
一. CSRF介绍1. CSRF简介CSRF (Cross-Site Request Forgery),也被称为one-click attack或者session riding,即跨站请求伪造攻击。
CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,允许攻击者诱导用户执行他们不打算执行的操作。当用户访问含有恶意代码的网页时,会向指定正常网站发送非本人意愿的数据请求包,如果此时用户恰好登录了该正常网站 (也就是身份验证是正常的)就会执行该恶意代码的请求,从而造成CSRF漏洞。
这里提到了CSRF是访问含有恶意代码的网页,是不是感觉和XSS有点像,不过他俩还是有点不一样的。举个例子
用户张三,访问网站A,输入账号密码并登陆,这过程一切正常对吧。
如果说我们在网站A注入了恶意代码,使得张三登陆进去后,他的cookie会直接发给恶意的远程服务器,这样的是XSS。
而CSRF是这样的,当张三登陆进网站A后,网站是不是会返回一个cookie作为响应内容。这时候张三又打开了一个网站B。而这个网站B是我们的恶意网站,张三点击了什么充满诱惑的东 ...
文件上传绕过·文件包含
该文章属于WEB渗透系列
一. 文件包含这个文件包含我们在”文件上传绕过·内容检查漏洞”提到过一个本地文件包含漏洞。
那么什么是文件包含呢?
1. 文件包含Python,Java,PHP其实都有文件包含的概念,不过叫法不一样,Java里叫做包package,Python里叫模块,也就是那个import
他们的有一个特点,就是可以方便的引入其他文件的代码。比如说a.py文件里有一个access函数,我们需要经常使用,我们就可以使用from a import access来引用这个函数。这其实就是文件包含
程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,即提高文件的重用性。这种文件调用的过程一般被称为文件包含。
这个其实不难理解,比如说我们想要得到当前的时间戳,Python代码如下
12345678910111213import time def get_millisecond(): """ :return: 获取精确毫秒时间戳,13位 ""&q ...
文件上传绕过·条件竞争
该文章属于WEB渗透系列
一. 条件竞争条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的。开发者在进行代码开发时常常倾向于认为代码会以线性的方式执行,而且他们忽视了并行服务器会并发执行多个线程,这就会导致意想不到的结果,简而言之就是并没有考虑线程同步。因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。
嗯……这么说可能听不太懂,举个例子:
我在初中的时候,我记得老师带我们刷什么课来着,好像是有关毒品的视频。他那个视频看完之后需要答题,而且是只有你看完视频才能答题。而当时呢,这个网页有个BUG,点开网页后快速点击”开始答题”的位置,手速够快的话,你就可以直接跳过视频开始答题。
这是为啥?因为网页的加载顺序有问题,正常来说应该是先加载与视频相关的代码,然后再判断一下,最后处理”开始答题”的代码,结果这个页面是一起加载,也就是说,加载视频的时候,”开始答题”也在加载,这样就可以卡BUG了。
再举个例子:
以前高中在网上随便找网站玩的时候,发现的一个BUG。那是一个购物页面,每次把物品加入购物车的时候,他都会加载一下,我那是 ...
文件上传绕过·PNG结构与PNG二次渲染
该文章属于WEB渗透系列
一. PNG的结构1. PNG简介PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。
流式网络图形格式 (Portable Network Graphic Format,PNG)名称来源于非官方的 “PNG’s Not GIF”,是一种位图文件 (bitmap file)存储格式,读成”ping”。
PNG用来存储灰度图像时,灰度图像的深度可多到16位;存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。
PNG使用从LZ77派生的无损数据压缩算法。说白了这就是一种方便的、适于网络传播的轻便图片文件格式
我们闲话少说,直接看PNG结构
2. PNG结构PNG图像格式文件由文件署名和数据块 (chunk) 组成。
我们准备一张PNG图片
(1) 文件署名8字节的PNG文件署名域用来识别该文件是不是PNG文件。该域的值是:
十进制数
十六进制数
137
89
80
50
78
4e
71
47
13
0d
10
...
文件上传绕过·GIF结构与GIF二次渲染
该文章属于WEB渗透系列
我们在之前的文章文件上传绕过·内容检查绕过 | Trtyr’s Blog简单讲过二次渲染的概念,并且用GIF做了个简单的例子,那么这篇文章就会主要讲一下这个二次渲染绕过
一. GIF介绍1. 简介图像互换格式(GIF,Graphics Interchange Format) 是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像。它实际上是一种压缩文档,采用LZW压缩算法进行编码,有效地减少了图像文件在网络上传输的时间。
关于LZW算法,我们就不讲了,直接看GIF结构
2. GIF结构一个 GIF 文件的结构可分为:
文件头 (File Header): 文件头包含GIF文件署名 (Signature)和版本号 (Version)
GIF数据流 (GIF Data Stream): GIF数据流由控制标识符、图像块 (Image Block)和其他的一些扩展块组成
文件结束标识符 (Trailer): 文件结束标识符只有一个值为 0x3B 的字符;表示文件结束。
结构如下图
我们可以简单来看一下,比如说这张GIF
你们可以下载下来看看 ...
文件上传绕过·内容检查绕过
该文章属于WEB渗透系列
一. 内容检查我们之前讲的,无论是JS过滤、黑名单还是白名单,都是基于一个文件类型检查。而我们这里说的”内容检查”就有点不一样了。他是检查你的文件内容。
可能听的比较迷糊,下面具体讲就能明白了
二. 内容检查绕过1. 文件头检查(1) 文件头图片、文本、文件说到底,都是一个东西,在计算机层面,管你啥文件都是二进制,那么怎么在二进制层面去区分你这个到底是啥东西呢?那就需要有一个特征码了,比如说凡是FF D8 FF E0 00 10 4A 46 49 46开头的都是.jpg文件,那么我们是不是可以通过删除增加这些东西来达到一个伪造呢?
图片类型文件头
123.jpg FF D8 FF E0 00 10 4A 46 49 46.gif 47 49 46 38 39 61.png 89 50 4E 47
可以看到,这是一个.jpg文件,以89 50 4E 47开头。
(2) 文件文件头伪造如果说后端是文件头检测的话,那我们是不是可以在前面增加一个文件头实现文件类型伪造呢?
比如说我们打开一个PHP文件
可以看到,这就是<?php eval(@$_GET ...
文件上传绕过·白名单绕过
该文章属于WEB渗透系列
一. 白名单跟黑名单不一样,黑名单是把不允许的文件后缀名弄到一个列表里匹配,白名单是一些允许的文件后缀名。所以说,白名单其实比黑名单要方便点。
比如说,这个网站只允许上传jpg和webp,你要是设置黑名单的话,得把一大堆后缀名填在列表里,要是设置白名单的话,就只需要设置jpg和webp
二. 白名单绕过1. MIME类型检测绕过(1) MIME类型我们要先知道一个东西,就是浏览器是怎么处理文件的
在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。
媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的,例如:
1Content-Type: text/HTML
表示内容是 text/HTML 类型,也就是超文本文件。
为什么是 “text/HTML” 而不是“HTML/text”或者别的什么?MIME Type 不是个人 ...
文件上传绕过·黑名单绕过
该文章属于WEB渗透系列
一. 黑名单黑名单很容易理解,就是设置一些后缀名,这些后缀名无法上传。目的就是不让你传木马
黑名单一般是不会让你知道的,比如说它不允许php文件上传,结果被你看见了,你不就能上传其他文件了嘛,所以它一般是在后端服务器。
这个恶心的地方就是,你不知道哪些后缀名被放进黑名单里头了,所以需要挨个试,但是有的地方,不让你上传那么多次,就很烦。
二. 黑名单绕过1. 特殊后缀名(1) 特殊后缀名处理首先我们要知道,我们上传木马的目的是来连接它吧,那么能连接也就必然能访问对吧,那么网站是怎么处理我们上传的文件的?
是通过web服务解析的,主流的有Apache和Nginx,这俩玩应会根据你的后缀名进行解析。
举个例子
1234.php.php3.phtml.ph5
这些后缀,统统给解析成.php
我们可以看网站配置
Apache下的httpd-conf
Nginx就有点麻烦了
需要安装php-fpm,这个是给Nginx提供php解析功能的一个php插件。但是我这个是Windows环境,解析php用的是php-cgi.exe,想要安装php-fpm的话,phpstud ...
文件上传绕过·JS认证绕过
该文章属于WEB渗透系列
一.文件上传漏洞1. 文件上传文件上传应该很好理解吧,就是网站可以上传一个文件进去,就像这样
这就是上传了一个图片。
还可以上传其他东西,包括但不限于,图片,音乐,文档,乱七八杂的文件等等。
当你点击上传的时候,它就会讲你所选择的东西上传到服务器里。
2. 文件上传漏洞既然可以上传文件,那么我们是不是也可以上传木马呢?
不过你能想到能够上传木马,网站管理员当然也可以想到,所以他会做一些措施让你上传不了木马。比如说上图
只允许你上传图片,其他的文件上传不进去,这样就做了一个过滤,你就上传不了木马了。
不过总有办法能够绕过,这就是文件上传漏洞。
二. JS绕过文件上传的绕过有很多种,我们先讲JS绕过。其他的之后的文章会有。
1. JS实现过滤既然是JS,那就是在前端进行的限制,你能看见网页里的JS代码,比如说这里
网页源码里就有对应的JS代码
1234567891011121314151617function checkFile() { var file = document.getElementsByName('upload_ ...
BeEF工具使用说明书
该文章属于WEB渗透系列
一. BeEF介绍1. 简单介绍BeEF是”Browser Exploitation Framework“的缩写,它是一种开源渗透测试工具,专注于利用 Web 浏览器中的漏洞。
BeEF 始于 2006 年,是一个 Ruby 语言所写的项目,由 Wade Alcorn 领导的团队开发。在人们越来越关注针对 Web 和移动客户端的 Web 传播攻击的情况下,BeEF 允许渗透测试人员使用客户端攻击媒介来评估目标环境的安全状况。与其他安全框架不同,BeEF 超越了强化的网络边界和客户端系统,并在一扇开放的门(Web 浏览器)的上下文中检查可利用性。BeEF 将钩住一个或多个 Web 浏览器,并使用它们从浏览器上下文中启动定向命令模块和对系统的进一步攻击。
2. 安装Kali Linux里有,没有的话自行使用apt-get isntall beef-xss安装
二. BeEF使用1. 初次使用(1) 启动安装好后,终端输入beef-xss即可启动
这样他就启动了,并弹出一个浏览器窗口。需要你进行登录
可以看到,BeEF的启动其实是启动了一个服务,不过他好像说少 ...