Ywc's blog

OneThink/Thinkphp 的缓存getshell漏洞

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

关键点

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

题目思路

1、进入题目后,发现www.zip的文件泄露,代码审计后是onethink cms,是用thinkphp框架写的.

onethink

2、搜索后可发现已知漏洞: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,没有进行本地搭建以及相关代码的审计(比如用户名限制)。

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. payload
  • 参考文章