GitHub Pages 构建管道中的命令注入
GitHub 页面
GitHub Pages是一种静态内容托管服务。它允许用户在或自定义域上托管其存储库的内容username.github.io。它广泛用于托管简单的静态页面,例如文档和博客(例如,此博客托管在 GitHub Pages 上)。
为了帮助用户托管美观的内容,GitHub Pages 支持静态站点生成器平台Jekyll。使用 Jekyll,您不必为博客编写 HTML 和 CSS,但您可以编写 Markdown,Jekyll 会将其转换为 HTML 文件。为了更轻松地在整个网站上应用相同的模板和样式,Jekyll 支持主题。
Jekyll 站点的所有设置(例如主题)都存储在 YAML 配置文件中。GitHub Pages 自动执行 Jekyll 设置的部分工作(包括设置某些设置)。
顾名思义,这将自动执行选择 Jekyll 主题的过程。
此 URL 有三个参数:
select是当前选定的主题(如果已经选择了主题)。
source是分支设置中选择的分支。
source_dir是分支设置中选择的目录。
如果我们点击更改主题按钮,我们将进入一个新网页,其中显示多个 Jekyll 主题的预览
但是如果我们在主题选择器 URL 中指定另一个目录会发生什么?事实证明,这是可以接受的行为,GitHub 将使用我们提供的任何目录名称作为源。例如,如果我们使用一个深奥的目录名称,如source_dir=/"test" test test>,GitHub 将在中创建一个基本的 Jekyll 设置/"test" test test>
GitHub 页面
GitHub Pages是一种静态内容托管服务。它允许用户在或自定义域上托管其存储库的内容username.github.io。它广泛用于托管简单的静态页面,例如文档和博客(例如,此博客托管在 GitHub Pages 上)。
为了帮助用户托管美观的内容,GitHub Pages 支持静态站点生成器平台Jekyll。使用 Jekyll,您不必为博客编写 HTML 和 CSS,但您可以编写 Markdown,Jekyll 会将其转换为 HTML 文件。为了更轻松地在整个网站上应用相同的模板和样式,Jekyll 支持主题。
Jekyll 站点的所有设置(例如主题)都存储在 YAML 配置文件中。GitHub Pages 自动执行 Jekyll 设置的部分工作(包括设置某些设置)。
顾名思义,这将自动执行选择 Jekyll 主题的过程。
此 URL 有三个参数:
select是当前选定的主题(如果已经选择了主题)。
source是分支设置中选择的分支。
source_dir是分支设置中选择的目录。
如果我们点击更改主题按钮,我们将进入一个新网页,其中显示多个 Jekyll 主题的预览
但是如果我们在主题选择器 URL 中指定另一个目录会发生什么?事实证明,这是可以接受的行为,GitHub 将使用我们提供的任何目录名称作为源。例如,如果我们使用一个深奥的目录名称,如source_dir=/"test" test test>,GitHub 将在中创建一个基本的 Jekyll 设置/"test" test test>
C2分析
这个C2在我们检测到的C2中活跃度比较高,其活跃时间为今年4月中旬到6月初,其活跃程度可以用我们的图系统直观反映出来
能看到它关联到了比较多的域名和IP,下面是该IP在这段时间的部分域名解析情况
传播分析
PureCrypter采用了downloader+injector的双模块机制,前者被传播后再传播后者,相当于在传播链条上增加了一环,加上作者惯用图片名后缀、编码传输等手段隐藏injector,这些本身就已足够复杂。而作者在downloader传播这块也下了不少功夫,我们看到的有通过bat2exe捆绑破解软件的方式、使用VBS和powershell脚本loader的方式、结合Godzilla前置loader等多种方式,这些操作叠加起来的结果就是PureCrypter的传播链条普遍较深较复杂。在5月份我们甚至发现通过PureCrypter传播Raccoon,后者进一步传播Azorult、Remcos、PureMiner、PureClipper的案例
这个C2在我们检测到的C2中活跃度比较高,其活跃时间为今年4月中旬到6月初,其活跃程度可以用我们的图系统直观反映出来
能看到它关联到了比较多的域名和IP,下面是该IP在这段时间的部分域名解析情况
传播分析
PureCrypter采用了downloader+injector的双模块机制,前者被传播后再传播后者,相当于在传播链条上增加了一环,加上作者惯用图片名后缀、编码传输等手段隐藏injector,这些本身就已足够复杂。而作者在downloader传播这块也下了不少功夫,我们看到的有通过bat2exe捆绑破解软件的方式、使用VBS和powershell脚本loader的方式、结合Godzilla前置loader等多种方式,这些操作叠加起来的结果就是PureCrypter的传播链条普遍较深较复杂。在5月份我们甚至发现通过PureCrypter传播Raccoon,后者进一步传播Azorult、Remcos、PureMiner、PureClipper的案例
Navicat登录认证分析
本文以Navicat16 试用版为例进行分析,登录流程与上述分析相差不多,在登录认证成功之后多了一个查询的操作
MySQL服务端可以利用LOAD DATA LOCAL命令来读取MYSQL客户端的任意文件,然后伪造恶意服务器向连接到这个服务器的客户端发送读取文件的payload。
load data infile语句从一个文本文件中以很高的速度读入一个表中。
首先在本地使用phpstudy开启数据库,并且使用Navicat进行连接
本文以Navicat16 试用版为例进行分析,登录流程与上述分析相差不多,在登录认证成功之后多了一个查询的操作
MySQL服务端可以利用LOAD DATA LOCAL命令来读取MYSQL客户端的任意文件,然后伪造恶意服务器向连接到这个服务器的客户端发送读取文件的payload。
load data infile语句从一个文本文件中以很高的速度读入一个表中。
首先在本地使用phpstudy开启数据库,并且使用Navicat进行连接
DBConnectionCheckController dbCheck JDBC 注入远程代码执行漏洞
publishCaCert 和 gatherConfig 权限提升
以 Horizon 用户身份获得远程代码执行后,我们可以利用以下漏洞获得 root 访问权限。本节包含两个错误,但由于我在最终的漏洞利用链中滥用了它们,我决定将其报告为单个漏洞。
该publishCaCert.hzn脚本允许攻击者泄露敏感文件。
该gatherConfig.hzn脚本允许攻击者获取敏感文件的所有权,Horizon 用户可以使用 sudo 以 root 权限执行这些脚本,无需密码。horizon 用户无法写入这些脚本,因此我审核了这些脚本以查找逻辑问题,从而干净利落地升级。
publishCaCert 和 gatherConfig 权限提升
以 Horizon 用户身份获得远程代码执行后,我们可以利用以下漏洞获得 root 访问权限。本节包含两个错误,但由于我在最终的漏洞利用链中滥用了它们,我决定将其报告为单个漏洞。
该publishCaCert.hzn脚本允许攻击者泄露敏感文件。
该gatherConfig.hzn脚本允许攻击者获取敏感文件的所有权,Horizon 用户可以使用 sudo 以 root 权限执行这些脚本,无需密码。horizon 用户无法写入这些脚本,因此我审核了这些脚本以查找逻辑问题,从而干净利落地升级。
❤1
SSD 咨询 – APPLE SAFARI IDN URL 欺骗
总结
Apple Safari 处理不当,导致攻击者可以使用某些相似的字符代替真实字符,从而让受害者误以为他们已经访问了某个网站,而实际上他们正在访问另一个网站。
漏洞摘要
Apple Safari IDN 处理中存在一个漏洞,允许攻击者执行 URL 欺骗,因为 Safari 不会将 URL 栏中的不适当的 Unicode 转换为 Punycode。
利用此漏洞可能允许攻击者进行网络钓鱼。
信用
来自韩国 SSD Labs 的安全研究员 Dohyun Lee 已将此事报告给 SSD 安全披露计划。
受影响的版本
iOS 15.6 或 iPadOS 15.6 之前
蒙特利 12.5 之前
watchOS 8.7 之前
tvOS 15.6 之前
总结
Apple Safari 处理不当,导致攻击者可以使用某些相似的字符代替真实字符,从而让受害者误以为他们已经访问了某个网站,而实际上他们正在访问另一个网站。
漏洞摘要
Apple Safari IDN 处理中存在一个漏洞,允许攻击者执行 URL 欺骗,因为 Safari 不会将 URL 栏中的不适当的 Unicode 转换为 Punycode。
利用此漏洞可能允许攻击者进行网络钓鱼。
信用
来自韩国 SSD Labs 的安全研究员 Dohyun Lee 已将此事报告给 SSD 安全披露计划。
受影响的版本
iOS 15.6 或 iPadOS 15.6 之前
蒙特利 12.5 之前
watchOS 8.7 之前
tvOS 15.6 之前
Final
为通信的隐蔽性,最后做了一下AES加密:
最终实现的效果为,若检测到request请求中包含我们自定义的header头则会执行相关恶意操作,并在response的自定义header中返回,否则则为正常业务流量
为通信的隐蔽性,最后做了一下AES加密:
最终实现的效果为,若检测到request请求中包含我们自定义的header头则会执行相关恶意操作,并在response的自定义header中返回,否则则为正常业务流量
PSV-2020-0437:部分 Netgear 路由器出现缓冲区溢出
前言
距离上一篇博客更新已经快两个月了,想给应该长草的博客除除草了。于是从我的笔记文档里翻篇,把这个漏洞翻出来给大家分享分享。具体官方通告可以参考:
【1】PSV-2020-0437 官方公告
当时我使用的是在 Netgear R6400v2 固件版本为 1.0.4.102 的环境下编写的,因此本篇文章也以此为基础进行讲述。
隨便取運
固件下载链接: 【2】R6400v2-1.0.4.102 固件
当我们获得固件后,我们需要解压出文件系统,这里我通过 binwalk 和 unsquashfs 成功提取出对应的固件
前言
距离上一篇博客更新已经快两个月了,想给应该长草的博客除除草了。于是从我的笔记文档里翻篇,把这个漏洞翻出来给大家分享分享。具体官方通告可以参考:
【1】PSV-2020-0437 官方公告
当时我使用的是在 Netgear R6400v2 固件版本为 1.0.4.102 的环境下编写的,因此本篇文章也以此为基础进行讲述。
隨便取運
固件下载链接: 【2】R6400v2-1.0.4.102 固件
当我们获得固件后,我们需要解压出文件系统,这里我通过 binwalk 和 unsquashfs 成功提取出对应的固件
【爬虫逆向】逆向破解某租车微信小程序,sign的解析
最近临近暑期,想去海边玩.
想自驾游,无车呀,咋办,只能上某租车平台租车,打开一看价格不菲啊
当我准备租的时候,改了时间,发现价格居然变少了,灵机一变的我突发奇想,会不会改了一个取车网点会不会也很便宜了呢?
果不其然,价格变低了不少,也就是说【时间+地点】可能会决定价格的变动,那怎么样做最优解呢?
最暴力的方式就是循环时间并且循环地点获取最低价格,那么怎么样调用这个查询接口呢?
思路:通过抓包的方式抓取到接口,然后动态的修改参数去获取查询结果的列表即可
通过抓包软件fildder可以看到响应数据找到对应的请求接口
入参研究
通过postman请求是ge请求,并且有四个参数,并且无需header的任何参数,那看起来应该是不难了
cid:猜测是城市id
q:不知道是什么,通过百分号看出来应该是encodeURIComponent过的参数
sign:一看就是加密的签名密钥,这个估计是重点
uid:未知的参数
做过爬虫的都知道有些参数不一定需要的,通过一个一个参数取消来判断哪些参数是不必要的,减少不必要的逆向工作
见名知起义,可以大胆的先猜测它的含义,用于后续研究
pickupCityId:应该是取车城市
returnCityId:还车城市
pickupDeptId:取车网点
returnDeptId:还车网点
大胆假设一下,如果我修改了还车时间再编码一下发过去请求,会不会成功呢(校验sign的参数跟哪些参数有关,一般sign都是混合多个参数进行加密的)
修改还车时间为2024-08-30 12:30,然后再次发送请求看看结果
最近临近暑期,想去海边玩.
想自驾游,无车呀,咋办,只能上某租车平台租车,打开一看价格不菲啊
当我准备租的时候,改了时间,发现价格居然变少了,灵机一变的我突发奇想,会不会改了一个取车网点会不会也很便宜了呢?
果不其然,价格变低了不少,也就是说【时间+地点】可能会决定价格的变动,那怎么样做最优解呢?
最暴力的方式就是循环时间并且循环地点获取最低价格,那么怎么样调用这个查询接口呢?
思路:通过抓包的方式抓取到接口,然后动态的修改参数去获取查询结果的列表即可
通过抓包软件fildder可以看到响应数据找到对应的请求接口
入参研究
通过postman请求是ge请求,并且有四个参数,并且无需header的任何参数,那看起来应该是不难了
cid:猜测是城市id
q:不知道是什么,通过百分号看出来应该是encodeURIComponent过的参数
sign:一看就是加密的签名密钥,这个估计是重点
uid:未知的参数
做过爬虫的都知道有些参数不一定需要的,通过一个一个参数取消来判断哪些参数是不必要的,减少不必要的逆向工作
见名知起义,可以大胆的先猜测它的含义,用于后续研究
pickupCityId:应该是取车城市
returnCityId:还车城市
pickupDeptId:取车网点
returnDeptId:还车网点
大胆假设一下,如果我修改了还车时间再编码一下发过去请求,会不会成功呢(校验sign的参数跟哪些参数有关,一般sign都是混合多个参数进行加密的)
修改还车时间为2024-08-30 12:30,然后再次发送请求看看结果