ssrf漏洞 php,DokuWiki fetch.php SSRF漏洞与tok安全验证绕过分析

作者:baolongniu of Tencent Security Platform Department

关于DokuWiki

DokuWiki是一个开源wiki引擎程序,运行于PHP环境下。DokuWiki程序小巧而功能强大、灵活,适合中小团队和个人网站知识库的管理。

漏洞简介

DokuWiki最新 2016-06-26a版本存在一个SSRF漏洞,当DokuWiki fetch.php允许下载外部资源时(fetchsize不为零),外部攻击者可以通过猜解tok绕过安全验证,请求服务器内网资源。

漏洞分析

DokuWiki fetch.php文件允许下载外部文件,外部文件地址传递给参数media,但是在请求时候有tok安全校验,请求如下:

/dokuwiki/lib/exe/fetch.php?media=http://192.168.141.128:80/test.php?test.jpg&tok=0f35df

安全校验在checkFileStatus()函数中,如图:

e2b341bb53fc2d6369c9bcbf5cf5ec7e.png

由上图中可见,tok安全校验就是把$media、$width(不传递值为空)和$height(不传递值为空)三个变量在media_get_token()函数中计算一下,然后把结算结果和tok参数比对,只有比对一致才能通过校验,继续看media_get_token()函数,如图:

0a527efe447aba2871dbb3c26f6ff5dc.png

由上图中可见,media_get_token()函数把width和token变量)返回。继续看auth_cookiesalt()函数,如图:

3be487639920c7de2072f4b60119ba63.png

由上图中可见,auth_cookiesalt()的函数值是由DokuWiki _htcookiesalt2文件存储的盐值,再拼接session_id()函数构成的。

auth_cookiesalt()函数使用session_id()函数生成salt是不安全的,在最新php版本中session_id()函数存在一个bug(低版本php不存在),构造如下代码:

session_name("niubl");

session_start();

var_dump(session_id());

直接请求test.php文件返回:

9fb784c7940a5707899f07249e02c962.png

设置Cookie参数niubl值为http://192.168.141.128:80/test.php?test.jpg ,再次请求:

4c7b18afeec221e2e2b2c75e1089d3ae.png

由上图中可见,php发现Cookie参数niubl值中含有非法字符,但是php并没有重新生成session_id,导致传入的非法字符仍然可用,被var_dump()函数打印了出来。

auth_cookiesalt()函数使用session_id()函数生成salt,现在session_id()函数外部可控,且可以接收非法字符串,那么我们找一出使用依赖auth_cookiesalt()函数生成数值的代码,就可以推测_htcookiesalt2了。

3fb6e3aa3123a5cc722318e6f91354cc.png

上图中getSecurityToken()是用来产生CSRF token的函数,CSRF token广泛出现在表单中,他的实现和media_get_token()函数类似,只是PassHash::hmac()函数第二个参数换成了session_id()加$INPUT->server->str('REMOTE_USER'),$INPUT->server->str('REMOTE_USER')变量在不传递参数的时候值为空,那么我们可以通过传递session_id()为fetch.php的media参数,这时getSecurityToken()函数就生成了我们进行SSRF攻击时需要校验的tok。getSecurityToken()函数广泛用表单token中,测试:

da8668ea049ab783cd6545d79e5fe992.png

上图中,传递Cookie参数DokuWiki值http://192.168.141.128:80/test.php?test.jpg ,生成sectok值0f35dfabdb3fb00c4de06facec6c2d43 ,他的前6位0f35df就是我们进行SSRF攻击时需要校验的tok值,验证:

ba6d062fb52f42fe92510dd8e629215c.png

4efa64a3efd70878ccc20860b002a9a1.png

漏洞修复

php的bug( https://bugs.php.net/bug.php?id=73860 )已经反馈给php官方开发团队,开发人员认为这个bug导致的漏洞是因为webapp使用了sessiond_id 生成salt,依赖session_id生成salt是不合理的,目前该bug仍未被确认。

本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/230/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Codevs] 1014 棋盘染色

1049 棋盘染色 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题目描述 Description有一个55的棋盘,上面有一些格子被染成了黑色,其他的格子都是白色,你的任务的对棋盘一些格子进行染色,使得所有的黑色格子能连成一块&…

专访王田苗:机器人是“刚需”,市场正处于逆周期增长

来源:亿欧【本文三大核心点】一、未来老龄化社会的到来与新生代快节奏生活工作的方式让智能机器人处于长期刚性需求。二、人工智能算法、软体材料、5G互联网开放软件平台、多机与人机协作、云服务租赁共享模式等技术给新一代机器人发展带来了大量的产业机遇。三、中…

php算法入门,a011.PHP实战:加密解密,简单算法入门

原标题:a011.PHP实战:加密解密,简单算法入门在PHP编程中,很多时候我们会遇到传递信息的问题,而传递过程中为了安全,我们肯定是要进行加密和解密的,这里,我们来说一说使用PHP怎么进行…

tomcat的安装及配置

1.首先进tomcat官网下载zip压缩文件:http://tomcat.apache.org/download-90.cgi 2.解压缩到指定文件压(后面配置环境变量会用到) 3.配置环境变量 4.打开解压后文件中的bin文件夹,运行startup.bat 如上图结果则配置成功 5.打开浏览…

好文|奔向宇宙,揭开太空机器人的神秘面纱

来源:千慧知识产权空间机器人是在太空中执行空间站建造与运营、卫星组装与服务、行星表面探测与实验等任务的一类特种机器人,是世界航天大国竞相发展的热点领域。当前,空间机器人已经在国际空间站、飞船、卫星等飞行器的在轨维护、空间装配、…

关于6G,这些你应该了解

来源:内容来自公众号中国电子报——赛迪智库前 言当前,全球新一轮科技革命和产业变革正在加速演进,人工智能(AI)、VR/AR、三维(3D)媒体和物联网等新一代信息通信技术的广泛应用产生了巨大的传输…

php显示动态通告信息方式,Joomla PHP通知,警告和错误指南

网站不可避免地会出现问题。无论您使用的是Joomla还是其他产品,都需要发现并修复问题。Joomla使用PHP,当PHP有问题时,它将向您报告。但是,这些错误通常会出现在您的网站上,并且对访问者可见:在本教程中&…

Facebook爆锤深度度量学习:该领域13年来并无进展!网友:沧海横流,方显英雄本色...

来源:AI科技评论近日,Facebook AI和Cornell Tech的研究人员近期发表研究论文预览文稿,声称近十三年深度度量学习(deep metric learning) 领域的目前研究进展和十三年前的基线方法(Contrastive, Triplet) 比较并无实质提…

不可不看的干货——机器人自主系统的技术构建:感知、决策和执行

来源:机器人大讲堂近年来,随着工业 4.0 标准的不断推进和人工智能、物联网、大数据等技术的快速发展,机器人产业迎来新一轮浪潮,正逐步向系统化、模块化、智能化的方向发展。除了传统的工业机器人外,在特种机器人和服务…

php伪数组转换为数组,JavaScript伪数组用法实例

在Javascript中什么是伪数组?伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。本文实例讲述了JavaScript伪数组用法,希望能帮助到大家。1.典型的是函数的 argument参…

前沿科技 | 中科院科学家研究揭示奥陶纪末生命大灭绝新机制

来源:中国科学院火山活动是全球气候变化和海洋化学组成巨变的主要驱动力之一,其中“平流层火山喷发”(即火山物质喷发至平流层-大约离地表20公里)对全球气候有直接的影响。在过去5.4亿年的地质历史中,发生了数次大规模…

空地通信传输详解——飞机是这样和地面通信的

来源:电子万花筒飞机在空中飞行时是如何与地面联络的呢?飞机在飞行中的数据如何进行空地传输呢?那些部件的数据可以被传输呢?飞机的导航、通信、识别系统主要就是保证飞行的,保障在天上、空对空、空对地、地对空、空对…

​IBM人工智能芯片的新进展

来源:内容由半导体行业观察(ID:icbank)编译自「Venturebeat」,谢谢。IBM苏黎世实验室的研究人员本周在Nature Communications上发表了一篇论文。在文中他们声称,基于相变存储器的技术,他们已经开…

php程序员写bug,程序员的修炼-我们为什么会编写BUG

在最近的一周,我维护的业务系统出现了很多坏毛病,一周七天crash掉了4次,每次都需要都是因为一点很小的问题,触发了蝴蝶效应,导致整个系统全盘崩溃,于是产生除了叙述本篇的想法,当然这并不是为了掩盖我在Coding上的一些细节处理和职责疏忽,只是为了从根本的细节上去分…

强人工智能和弱人工智能

来源:人机与认知实验室人工智能的一个比较流行的定义,也是该领域较早的定义,是由当时麻省理工学院的约翰麦卡锡在1956年的达特矛斯会议上提出的(对此有争议):人工智能就是要让机器的行为看起来就像是人所表…

张亚勤2020寄语哥伦比亚大学毕业生:引领未知时代

(哥伦比亚大学巴特勒图书馆)2020年5月18日,人工智能和数字视频的世界级科学家和企业家,美国艺术与科学院院士、百度前总裁、清华大学智能科学讲席教授张亚勤博士,在哥伦比亚大学工程学院的毕业典礼上发表了主题演讲。张亚勤说:“面…

科技部部长:基础研究是科技创新“总开关”

来源:中国新闻网中新社北京5月19日电 (记者 孙自法)“基础研究是科技创新的‘总开关’!”言及基础研究在中国科技发展、增强原始创新能力中的地位与作用,中国科学技术部部长王志刚这样概括道。国务院新闻办公室19日下午在北京举行加快建设创新…

从通用到专用,5G时代IP核的新故事

来源:半导体行业观察如同芯片在不断迭代,IP核也在不断进步。集成电路技术60年来基本遵循摩尔定律的演进规律。随着进入后摩尔时代,即两年一代技术更换的节奏开始放缓,设计和制造企业开始更加重视产品的多样化发展,而不…

连续信号与系统频域分析的matlab实现,实验十三 连续信号与系统频域分析的MATLB实现...

实验十三 连续信号与系统频域分析的MATLB实现 实验十三 连续信号与系统频域分析的 MATLAB 实现70实验十三 连续信号与系统频域分析的 MATLAB 实现一、实验目的 1. 掌握连续时间信号频谱特性的 MATLAB 分析方法;2.掌握连续系统的频率响应 MATLAB 分析方法方法。二、实…

[机器学习] Apriori算法

适用场合 Apriori算法包含两部分内容:1,发现频繁项集 2,挖掘关联规则。 通俗地解释一下,就是这个意思:1.发现哪些项目常常同时出现 2.挖掘这些常常出现的项目是否存在“如果A那么B”的关系。 举个例子:网店…