一次真实渗透测试中 代码审计getshell
发现有git源码泄露,还有一些敏感目录
- /.login
- /phpmyadmin
- /robots.txt
发现开放ssh端口,21端口
登陆点A:
登陆点B:
登陆点A是扫描目录中的/.login
,登陆处没有验证码,可以尝试爆破
登陆点B在子域中,对账号密码都有一定的格式要求
挂上BurpSuite,浏览网站,找参数提交的点
算上之前的登陆一共找到了4个参数提交点
网站存在.git 源码泄露 把网站的源码拖下来
大概的看了一下,应该是一个thinkphp框架改的,然后有一些数据库的信息,但是没什么用。
尝试以利用数据库的信息对登陆点B进行登录,失败。再对ssh和登录点A进行爆破,失败。继续下一个点。
分别对4个点进行SQL注入测试,其中只有1个点发生报错:
应该是thinkphp的框架错误,出现了网站的绝对路径。对网站的所有可能存在漏洞进行了探测,均无结果,只能回去老老实实的审代码。
先看application
,根据代码中的路由规则访问系统,发现基本都失效了,应该是旧系统源码。硬着头皮看,看看能不能找到数据库的连接密码,从phpmyadmin来getshell。打开application就发现了一个config文件夹:
有config.php和database.php,但是都没有数据库的连接密码,无法从phpmyadmin进入数据库。然后就是一顿代码审计,并没有发现什么有用的信息。
再看看assert
,里面有一个编辑器ckeditor:
进入该目录发现了还有一个kcfinder,这个可以在web端进行访问:
发现可以上传.htaccess
,但是我们上传上去的文件还是不被解析,很奇怪,猜测应该外层还有一个.htaccess
文件,使得我们的.htaccess
未生效。在本地进行一下测试:
果然在外层存在一个.htaccess
,这个地方的上传应该没办法了。
继续代码审计,找到了一个imageuploader
:
尝试访问:
这次先开代码在进行测试,免得无用功。在pluginconfig.php
发现了一些很有意思的东西。这个点并没有连接数据库,账号秘密直接写到文件中的:
获得了账号密码进行登录,再次发现上传点:
很可惜的是这里的上传点是白名单,无法通过上传进行getshell。
继续去代码审计,还是pluginconfig.php
,发现了一个fwrite
函数,并且这个地方并没有什么过滤,可以写入东西到pluginconfig.php文件中(后面才发现这个网上好像有这个洞 https://visat.me/security/cve-2019-19502/,大意了)
参数$newpath
可控,但是被"''"
所包裹,如果尝试闭合会被转义, 这个地方可以通过花括号来绕过,构造payload:newpath=${${eval($_POST[123])}}
OK,没有问题,现在在网站上进行写入
写入成功,先在尝试蚁剑进行连接
连接成功,点到为止。