一次异常艰难的渗透测试

news2024/11/15 19:58:17

0x01 暴力破解

朴实无华的弱口令,我都怀疑是不是交互式蜜罐。

0x02 文件上传

该系统所有文件上传功能均通过同一方式进行上传。

文件列表,可以看到文件上传后,从文件列表处能看到FileDir+FilePath为文件路径的存放路径,文件名为GUID去掉-号。

而系统对文件的加载方式是通过FileGUID对文件进行加载,FileGUID不存在注入。

0x03 SQL注入

通过对各个功能点进行测试,最终在投票功能的修改参与人功能中发现了注入功能点,得到用户表为t_userinfo,而且看起来是可以执行多条语句的堆叠注入。

涉及到DELETE和INSERT还是放弃使用SQLMAP,打个报错注入,嗯...吞字符串,使用substr分割就行,但是太慢了,不是我的风格。

并且测试时发现在堆叠注入中可以把数据直接返回,开发怎么写的代码...

哟呵,还有waf,我前面这么敏感的操作你都不拦现在给我拦了?看起来应该不会太强大。

果不其然,最终加上左右括号就绕过了。

最终读取到管理员的账号密码,进入后台一顿测试,终于还是什么都没有发现,回过头来研究研究注入吧,mysql拿权限的方式不多,而且是普通用户权限。

0x04 组合漏洞

难道就这样结束了吗,突然灵光一闪,堆叠是吧,前面的图片加载方式貌似就是通过FileGUID从数据库查询保存的路径来读取文件,那岂不是可以通过堆叠设置文件路径读取任意文件?

那么下一个问题,web路径呢?有没可能目标中间件是Tomcat,~试试

只能说运气不错。

0x05 读取源码

读取web.xml,还发现了一个/admin/login.jsp,划重点后面会考,当时没有注意这个位置。

先读取源码如com.xxx.core.filter.SecurityFilter在tomcat的文件位置为/webapps/ROOT/WEB-INF/classes/com/xxx/core/filter/SecurityFilter.class,当然开发有可能把核心打包为jar文件放到/lib/目录,那就没办法读了,猜包名太难了。

MD,FileDir还有长度限制,但问题不大,因为还有读取文件的方式是FileDir+FilePath,超过长度的字符写在FilePath就行。

依照此方法+源码内部依赖的类,我获取了部分的源码,并在其中审计了一些漏洞,如认证权限绕过,注入点等。但是还是很可惜没有办法getshell,因为这个网站的开发非常神奇,后续会为大家介绍。

0x06 后台登录

有点烦,后续进行了:读取tomcat日志,log4j日志(不存在log4j漏洞),配置文件、猜测jar包名、备份文件(webapps/ROOT.压缩文件后缀、绝对路径tomcat.压缩文件后缀等)各种一顿操作,虽然没啥用,但也获取到了一部分的信息,这在后续给到了我很多帮助。

回到web.xml,访问了/admin/login.jsp,大概是这样(自己画的)

使用数据库之前读取的到前台管理用户账号密码发现登录不了,难道存在另一个表了?配置之前获取到的log4j的debug日志找到了执行的sql语句,尝试读了一下,发现居然读不到该表。

???惊呆了,不对,有一万分的不对,再详细的回想一下,我从数据库配置文件中读取到的明明是root用户,而注入执行的是普通用户。

仔细的审计了一下获取到的部分源码,狗东西跟我玩这一套。

网站的大概设计是:前台通过SourceCode和ROOT的数据库,获取数据库中的配置好的数据库配置信息,设置一个新的数据源,前台的数据都从这个数据源获得,所有导致注入点获取的是普通用户权限的配置源,而不是ROOT用户的。

不过他获取配置源的位置存在注入,也就是说我们依旧可以使用ROOT的通过注入执行语句,不过这次的是selectOne不是堆叠,问题不大,我主要是想获取它的后台密码。

0x07 jdbc反序列化

在后台中第一时间发现了数据源配置的功能点,和我之前猜想的一致,第一时间想到打jdbc反序列化,很可惜目标不出网。

0x08 RCE

后台功能点也不算多,能测的都测差不多了,不过有个位置是用来调试sql语句的位置,至于为什么有这个功能,因为他本身就是通过后台配置功能点,来实现对网站接口动态控制,我之前获取到的源码,基本上就是公共类的实现。

找了一会找到了一个ROOT权限执行的语句的功能点。

查询secure_file_priv

日志写入getshell

.......这开发脑子有坑,这SQL语句还用XML解析,服了不用想就知道是<>这两个符号导致的。

xml转换一下

< 转换为 &lt;
> 转换为 &gt;

访问一下文件,打完收工。

0x09 总结

一次很有意思的渗透测试:

从暴力破解——》普通用户权限注入——》堆叠注入+文件下载的任意文件读取——》配置文件+源码审计——》ROOT权限SELECT注入——》读取后台账号密码——》jdbc反序列化不出网——》ROOT权限执行SQL语句功能——》日志文件写shell——》xml格式踩坑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2041489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatis-plus执行delete时报错Prohibition of full table deletion

1.由于mybatis预防全表删除&#xff0c;所以会报错&#xff0c;想要执行全表数据删除需要加注解 2.同时执行语句修改为注解的sql语句 InterceptorIgnore(blockAttack "true")

Python利用xlrd复制一个Excel中的sheet保留原格式创建一个副本(注:xlrd只能读取xls)

目录 专栏导读库的介绍库的安装完整代码总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍&#x1f308; 博客主页&#xff1a;请点击——> 一晌小贪欢的博客主页求关注 &#x1f44d; 该系列文…

阿里云无影?云电脑有心

很高兴收到了阿里云无影云电脑的测试邀请&#xff0c;试用结果让我非常惊讶。我通过该产品看到&#xff0c;阿里云“又”要开拓出一个千亿级的云电脑市场——为什么要说“又”&#xff1f;因为“就”是他们带头开拓了千亿级的公有云市场啊。 本文不仅是在帮企业用户做选型分析&…

npm error,淘宝源过期,切换源

npm error&#xff0c;淘宝源过期&#xff0c;切换源 npm ERR! request to https://registry.npm.taobao.org/file-saver failed, reason: certificate has expired 淘宝源过期&#xff0c;切换源&#xff1a;流水线配置&#xff1a; sh:"npm config set registry https:…

玩转haproxy --花十分钟看看,全是干货

Haproxy是一款开源集群软件&#xff08;在上一篇文章中提到过集群的相关知识&#xff0c;往期点击http://t.csdnimg.cn/qWtQG&#xff09;是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的&#xff0c;是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器 …

有道云docx转换markdown,导入hugo发布到github page,多平台发布适配

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 有道云导出docx 有道云笔记右上角更多按钮选择【导出为Word】&#xff0c;可以导出docx文档 docx转换markdown 尝试了几个docx转markdown的python库后&…

1.2 数据库管理系统的基本原理

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

子网掩码是什么?

子网掩码&#xff08;Subnet Mask&#xff09;是用于划分网络的一个32位的二进制数&#xff0c;用于指示IP地址中哪些位用于网络标识&#xff0c;哪些位用于主机标识。 在IPv4网络中&#xff0c;IP地址由32位二进制数组成&#xff0c;通常表示为四个十进制数&#xff0c;每个数…

Leetcode—1006. 笨阶乘【中等】

2024每日刷题&#xff08;156&#xff09; Leetcode—1006. 笨阶乘 实现代码 class Solution { public:int clumsy(int n) {stack<int> st;st.push(n);n--;int idx 0;while(n ! 0) {if(idx % 4 0) {int num st.top() * n;st.pop();st.push(num);} else if(idx % 4 …

plsql如何连接sql server?plsql连接oracle数据库如何配置

在当今企业数据管理和应用开发中&#xff0c;数据库的互联互通已成为常态。特别是在多数据库环境下&#xff0c;如Oracle和SQL Server的结合使用&#xff0c;为企业提供了更广阔的数据处理能力。PL/SQL作为Oracle数据库的过程化扩展语言&#xff0c;能够高效地管理Oracle数据库…

应急响应:病毒处理的方法---实战案例.(手动版)

什么是应急响应. 一个组织为了 应对 各种网络安全 意外事件 的发生 所做的准备 以及在 事件发生后 所采取的措施 。说白了就是别人攻击你了&#xff0c;你怎么把这个攻击还原&#xff0c;看看别人是怎么攻击的&#xff0c;然后你如何去处理&#xff0c;这就是应急响应。 目录&…

带你速通C语言——位运算符、结构运算符与指针运算符(5)

位运算符、结构运算符与指针运算符 C语言的位运算符、结构运算符和指针运算符是对数据的更底层操作&#xff0c;使得C语言尤其适合进行系统编程和处理复杂的内存管理任务。下面详细介绍这些运算符。 1.位运算符 位运算符作用于整数类型的操作数的二进制位。以下是C语言中可用的…

报SBAT self-check failed: Security Policy Violation突然开不了机

台式机一直用的好好的没什么问题&#xff0c;早晨突然开机就关机提示&#xff1a; 查了一下网上资料&#xff0c;在BIOS里面搜“安全启动”改为禁用就行&#xff0c;该电脑微星主板直接由开启改为禁用&#xff0c;重启进入系统。很奇怪&#xff0c;一直用的没啥&#xff0c;突然…

Spring AOP应用指南:概念、通知与表达式分析

目录 一.AOP的基础概念 二.Spring AOP的应用场景 三.Spring AOP的核心概念 ▐ 切点(Pointcut) ▐ 连接点(Join Point) ▐ 通知(Advice) ▐ 切面(Aspect) 通知类型 四.PointCut与Order 切面优先级 五.切点表达式 execution(...)表达式 annotation表达式 一.AOP的基…

Java spring SSM框架--mybatis

一、介绍 Spring 框架是一个资源整合的框架&#xff0c;可以整合一切可以整合的资源&#xff08;Spring 自身和第三方&#xff09;&#xff0c;是一个庞大的生态&#xff0c;包含很多子框架&#xff1a;Spring Framework、Spring Boot、Spring Data、Spring Cloud…… 其中Spr…

NLP实战二:Pytorch实现TextRNN文本分类

中文数据集 我从THUCNews中抽取了20万条新闻标题&#xff0c;已上传至github&#xff0c;文本长度在20到30之间。一共10个类别&#xff0c;每类2万条。 类别&#xff1a;财经、房产、股票、教育、科技、社会、时政、体育、游戏、娱乐。 数据集划分&#xff1a; 数据集数据量…

Python 接口自动化测试中的深拷贝与浅拷贝~

前言 在编写接口自动化测试脚本时&#xff0c;我们经常需要复制数据结构来模拟不同的测试场景。Python 提供了两种拷贝机制&#xff1a;浅拷贝和深拷贝。理解这两种拷贝的区别对保证测试数据的一致性和准确性至关重要。 浅拷贝 vs 深拷贝 浅拷贝&#xff1a;只复制引用&#…

软件架构:依赖倒置原则的魅力

依赖倒置原则&#xff08;Dependency Inversion Principle, DIP&#xff09;是面向对象设计的基本原则之一&#xff0c;由罗伯特C马丁&#xff08;Robert C. Martin&#xff09;提出。这一原则旨在降低系统中各个组件之间的耦合度&#xff0c;提高系统的可维护性和可扩展性。 …

四川正信法律:借钱不还报警有没有用

在日常生活中&#xff0c;金钱往来是人际交往中不可或缺的一部分。然而&#xff0c;当借钱不还成为一种普遍现象时&#xff0c;人们往往会感到困惑和无奈。那么&#xff0c;面对借钱不还的情况&#xff0c;报警是否有用呢? 我们要明确一点&#xff0c;借钱不还属于民事纠纷&am…

注意力机制 — 它是什么以及它是如何工作的

一、说明 注意力机制是深度学习领域的一个突破。它们帮助模型专注于数据的重要部分&#xff0c;并提高语言处理和计算机视觉等任务的理解和性能。这篇文章将深入探讨深度学习中注意力的基础知识&#xff0c;并展示其背后的主要思想。 二、注意力机制回顾 在我们谈论注意力之前&…