实战渗透-从敏感文件泄露到Getshell

日常挖EDUSRC的思路欢迎各位大佬指点或补充~ 目标站点如下: 是一个大型仪器预约平台先简单通过信息收集得到以下信息 中间件:IIS 开发语言: .NET (MVC) 个人比较偏向于渗透NET开发平台的站点,因为其不区分大小写,在生成字典的时候不需要花费太多时间。 该系统提供两个功能注册以及登录。由于这套系统比较常见,基本每个知名高校都有这么一个仪器平台。所以注册后的功能点就没必要再去花功夫探测了(有的话也被大佬交完了)。 这里我直切主题: 先FOFA搜索相同站点。 由于是NET平台可以先搜集以下所有相同系统的站点。然后扫一扫备份之类的。常见的字典如: web.rar 备份.rar 等等。.具体看运维的习惯(部分运维喜欢用bak)。 使用某大佬的FOFA提取工具提取下结果 然后使用御剑(由于御剑好像不支持https所以这里我指定了协议为http。如果大佬们有支持https或者可以批量扫描的工具可惜推荐下(造轮子太麻烦性能渣)) 在某站点下发现疑似备份文件bak.rar 先下载下来。 解压后发现里面都是一些dll文件。由于是NET平台,源代码都会打包成dll文件。也就是说这些dll文件里面存放着网站的源代码。 那么直接逆向编码,开始代码审计~~~~ 发现有点多。。。。由于是MVC模式我们可以直接搜索Controller(控制器) 开始审计~这里先挨个探索(我个人比较喜欢直切主题: 未授权的文件上传-日志写入(部分系统是由请求头决定文件名-反序列化-SQL注入)) 未授权的文件上传,这个比较好找。。有没有进行文件效验一看就知道。部分程序员都是把操作写成了一个方法,统一调用。 如: 在UserController下面的IniUserPhotoUpload 方法就是一处文件上传的操作 这里表面看着并没有什么文件属性效验的操作。但是最终写入是由MakeThumbnail操作的。 在MakeThumbnail下面 第151行,可以看到将参数传递给了MakeThumbnailByImg 方法。追踪此方法 在186行可以明显的看出这里进行了文件效验,且规定了后辍为jpgjpegbmpgifpngico 才可以成功上传 阅读全文 箭头
7个评论-3460个浏览
收藏 收藏

WordPress Real-Time Find and Replace插件CSRF to Stored XSS漏洞分析

前言 Real-Time Find and Replace是一个可以实时查找和替换WordPress网页数据的插件。据统计,该漏洞已安装在100000多个站点上。 近日Real-Time Find and Replace 3.9版本被披露存在一处高度严重的安全问题:由于Real-Time Find andReplace的核心功能模块并没有采用随机数来校验请求的合法性,从而导致跨站点请求伪造(CSRF)漏洞的产生。攻击者可以利用此漏洞,使用恶意代码替换目标站点页面上的任何内容。 漏洞分析 预备知识 这一部分是对本次漏洞分析过程中涉及到的WordPress一些函数与机制的介绍,如果对WordPress很了解可以直接跳过 Real-Time Find and Replace插件是如何注册的 首先分析下Real-Time Find and Replace插件是如何注册到wordpress的菜单栏中的,以及WordPress是如何调用该插件 real-time-find-and-replace插件代码很少,只有一个php文件real-time-find-and-replace.php 首先看wp-content\plugins\real-time-find-and-replace\real-time-find-and-replace.php 17行处的far_add_pages方法,该方法中使用add_submenu_page方法对wordpress的顶级菜单添加子菜单 add_submenu_page方法的参数说明如下 parent_slug- 父菜单的子名称(或标准WordPress管理页面的文件名) page_- 选择菜单后在页面标题标签中显示的文本 menu_- 菜单中使用的文本 capability- 向用户显示此菜单所需的功能 menu_slug- 别名,用于引用此菜单 function- 用于输出此页面内容的函数 这里重点看下parent_slug参数和function参数 parent_slug参数值为tools.php 因此这里是在工具菜单栏处添加此子菜单 从后台页面显示结果来看,的确如此 除此之外,通过parent_slu 阅读全文 箭头
5个评论-3175个浏览
收藏 收藏

Spring Boot 2.x Actuator配置不当RCE漏洞复现

0x00 前言 在对springboot acturator配置不当漏洞进行学习时,常见的是针对springboot 1.x版本的2种方式。对于springboot 2.x版本的利用很少提起,在阅读到了一篇在springboot 2.x版本下的利用方式后,对其进行复现,故有此文章。文章中的环境放在github上了 0x01 HikariCP数据库连接池 之前的两个RCE都是在Spring Boot 1.x版本下进行的,在spring 2.x下的版本如何进行RCE呢。幸运的是,Spring Boot 2.x默认使用的HikariCP数据库连接池提供了一个可以RCE的变量。这个变量就是spring.datasource.hikari.connection-test-query。这个变量与HikariCP中的connectionTestQuery配置相匹配。根据文档,此配置定义的是在从池中给出一个连接之前被执行的query,它的作用是验证数据库连接是否处于活动状态。简言之,无论何时一个恶心的数据库连接被建立时,spring.datasource.hikari.connection-test-query的值将会被作为一个SQL语句执行。然后利用SQL语句中的用户自定义函数,进行RCE。 0x02 H2 CREATE ALIAS 命令 H2数据库引擎是一个流行的java开发数据库,非常容易与Spring Boot集成,仅仅需要如下的一个dependency。 com.h2data h2 runtime 在H2中有一个非常重要的命令,与PostgreSQL中的用户定义函数相似,可以用CREATE ALIAS创建一个java函数然后调用它,示例如下: CREATE ALIAS GET_SYSTEM_PROPERTY FOR "java.lang.System.getProperty"; CALL GET_SYSTEM_PROPERTY('java.class.path'); 仿照这个,创建命令执行的java函数可以如下: String shellexec(String cmd) throws java.io.IOException 阅读全文 箭头
6个评论-3420个浏览
收藏 收藏

Hw-应急响应Windows系列

给予小白去参加攻防演练防守方的一些方法 攻防演练的防御与常规的黑客防御不同。防御、检测、响应、都被大大压缩,种种要求导致攻防演练中的应急响应流程必然与日常存在一定差异。 以下是针对攻防演练个人经验所积累下的防守方应急响应流程,如有文章有错误,请师傅们指出多多担待。 1.对端口进行排查 netstat -ano 找到可疑端口的PID tasklist | findstr XXXX 查看PID对应的程序 wmic process | findstr "wps.exe" 2.查看计划任务 compmgmt.msc 3.查看进程 tasklist 4.查看是否存在异常启动项 msconfig或打开任务管理器 5.启动服务 services.msc 6.事件查看 eventvwr.msc 7.查看各盘下的temp有无异常文件(Windows 产生的临时文件) windows/temp 8.查看快捷桌面 %UserProfile%\Recent 9.查看系统变量 path /pathex 10.查看当前会话 query user 11.查看系统补丁信息 systeminfo 12.查看隐藏用户 net user 看有那些用户,然后在输入zhinet localgroup administrators 或者 net localgroup users或使用regedit打开注册表编辑器找到[HKEY_LOCAL_MACHINE]——[SAM]——[SAM]——[Domains]——[Account]——[Users],这里下面的数字和字母组合的子键是你计算机中所有用户帐户的SAM项。 子分支[Names]下是用户名,每个对应上面的SAM项。 13.查看可疑文件 %UserProfile%\Recent 14.检查第三方软件漏洞 如果您服务器内有运行对外应用软件(WWW、FTP 等),请您对软件进行配置,限制应用程序的权限,禁止目录浏览或文件写权限 15.查看文件修改时间 16.利用部署的设备查看异常流量 17.查看弱口令(rdp、ssh、ftp等)和远程端口是否对外开放 18.使用D盾进 阅读全文 箭头
8个评论-3150个浏览
收藏 收藏

原创干货 | 【恶意代码分析技巧】04-exe_VB

1.VB的介绍 今天我们来介绍一下Visual Basic样本的分析技巧。Visual Basic 是一种具有良好图形用户界面的程序设计语言。 Visual的意思是“可视的”,也就是直观的编程方法,在编程时不需要编写大量代码去描述界面元素的外观和位置,只需把预先建立的对象拖放到窗体上。Basic是指BASIC语言,VB使用了BASIC语言作为代码。 VB采用面向对象和事件驱动的程序设计机制,这种机制下,VB程序往往是多线程的,在分析过程中定位主线程和事件处理过程尤为重要。 在编译方式上,VB既有直接编译生成的可执行程序,也有间接编译生成的可执行程序,不同的编译方式有不同的分析方法。直接编译又被称为自然编译(Native-Compile),是编译器将高级语言转化为汇编代码,并经链接生成exe程序的过程;间接编译又被称为伪编译(Pcode-Compile),伪编译是编译器将高级语言转换为某种语言后,将其解释、执行此代码的一段程序一同链接,生成exe程序。 Visual Basic 1~4都必须将源代码编译成 VB 伪代码后解释执行,都是P-code,之前文章中介绍的python、java编译的实质也是这个。此类解释型语言,都有对应的反编译器,可以使用Dodi’s VB 3/4 Disassembler反编译VB3和VB4的VB程序。VB 1~4已经很古老了,笔者在实际工作中从来没有遇到过,在此就不作分析。 VB7以及之后的VB版本,又被称作VB.Net,可以采用.Net程序的分析方式进行分析,这在本系列之后的文章中再做介绍。 在实际工作中,遇到最多的VB程序是VB5和VB6,这也将是本文分析的重点。VB3和VB4,VB程序都是P-code 编译,单纯调用 vbrun*.dll解释执行。到了VB5,微软在继续保留 P-code 编译的同时也引入了 Native 编译方式,其运行库变为msvbvm*.dll。接下来就针对这两种编译方式生成的VB程序进行分析。 2.Native和PCode比较 2.1.Native自然编译 自然编译的VB程序,直接生成x86汇编代码,可以直接使用OD、IDA进行分析。 但是需要注意的是,VB函数的调用遵循 stdcall 原则,即函数入口参数按从右到左的顺序入栈,并由被调用的函数在返回前清理传送参数的内存栈。而且VB程序 阅读全文 箭头
5个评论-3185个浏览
收藏 收藏

利用SQLMAP获取os-shell的过程分析「UDF提权」

结论 关于MySQL读写文件的条件限制是老生常谈的问题,由于SQLMAP获取os-shell的两种方法均需要文件写入操作,这里先摆出结论: 1、MySQL服务默认以mysql用户权限启动,并没有危险目录(/usr/lib64/mysql/plugin[root 755]、/var/www/html[root 755]、/var/spool/cron[root 700]、/root/.ssh[root 700]等)下的文件写入权限。 2、MySQL 5.6.34版本以后的secure_file_priv参数默认值为NULL或指定的/var/lib/mysql-files,即禁止在危险目录写入。 * 针对结论1,受害者可以使用--user=root启动服务获取系统root权限;也可以将相应目录给予o+w权限(其他用户写权限)。实际情况下前者几乎不存在,后者却存在许多嫌麻烦的糊涂蛋给予web目录(/var/www/html)777权限的,以至于被写入webshell。 * 针对结论2,secure-file-priv属于Server System Variables,需要在配置中修改。即使有条件修改配置文件(/etc/my.cnf),也必须重启MySQL服务才能生效。 * 至于文件读取,所需条件同理,本文不做分析。 + System root和System mysql、System root和MySQL root、MySQL root和MySQL user有明显区别。 默认环境 CentOS 7.7.1908、MySQL 5.7.29(--secure-file-priv=/var/lib/mysql-files)、SQLMAP 1.4.2 使用sqlmap -hh可以得到详细帮助文档,可以发现:-d参数是连接数据库参数,--os-shell获取交互shell。 -d DIRECT Connection string for direct data connection --os-shell Prompt for an interactive operating system shell 利用SQLMAP实现MySQL os- 阅读全文 箭头
2个评论-3453个浏览
收藏 收藏

通过一系列漏洞突破域名搜索范围限制(给使用CORS的开发者的小提示)

原文:Broke limited scope with a chain of bugs (tips for every rider CORS) 作者:Valeriy Shevchenko 前言 一天早晨,有人邀请我加入一个私有的漏洞赏金计划。我在安全方面的经验大多数都是来自于这样的私有项目。一方面来说这是件好事,因为不需要急着赶在其他人之前找到最危险的漏洞;但是另一方面,这不利于个人成长。当然它肯定有所益处,但是在这种情况下成长速度很慢。给我写信的人要了我的HackerOne账户链接,我把个人资料的链接给了他,但是我其实有一些尴尬,因为我当时(5个月前)的信誉度为零。好吧,不是,其实是负数。因为我曾经联系过这个公司,告诉他们一个有关“损坏的功能性(broken functionality)”的漏洞。但在那个时候,除了HackerOne我找不到更好的联系方式了,于是我报告了这个问题,结果因为该问题与安全领域无关所以得到了负数的信誉评分,在那之后我就没再用过这个账号。从那时起,我就决定无论如何都要改变这样的境况。 漏洞挖掘过程 我决定通过几个项目重建信心,所有的项目都是私有的,但这并不能简化我的困难,因为在此之前已经有很多在信息安全领域享有盛名的人发现了许多漏洞。 在第一个项目中,搜索漏洞的范围有限(即只允许测试特定的域名和子域名)。 这样的要求总是让我很惊讶。因为如果有人在搜索范围之外的子域名上发现了数据泄露问题,你仍然无法摆脱GDPR或者CCPA的罚款。当然,这些都是经济领域的问题,但在我看来,限制范围会带来更大的风险。 当我刚刚开始在一个主域名上寻找漏洞时,就遇到了一个有趣的惊喜。在向服务器发送了几个请求之后,我找到了一个配置得十分奇怪的CORS策略。 在包含Oringin:attacker.companyname.com的请求发送后,我收到的响应允许*.companyname.com,而且还包含一个额外的头Access-Control-Allow-Credentials:true。 我把这种情况称为"子域名通配符(Subdomain Wildcard)"。这种情况有些奇怪,因为子域名并不包含在漏洞搜索项目内,我决定向这个公司证明,在这种情况下,这个项目 阅读全文 箭头
7个评论-3090个浏览
收藏 收藏
更多

加载中,请稍候

请求超时,点击重新加载

提问
写文章

装饰 推荐专栏

换一换

攻守互搏
Android应用安全
聊聊大数据
新型网络犯罪

装饰 权威推荐

广东省应急响应平台
广东网警
广东省计算机信息网络安全协会
专栏
小密圈

装饰 安全达人

换一换

鲤鱼羊
淡然的小熊猫
青蛙
台奕要安全
一夜奈良山
killer
n8programs
梦想橡皮擦