注:本博客仅供技术研究。如果其信息用于其他目的,用户将承担全部法律和连带责任。本博客不承担任何法律和连带责任。请遵守中华人民共和国安全法
黑客19引领实战潮流,回归技术本质,以行动推动行业技术进步
唯一的联系方式[email protected] 和 [email protected]
欢迎转载,但请注明原始链接,谢谢!
0x01 信息收集
开burp抓住下包,设定目标url重写,打开报错,我们随意输入控制器直接报错。
获取到web绝对路径。
抓包发现了这样的请求
试了试burpsuite的dnslog,发现请求已经过去并显示,猜测后端的使用file_get_contens来获取。
一个可回显ssrf,有什么用?
打内网?
尝试file协议,试着读文件,发现可以读。
但发现返回的内容不完整,猜测被切断并使用php://filter协议base64绕过读取编码。
解码
读取任何文件有什么用?
在此之前,其实是有用的nmap扫描其他端口
开了很多端口,一个个测试,发现999端口开着phpmyadmin。
结合任何文件读取,只要我们读取mysql可以输入帐号密码phpmyadmin,之后的getshell有很多方法。
thinkphp根据官方文件,目录结构通常是这样的。
数据库文件通常被放置在common/conf下面的。
简单猜猜,试着读index控制器。
事实上,之前的错误报告已经发布了index该模块下的控制器是默认的home模块。
读取
没有回来,猜测是application结合以往的审计经验,目录改名一般会改为app。
再读,成功。
下一步是猜测数据库文件存储的位置
一般存放common模块下面的config.php或者db.php,尝试了一下config.php,命中。
Base64解码获取源文件。
拿到账号密码,直奔phpmyadmin。
输入帐号密码,返回车辆,成功登录。
后面拿shell就给A师傅去弄了。
0x02 URL Rewrite的一些疑惑
题外话:因为之前帮朋友搞了一些站也是这样,有文件上传直接拿shell,但是没有办法访问,访问提示:
拿到源码,.htaccess里面有对url重写,比如长这样。
一直以为上传不能访问是重写的问题。
但也可能不是,可能是因为马被杀了,文件不存在的时候才会提示。
本地测试,拉了一个thinkphp 3.2.3的项目,htaccess一样配置。
在根目录下写一个test.php,内容为phpinfo。可直接访问。
删掉test.php,报错
继续在二级目录下进行测试:
当没有文件时,同样的提示:
后面深入研究了一下那份源码发现也不是马儿被杀了的原因,应该由于它的分割符问题。
不是传统的/,而是点号,入口模块固定。上传文件保存的路径是uploads目录中还有另一个刚刚固定的模块uploads控制器无法访问uploads目录,传统的文件路径访问与路由冲突,最终无法访问uploads目录下的shell。
我不知道如何解决这条路由。如果你知道,欢迎评论和交流。
0x03 拿shell
因为上面的疑惑,产生了我错误的认知,导致我以为是拿的shell会更麻烦,我的想法是phpmyadmin 日志导出符合要求的thinkphp路由的shell绕过路由检测到相应的控制器。
0x04 总结
对于rewrite语法、路由不熟悉导致了一系列后续问题,错误的认知也把自己带进了坑里。
多开脑容易秀逗。
这个渗透教程到此结束!希望大家看看借鉴。如果您有技术咨询,请联系我们
黑客19引领实战潮流,回归技术本质,以行动推动行业技术进步
唯一的联系方式[email protected] 和 [email protected]
欢迎转载,但请注明原始链接,谢谢!