记一次肾透

请注意,本文编写于 279 天前,最后修改于 278 天前,其中某些信息可能已经过时。

没东西水了,而且没成功,索性就放出来吧。

很久以前的案例,由于太过丢人,一直不怎么敢提,有些资源当时也没截完全,就顺手看看吧闲着无聊,开日!
目标是谁好呢?随便找一个吧。

*电?很NB,就他了!

外网搜一堆资产,不是自研,就是一些功能简单的前端Nodejs,一眼能打的资产很少。

index-1_1.png
index-1_1.png

怎么办呢?这时候我们发现了一个很好的目标
2.jpg
2.jpg

系统名称eipplus,一看就是个类似OA系统一样的东西,功能一定很多。同时一搜公网资产

index-1_3.png
index-1_3.png

很好,很有精神!同代码的站点,非常非常的多,就从他作为突破口!

总而言之,先搞到一套源码先。之后就是开始平淡无奇的供应链环节,辣么多站,总不至于一个都打不下来吧

index-2_1.png
index-2_1.png

平淡无奇供应商找个注入

平淡无奇getshell

index-2_2.png
index-2_2.png

index-2_3.png
index-2_3.png

平淡无奇发现目标
index-2_4.png
index-2_4.png

平淡无奇打死

怎么打死的呢?利用内网数据正好撞到sysadmin的密码,然后登录上去后台上传Logo图片直接传马成功

下载源码!一看

index-3_1.png
index-3_1.png

人当场裂开,怎么还是sourceguardian加密的。当场想哭。不过在这之前,至少我们能见到他们系统内部长啥样以及他们的代码架构具体是啥了。

本地起个环境,大概的模样长这样

index-3_4.png
index-3_4.png

index-4_1.png
index-4_1.png

index-4_2.png
index-4_2.png

index-4_3.png
index-4_3.png

随手截的一些图,大伙看个乐呵就行

以及大致的目录结构

index-5_1.png
index-5_1.png

到此为止,我们已经拥有了目标代码,只不过是加密的,以及一个同站的高权限后台。但是我们目标系统肯定是没有sysadmin权限的

现在我们的方案有几个:

  • 配合目录和后台,黑盒寻找未授权打死
  • 寻找后门工具/开发者工具,想办法解密然后打死
  • 寻找越权,然后从低权限越权到高权限,再利用我们后台传马的功能直接打死目标

看看其他可能的漏洞点,这类系统的漏洞点无非就是几个,我们只要关注如下地方

  • 相册
  • 附件
  • 上传
  • 系统环境管理
  • 系统更新

都测了一通过后,发现安全做的勉强还行,普通用户都没办法访问系统更新和系统环境管理这些后台功能,相册和附件那没有直接一眼低权可以访问的getshell的点

只能第二个方法,我们看看目录结构

对于黑盒看目录结构,我们重点关注几个东西

  • 文件管理(filemanager),看看有无未授权
  • 开发工具(tools/develops),有没有开发遗留后门
  • 各类工具(utils),主要是看有没有未授权
  • 日志(log) , 主要是看有没有信息泄漏
  • 配置文件(config),其实一般看不出来啥,但是我写出来只是单纯觉得一旦能看出来啥就很厉害
  • 管理后台(admin),主要还是看未授权

注意是黑盒情况下,因为我们目前没办法获得完整源码,所以没办法深入查看详细业务去审计漏洞,实际白盒的话还有很多漏洞是会出现在业务代码里的

只要看到这些关键词,基本都是很有意思的东西,都可以想办法打开访问访问试试,看看有没有什么未授权接口或者开发遗留

其中有几个东西很有意思,一个是

index-6_1.png
index-6_1.png

这个文件夹下面很有可能会有开发的一些系统调试工具,比如SQL查询工具啊文件管理工具等 以及

index-6_2.png
index-6_2.png

虽然说是iso,但是其实本质上应该还是个zip相关工具,就有可能出现zip畸形目录漏洞,利用../../这样逃逸导致任意文件写入之类的

以及顺手看了看后台admin目录下的内容,都是很有意思的东西

index-7_1.png
index-7_1.png

以及还有一个很好玩的文件

index-8_1.png
index-8_1.png

推测这是用于授权的证书,只不过这个<?php,非常的有意思

简单初步黑盒测了一通,完全没有未授权接口,人都傻了,怎么办?开逆咯

sourceguardian 12加密,去淘宝查了下价格,一个文件5R。这几千个文件,tnnd逆到猴年马月,而且看都看不出来,没办法,只好装工具先自己手动看字节码逆了

index-9_1.png
index-9_1.png

装了个vld,一个字节一个字节的看,对着developtools和admin下的东西,看了半天,P都没看出来

人直接脑溢血,越想越气,越气就越怒,怒怒怒到极致邪气了,服气,不服不行,怎么办?恶像胆边伸,要不我们直接把开发商打了吧。

直接去代码里看这个开发商,很容易的看出开发商是谁

本系统由百*资通维护

进行一波信息搜集

index-9_2.png
index-9_2.png

甚至发现他们有git

index-9_3.png
index-9_3.png

index-10_1.png
index-10_1.png

好,很有精神,就日它了!但是TMD git访问不到,怎么办?

以及一些git泄漏,但是都没什么卵用。

其他站点不是都是eipplus这套系统的测试站,就是一个单纯啥都没有的前端。怎么办呢?

这时候,我们发现了一个东西

index-10_2.png
index-10_2.png

30天免费试用?

抱着试一试的态度,注册了申请

index-11_1.png
index-11_1.png

结果真的发来了,乐,对自己的系统这么自信

index-11_2.png
index-11_2.png

这不干他?直接一眼顶针,故技重施,后台,系统管理,上传LOGO图片,一看,tmd修了,上传失败

只能继续看其他东西了,继续回到刚刚的思路,系统环境管理看完了,看系统更新

index-11_3.png
index-11_3.png

更新Saas服务?以及刚刚admin目录下那个saas.txt并且带<?的php文件

index-12_1.png
index-12_1.png

嘿哟喂,这不巧了吗?于是乎,添加一句话

index-12_2.png
index-12_2.png

上传,死!果然,直接liences他们是直接用include加载的,乐

index-12_3.png
index-12_3.png

顺带看了一下,他们这全套源码都是ROOT部署的,十分的NB,web目录全部没有权限写,只有这个saas.txt我们有权限修改

一看,不用打git了,他们部署的站点,直接就没加密,愉快的下源码

虽然说站点第二天就被应急了,amazone有什么agent检测的吗?不知道怎么回事,不过这不碍事。

愉快开审咯!

继续整理现有资产

  • 我们拥有的:完整的白盒代码
  • 目标的低权限账户,虽然我们手头暂时没有,但是我们先假设我们有,辣么多员工如果一个账户都搞不到那还是别打肾透了.jpg,对自己自信一点

所以现在的需求很简单,就从之前的半黑盒完全转变成了白盒。这下门道就多多了。比如业务代码啊框架啊就有很多可以审的地方了

先按照找Java的管理,找Fastjso...噢不对,这是PHP代码,也一样。 首先先看autoload这类自动加载

index-14_1.png
index-14_1.png

一眼Guzzlehttp

再搜unseralize,结果真的有!!

index-15_1.png
index-15_1.png

在 calendarcsv_import.php 目录下,并且普通用户可以访问!

直接用PHPGGC构造请求(详细payload不是这样,要进行一些编码,但是这里为了方便查看就直接这样了,大家看看就行)

POST /eipplus/calendar/csv_import.php
action=next
next=1
trans=111
fieldsep=1
cal_fields=O:24:"GuzzleHttp\Psr7\FnStream":2:{s:33:" GuzzleHttp\Psr7\FnStream methods";a:1:{s:5:"close";a:2:{i:0;O:23:"GuzzleHttp\HandlerStack":3:{s:32:" GuzzleHttp\HandlerStack handler";s:9:"phpinfo()";s:30:" GuzzleHttp\HandlerStack stack";a:1:{i:0;a:1:{i:0;s:6:"assert";}}s:31:" GuzzleHttp\HandlerStack cached";b:0;}i:1;s:7:"resolve";}}s:9:"_fn_close";a:2:{i:0;O:23:"GuzzleHttp\HandlerStack":3:{s:32:" GuzzleHttp\HandlerStack handler";s:9:"phpinfo()";s:30:" GuzzleHttp\HandlerStack stack";a:1:{i:0;a:1:{i:0;s:6:"assert";}}s:31:" GuzzleHttp\HandlerStack cached";b:0;}i:1;s:7:"resolve";}}

index-15_2.png
index-15_2.png

本地测试轻松写出

想着勾八目标直接写webshell tnnd不就行了?结果想起来他们这全套都是部署在ROOT下面

不管了先试试!冲!

https://osheip.**.com.tw/eipplus/home/index.php 121public/121public

轻轻松松搞到个账户先

index-16_1.png
index-16_1.png

index-16_2.png
index-16_2.png

漏洞点也存在

写出!寄,没写成功,但是也不算太糟,至少已经成功了98%了,距离完美只差临门一脚

继续整理思路,现在我们已经有getshell的方式了,虽然说web目录不可写,但是那个saas.txt文件是可以写的。并且guzzle写文件用的是file_put_contents,默认写出是写相对路径,我们压根不需要web目录的绝对路径就能定位到saas.txt的地址。假如如果我们只要getshell不管后续,我们只要用这个反序列化直接对着saas.txt覆盖成我们的马就行,但是这样会有一个问题

如果直接写的话就会覆盖原本saas配置,导致直接网站直接爆炸,并且就算我们getshell后,也没办法恢复成原样,因为我们压根不知道原本的saas配置导致光速被发现。所以我们就只剩下最后一个目标,挖个洞。把saas.txt下回来!,然后在夜深人静的时候,光速写入saas.txt,连上shell再把saas.txt改回去。

接下来就面临噩梦了,必须得审业务代码,他们这个B代码总共有500M,属于是最害怕的一集出现了!!

没办法,硬着头皮上了,什么file_get_contents啊,fopen啊什么一大堆看了一遍,不是修了就是写的十分的安全。痛苦,悲

看了两个多小时,终于终于终于终于终于,不愧是天天天天天才的我,终于读成功了。

继续回到上面一个重点关注列表:

  • 相册(输)
  • 附件
  • 上传(输)
  • 系统环境管理(输)
  • 系统更新 (输)

具体流程如下:

发布帖子

index-17_1.png
index-17_1.png

随便添加个附件

index-17_2.png
index-17_2.png

抓包,修改tmp_name,让他进行跨目录

index-17_3.png
index-17_3.png

直接查看源码,在common_functions.inc.php中,可以发现代码对于tmp_name是直接进行拼接的,没有任何过滤!!!

然后我们发布文件后,下载的文件就会变成我们的tmp_name的文件。只要我们把tmp_name,指向saas.txt这个文件,然后发布,然后再下载我们自己的附件,就可以把saas.txt下回来了!爽!

不愧是我,天才中的天才

本地测试成功,远程测试成功

index-18_1.png
index-18_1.png

saas.txt下回来成功,现在所有拼图都已经集齐

现在就是等待夜深人静的时候上去csv_import啪的一下打死这破站,然后开开心心的冲内网美滋滋了

为了防止被发现,开始清理帖子走人,成败就等夜深人静时刻

然后。。。。就没有然后了。

index-18_2.png
index-18_2.png

晚上回来,发现,无法登录了都。。

天才你mlg臭嗨,笨比,你就是个纯纯纯纯笨比,笨比中的笨比,啊啊啊啊啊

原来笨比,竟是我自己。

当我沉浸在下回saas.txt洋洋得意中的时候,我手贱删除了帖子。

但是我没有意识到,删除贴子的时候,会删除附件,然后由于这个帖子的附件已经成功被我重定向到saas.txt,我一删除附件,saas.txt也就跟着一起消失了。

然后站就这么炸了,一键白打。

来自2024的点评

这事很早很早的时候弄得,那时候还是太年轻了啊。那时候只学会供应链的其一,没学会供应链的其二。终究搞得还是太费力气了,在自己不熟悉的领域(代码审计)上硬磕

测试站应该深入继续,而不是死盯着源码,应该直接拿下git然后悄悄往里面投毒,或者往发布的release版本里面投毒,这种源码加密站点投毒是最方便的。基本检查不出来。当时应该离git很近了。

不过无所谓了,反正就是休闲时日一日的东西。继续滚去干活了

添加新评论

已有 14 条评论

大佬,源码方便分享一下嘛?内网遇到同系统站,咱共享审计结果。

⑨BIE ⑨BIE 回复 @whoami

直接加我就行

老板 文章可以转载到公众号吗 标明出处

⑨BIE ⑨BIE 回复 @kuzi

kuzi kuzi 回复 @⑨BIE

感谢

厉害呀,挺精彩的案例,学到很多。哈哈哈哈哈

很清晰的一个一个一个思路啊,学到许多,我心甚喜

被标题吸引,以为肾没了,进来一看是是站没了。
能用vld确实大佬无疑了

今天从别的地方发现大佬博客,一看就是两个小时,很上头很崇拜,但与此同时自卑感油然而生,嗯……留下评论其实是想向大佬请教一下学习路线的。本人大一网安萌新,但内心向往成为技术大佬(虽然现在连脚本小子都算不上),我看了一下你16年就已经开始学汇编了(自主学习能力真的好强),易语言初二那会也看过但奈何没坚持下去,光顾着打lol去了。因为本校网安专业成立才两年,没有学长学姐帮助就觉得很迷茫,从大一上就开始这么觉得了,无从下手的无助感。如果大佬看到这条评论,希望能够指点迷津一下,小弟不胜感激🥹

⑨BIE ⑨BIE 回复 @330

先懂开发,然后就慢慢的会日站了
什么都可以不要好,开发一定要先会,能先自己写出一个自己的网站/程序之类的
然后慢慢的开始玩就行,理解了开发只要稍微变换下思维就能运用到日站里了。

330 330 回复 @⑨BIE

好的!目前是只接触了前端,java还在学,最近在学web攻防想尝试一下挖简单漏洞。话说开发也是分前后端,我想知道大佬你是更侧重于哪个呢?非常感谢答复!

⑨BIE ⑨BIE 回复 @330

必须一定得是后端,你前端可以不会,后端一定要会

330 330 回复 @⑨BIE

好,谢谢!

直接写入eval($_POST["pass=123"]);确实有点冒昧了。