前言
对于一个后台的至getshell的漏洞点,若需要当作前台来利用,最直接的idea会想到什么?当然是XSS、CSRF了,这已经不是什么新鲜话题或trick了,较早的wordpress 前台XSS之Getshell、最近安全客也有人发过zzzphp1.6前台的Getshell方式使用类似的方法。所以笔者对ThinkSNS审计的后台漏洞分析及其利用同样结合CSRF进行。
漏洞类型
通用漏洞
简介
后台升级存在逻辑错误与变量覆盖未验证升级链接参数upurl导致可升级远程下载shell结合后台csrf漏洞可导致攻击人员在前台发表payload链接即可getshell 。
漏洞分析
漏洞代码发生在路径ts4/apps/admin/lib/Action/UpgradeAction.class.php文件。
46行处,升级时调用check函数升级通过C('UPURL').'?v='.C('VERSION')获取升级链接
在169行,直接再次调用且upurl可控,覆盖之前的&upurl远程升级下载包含.php的test.zip压缩包先下载再校验,存在逻辑问题,直接构造url payload下载。此为漏洞的引发起始点,再往下看在226行处step2,Step2解压也存在问题未进行校验文件就进行解压到网站根目录
复现
1.直接在后台Getshell
1)根据对漏洞的定位,直接构造step1步的触发链接payload如下图所示
即可通过升级的step1远程下载shell压缩文件。
2)根据step2定位的漏洞点继续构造触发解压的payload如下图所示:
Step2
解压也存在问题未进行校验文件就进行解压到网站根目录
3)解压成功,shell.php被解压下载解压到了WWWts4test目录
4)getshell
2. 后台Gethsell组合后台CSRF(无需登陆管理员前台getshell)
结合step1和step2构造一个CSRF getshell payload页面 html
用户在前端留言处发表连接留言管理员点击查看getshell当点击时执行step1和step2已在不知情的情况下执行了载shell和加压shell.zip两步
成功下载shell
被解压