Ywc

OneThink/Thinkphp 的缓存getshell漏洞

Word count: 408 / Reading time: 1 min
2018/07/25 Share

题目思路

进入题目后,不难发现www.zip的文件泄露,容易发现是onethink cms,是用thinkphp框架写的.

onethink

搜索后可发现已知漏洞:https://bbs.ichunqiu.com/thread-4918-1-1.html

容易发现,该cms存在固定缓存文件名2bb202459c30a1628513f40ab22fa01a.php,观察www.zip下面的源代码可以发现对文件名又进行了一次md5

一种做法可以参照一叶飘零师傅的博客

另外一种做法是,扫描目录得到www.zip下载源码,本地搭建起来环境后得到目录`/Runtime/Temp/onethink_6d11f0be3af9c28d4120c8fd5fe65a40.ph` 参考郁离歌的做法

反思:我当时做时,搜到了以前题目的文章1文章2按照该解题思路,没有操作成,显示用户名受到限制,以及在操作抓包时没有进行url-encode,没有进行本地搭建以及相关代码的审计(比如用户名限制)。

关键点

  • 缓存文件路径
  • 用户注册成功并登陆成功(我试了很多都是用户收到限制或者不存在,姿势不对…)
  • 注册登陆必须每次抓包url解码后再发包回去
  • 每次注册和登陆在发包的时候URL-encode 必须勾选上再提交,否则会把换行符的url-encode当成字符串来处理。登陆的时候也需要抓包,在用户名前面加上换行符的URL-encode,且勾选上URL-encode.

payload

1
2
3
/Runtime/Temp/onethink_6d11f0be3af9c28d4120c8fd5fe65a40.php?X=system(‘cat /tmp/flag’);

或/Runtime/Temp/onethink_6d11f0be3af9c28d4120c8fd5fe65a40.php?X=cat /flag>/tmp/flag

参考文章

文章1
文章2

原文作者: Ywc

原文链接: https://yinwc.github.io/2018/07/25/onethinkcms/

发表日期: July 25th 2018, 10:10:55 am

版权声明:

CATALOG
  1. 1. 题目思路
    1. 1.1. 关键点
    2. 1.2. payload
  2. 2. 参考文章