• 网址导航
  • 微信客服
  • 源码模板:6
  • 记录:4901|
  • 壁纸:7185|
  • 网页模板:6014|
  • 代码:2630|
  • 评论:1|
  • 会员:1|
宝塔面板phpMyAdmin未授权访问安全漏洞是个低级错误吗?_宝塔面板教程

宝塔面板phpMyAdmin未授权访问安全漏洞是个低级错误吗?_宝塔面板教程

浏览次数:
  
栏目: 宝塔面板教程
信息来源: 本站原创/互联网
更新日期: 2021-05-30 01:02:27
文章简介

立业博客 www.liye5.com 免费分享本文是介绍宝塔面板phpMyAdmin未授权访问安全漏洞是个低级错误吗,有需要的朋友了解一下。

  • 正文开始
  • 相关阅读
  • 推荐作品

周日晚,某群里突然发布了一则消息,宝塔面板的phpmyadmin存在未授权访问漏洞的紧急漏洞预警,并给出了一大批存在漏洞的URL:

8ab94b0361e4ccb558061222e3e6cf6.png

随便点开其中一个,赫然就是一个大大的phpmyadmin后台管理页面,无需任何认证与登录。当然,随后各种神图神事也都刷爆了社交网络,作为一个冷静安全研究者,我对此当然是一笑置之,但是这个漏洞的原因我还是颇感兴趣的,所以本文我们就来考证一下整件事情的缘由。

一、我们的问题究竟是什么?

首先,我先给出一个结论:这件事情绝对不是简简单单地有一个pma目录忘记删除了,或者宝塔面板疏忽大意进行了错误地配置,更不是像某些人阴谋论中说到的官方刻意留的后门。

我为什么这么说?首先,根据官方的说法,这个漏洞只影响如下版本:

  • Linux正式版7.4.2

  • Linux测试版7.5.13

  • Windows正式版6.8

这个版本就是最新版(漏洞修复版)的前一个版本。也就是说,这个确定的小版本之前的版本面板是不受影响的。我们试想一下,如果是“后门”或者官方忘记删除的目录,为什么只影响这一个版本呢?况且宝塔面板发展了这么久,积累了400万用户,体系安全性也相对比较成熟,如果存在这么低劣的错误或“后门”,也应该早就被发现了。

经过实际查看互联网上的案例和询问使用了宝塔面板的朋友,我发现在7.4.2以前的版本中没有pma这个目录,并且phpmyadmin默认情况下认证方法是需要输入账号密码的。所以,宝塔出现这个漏洞,一定是做过了下面这两件事:

  • 新增了一个pma目录,内容phpmyadmin

  • phpmyadmin的配置文件被修改了认证方式

那么,我们的问题就变成了,官方为什么要做这两处修改,目的究竟是什么?

为了研究这个问题,我们需要先安装一个宝塔7.4.2版本。但是,宝塔的安装是一个傻瓜化的一键化脚本:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

并没有给到用户一个可以选择版本号的选项,官方的Git也许久没更新了,我们如何才能安装到一个合适的版本(7.4.2)呢?

二、安装一个合适的版本

这当然难不倒我。首先,我安装了最新版的宝塔面板,用的就是上述一键化脚本。

安装的过程自然没什么问题,安装完成后,系统显示的版本号是最新版7.4.3,因为在爆出这个漏洞以后,官方迅速进行了修复升级。不过没关系,我们仍然可以找到离线升级包:

http://download.bt.cn/install/update/LinuxPanel-7.4.0.zip
http://download.bt.cn/install/update/LinuxPanel-7.4.2.zip
http://download.bt.cn/install/update/LinuxPanel-7.4.3.zip

分别是7.4.0/7.4.2/7.4.3的版本,我们分别下载并解压,并尝试将自己的服务器版本恢复成漏洞版本7.4.2。

在恢复代码之前,我们先将服务器断网,或者将宝塔设置成离线模式:

3cd084c23abeaaf41f95b9cb6cb799a.png

这么做的目的是防止宝塔进行自动版本更新,避免好不容易恢复的代码又自动升级了。

宝塔系统代码默认安装完是在/www/server/panel,接着我们直接将将压缩包内的panel目录上传到这里来,覆盖掉已有的文件。重启下宝塔,即可发现系统版本号已经恢复成7.4.2了:

83a03bae942e6f71c3617b9ba707c68.png

还没完,我们使用beyond compare打开7.4.2和7.4.3的压缩包代码,先看看官方是怎么修复的漏洞:

04828949f5f39eefbfba453db13b738.png

比较粗暴,直接判断目录/www/server/phpmyadmin/pma是否存在,如果存在就直接删掉。所以,我们虽然恢复了系统版本代码,但删掉的pma已经不在了,我们还需要恢复一下这个目录。

方法也很简单,/www/server/phpmyadmin下本身存在一个phpmyadmin目录,我们直接复制一下这个目录即可:

d7ea051444f1b50c20197487b52fb0e.png

三、漏洞究竟是怎么回事

有了环境,我们仍需看看代码。

首先,由于7.4.2是引入漏洞的版本,我们看看官方对7.4.2的更新日志:

617af739919d57fd7d13e9cf12f6297.png

用beyond compare打开7.4.0和7.4.2的压缩包代码,看看具体增加了哪些代码:

c9a67dd190c79960118bf7cc1a4d5e0.png

可见,在7.4.2版本中增加了两个视图,分别对应着phpmyadmin和adminer。视图中用到了panelPHP#start方法,这个方法其实也是新加的:

    def start(self,puri,document_root,last_path = ''):
        '''
            @name 开始处理PHP请求
            @author hwliang<2020-07-11>
            @param puri string(URI地址)
            @return socket or Response
        '''
        ...
        #如果是PHP文件
        if puri[-4:] == '.php':
            if  request.path.find('/phpmyadmin/') != -1:
                ...
                if request.method == 'POST':
                    #登录phpmyadmin
                    if puri in ['index.php','/index.php']:
                        content = public.url_encode(request.form.to_dict())
                        if not isinstance(content,bytes):
                            content = content.encode()
                        self.re_io = StringIO(content)
                        username = request.form.get('pma_username')
                        if username:
                            password = request.form.get('pma_password')
                            if not self.write_pma_passwd(username,password):
                                return Resp('未安装phpmyadmin')
                if puri in ['logout.php','/logout.php']:
                    self.write_pma_passwd(None,None)
            else:
                ...
      #如果是静态文件
        return send_file(filename)

代码太长,我们不展开分析,只我写出来的部分。在请求的路径是/phpmyadmin/index.php且存在pma_usernamepma_password时,则执行self.write_pma_passwd(username,password)

跟进self.write_pma_passwd:

    def write_pma_passwd(self,username,password):
        '''
            @name 写入mysql帐号密码到配置文件
            @author hwliang<2020-07-13>
            @param username string(用户名)
            @param password string(密码)
            @return bool
        '''
        self.check_phpmyadmin_phpversion()
        pconfig = 'cookie'
        if username:
            pconfig = 'config'
        pma_path = '/www/server/phpmyadmin/'
        pma_config_file = os.path.join(pma_path,'pma/config.inc.php')
        conf = public.readFile(pma_config_file)
        if not conf: return False
        rep = r"/\* Authentication type \*/(.|\n)+/\* Server parameters \*/"
        rstr = '''/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = '{}';
$cfg['Servers'][$i]['host'] = 'localhost'; 
$cfg['Servers'][$i]['port'] = '{}';
$cfg['Servers'][$i]['user'] = '{}'; 
$cfg['Servers'][$i]['password'] = '{}'; 
/* Server parameters */'''.format(pconfig,self.get_mysql_port(),username,password)
        conf = re.sub(rep,rstr,conf)
        public.writeFile(pma_config_file,conf)
        return True

这个代码也很好理解了,如果传入了username和password的情况下,宝塔会改写phpmyadmin的配置文件config.inc.php,将认证方式改成config,并写死账号密码。

这就是为什么7.4.2版本中pma可以直接访问的原因。

补个课:

phpmyadmin支持数种认证方法,默认情况下是Cookie认证,此时需要输入账号密码;用户也可以将认证方式修改成Config认证,此时phpmyadmin会使用配置文件中的账号密码来连接mysql数据库,即不用再输入账号密码。

四、官方做这些动作的原因

其实各位看官看到这里肯定脑子里还是一团浆糊,这些代码究竟意味着什么呢?为什么官方要将认证模式改成config模式?

是很多漏洞分析文章的通病,这些文章在出现漏洞后跟一遍漏洞代码,找到漏洞发生点和利用方法就结束了,并没有深入研究开发为什么会这么写,那么下次你还是挖不出漏洞。

所以,这里思考一下,我们现在起码还有下列疑问:

  • 在7.4.2版本以前,用户是如何使用phpmyadmin的?

  • 宝塔为什么要在7.4.2版本增加phpmyadmin有关的视图?

  • 宝塔为什么要将phpmyadmin认证模式改成config?

我们如何复现这个漏洞?

第一个问题,我们其实可以简单找到答案。在正常安装宝塔最新版7.4.3时,我们点击宝塔后台的phpmyadmin链接,会访问到这样一个路径:

b678601f9e10d03b18ed8edf71b63a0.png

7.4.3版本为了修复这个漏洞,回滚了部分代码,所以这种方式其实就是7.4.2以前版本的phpmyadmin的访问方式:通过888端口下的一个以phpmyadmin_开头的文件夹直接访问phpmyadmin。

这种老的访问方法中,888端口是一个单独的Nginx或Apache服务器,整个东西是安全的,访问也需要输入账号密码。

但是这种访问方法有些麻烦,需要额外开放888端口,而且每次登陆都要重新输入密码。所以,官方开发人员提出了一种新的做法,在宝塔后端的python层面转发用户对phpmyadmin的请求给php-fpm。这样有三个好处:

  • 直接在python层面做用户认证,和宝塔的用户认证进行统一,不需要多次输入mysql密码

  • 也不需要再对外开放888端口了

  • 使用phpmyadmin也不再依赖于Nginx/Apache等服务器中间件了

这就是为什么宝塔要在7.4.2增加phpmyadmin有关的视图的原因,这个视图就是一个phpmyadmin的代理,做的事情就是转发用户的请求给php-fpm。

用户在第一次使用这种方式登录时,系统会自动发送包含了Mysql账号密码的数据包,宝塔后端会捕捉到此时的账号密码,填入phpmyadmin的配置文件,并将认证方式改成config。对于用户来说,感受到的体验就是,不再需要输入任何Mysql密码即可使用phpmyadmin了。

这的确给用户的使用带来了更好的体验。

五、漏洞复现

此时我们应该还有个疑问:既然官方目的是“直接在python层面做用户认证,和宝塔的用户认证进行统一”,那么仍然是有认证的呀?为什么会出现未授权访问漏洞呢?

我们可以来复现一下这个漏洞。首先,我们以系统管理员的身份登录宝塔后台,来到数据库页面,点击“phpMyAdmin”按钮,会弹出如下模态框:

7fa30bdf20eab63dd56755d61cee440.png

这个里面有两种访问模式,“通过Nginx/Apache/OIs访问”是老版本的访问方式,“通过面板安全访问”就是7.4.2新增加的代理模式。

我们点击“通过面板安全访问”,并抓包,会抓到这样一个数据包:

6914eecff6f59abcea46f1c3a8522f0.png

宝塔前端将我们的Mysql账号密码填好了直接发给phpmyadmin。又因为我们前面分析过的那段代码,后台将账号密码直接写入了phpmyadmin配置文件,来做到免认证的逻辑。

如果一个未认证的用户,直接访问http://ip:8888/phpmyadmin/index.php呢?会被直接重定向到登录页面:

4598a34ea51d0c500b02406b886a589.png

如果仅仅是这样,这个过程是不存在漏洞的。但是,官方开发人员犯了一个错误,他将pma应用放在了/www/server/phpmyadmin目录下,而这个目录原本是老的phpmyadmin访问方式所使用的Web根目录。

这意味着,我通过老的888端口+pma目录,可以访问到新的phpmyadmin,而新的phpmyadmin又被官方修改了配置文件,最终导致了未授权访问漏洞:

0a30c32ee0fbdf5336685701172e2ac.png

所以,如何解决这个问题呢?也很简单,只需要将pma移到其他目录去即可。

六、总结

我们来做个总结。

首先,宝塔面板绝对不是弱智,这个漏洞不是简简单单的放了一个未授权的pma在外面忘记删。这其实会打很多人脸,因为大部分人认为这只是个简单的phpmyadmin未授权访问漏洞,并对宝塔进行了一顿diss,没有想到这后面其实是一个复杂的逻辑错误。

其次,用户体验和安全绝对是不冲突的,我十分不喜欢为了保障安全而阉割用户体验的做法。所以希望宝塔官方不会因为这次的漏洞事件而彻底将代码回滚(据说7.4.3的更新只是临时解决方案),该改进的地方还是要改进。

我有数年不再使用Linux面板了,这次也算重新体验了一下2020年的Linux面板,个人感觉宝塔看外在其实是一个比较注重安全的系统,比如自动生成的用户密码、用户名和密码的策略、默认的Php安全配置、自动的版本更新等等,相比于很多国内其他的商业系统,绝对属于有过之而无不及了。但是看代码其实需要改进的地方还有很多,这个以后有机会再细说吧。

本文来自公众号:https://mp.weixin.qq.com/s/3ZjwFo5gWlJACSkeYWQLXA

以上就是宝塔面板phpMyAdmin未授权访问安全漏洞是个低级错误吗?的详细内容,更多请关注立业博客其它相关文章!

转载请注明:立业博客分享[--class.name--]教程» 宝塔面板phpMyAdmin未授权访问安全漏洞是个低级错误吗?_宝塔面板教程

标签: 宝塔面板教程
部分服务器无法获取Let's Encrypt的解决方法_宝塔面板教程
« 上一篇 2021-05-30 01:02:27
宝塔面板安装教程_宝塔面板教程
下一篇 » 2021-05-30 01:02:27
  • 帝国cms评论时间如何去和去掉时分秒保留日期
    6阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国cms评论默认的时间样式是:2021-4-19 12:39:27,那么如何修改成2021-4-19,解决办法如下:一、使用帝国cms默认评论解决办法:路径:e/pl/more/index.php 找到:$saytime=date(&#39;Y-
  • 帝国cms本地电脑搬家到服务器,内容页链接还是127.0.0.1
    3阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享在本地电脑搭建帝国cms,调式好了以后在搬家到服务器,但是内容页链接还是127.0.0.1开头处理办法其实很简单1、修改网站地址路径:后台--系统--系统设置--系统参数设置--网站地址(
  • 网站搬家迁移数据后登陆后台提示以下代码
    1阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享网站搬家迁移数据后登陆后台提示以下代码:Table &#39;cywlv2020.***_enewsloginfail&#39; doesn&#39;t exist
    select count(*) as total from **_enewsloginfail where ip=&#
  • 帝国CMS内容页灵动标签调用上一篇下一篇代码
    4阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国cms内容模版在文章结尾常常会调用上一篇和下一篇,那么如何实现灵动标签的调用呢我们先看内容模版中上一篇和下一篇的模版变量上一篇:[!--info.pre--]下一篇:[!--info.next-
  • windows系统建站环境下的帝国cms搬家经历
    4阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享这两天服务一个客户,客户是一名人民教师,刚接手学校的网站工作。服务的内容主要就是网站的搬家以及提供域名找回的简单指导!对于网站搬家大家可以参考我博客的文章《帝国cms搬
  • 帝国cms栏目id归零从1开始解决方案
    6阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享在帝国cms建站过程,有时候网站需要改版,把不需要的栏目删除,这就造成栏目id的不连续性,为了栏目id的连续性,可以清空栏目id,让栏目id归零从1开始,解决办法如下:复制SQL数据库代码TRU
  • 帝国cms自定义页面修改提交不生效
    4阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国cms自定义页面修改或者增加自定义页面,无法生成想要的效果?一般无法增加自定义页面就是根目录没有设置777权限,而修改自定义页面提交后无法生成效果一般就是网站搬家后没有
  • 帝国cms评论仿wordpress用户名添加网址作为外链跳转
    3阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国cms评论功能默认匿名评论作者是不带任何链接的,那么如何实现类似wordpress博客程序,输入用户名、网址,点击用户名会跳转到用户预留的网站链接呢其实很简单,评论外链作为吸引
  • 帝国cms此网页显示There was a problem with the request
    6阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国cms搬家或者换域名后打开信息内容页显示此网页There was a problem with the request,这设置的域名与我们浏览内容页显示的域名不一致造成的只需要修改网站地址即可路径:
  • 帝国cms评论功能的用户名自带链接如何去除
    3阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国cms评论功能的用户名自带链接是默认用户登陆状态下自带的链接,也就是跳转到用户个人空间。这时候如果不需要显示登陆状态下的跳转只需要修改e/data/template/pltemp.txt
  • 帝国cms网站地图生成不了解决办法
    3阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享在上一篇文章中《帝国CMS网站地图sitemap.xml制作与提交百度收录设置》,部分网友按照覃师宁博客介绍内容自定义页面设置网站地图sitemap.xml,发现生成不了,这是什么原因造成的,
  • 帝国cms官方评论插件如何调用评论自定义字段
    6阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享部分网友咨询网站评论实用帝国cms官方ajax插件,但是评论自定义字段无法调用,也就是在文件index.temp.php中调用字段前台不显示如何解决?很简单,在e\extend\infocomment\index.ph
  • 帝国cms7.5如何设置会员VIP投稿不需要审核直接通过
    2阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享为了网站建设的需要,很多使用帝国cms搭建的网站往往开通了投稿的功能,为了区分普通会员和VIP会员的区别,如何设置VIP会员投稿直接发布不需要审核,而普通会员需要审核才能发布呢?
  • 帝国CMS投票结果如何在内容页面调用直接显示
    2阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国CMS投票结果默认是在单独页面显示,那么如何在内容信息页面直接调用显示呢?内容直接显示投票结果,如图具体实现方式:1、内容页面调用显示投票项目路径:后台--模版-内容模版--
  • 帝国CMS网站地图sitemap.xml制作与提交百度收录设置
    2阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国CMS网站地图sitemap.xml的作用是为了方便百度蜘蛛爬行和索引网页,加快网站页面的收录,那么帝国cms如何制作网站地图sitemap.xml页面,并提交到百度站长搜索资源平台!1、帝国c
  • 帝国cms如何关闭自带的会员注册功能
    1阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享使用帝国cms建站如果没有必要会员注册的需要,还是建议关闭会员注册的功能,一方面为了网站安全,另一方面也避免一些别有用心的人恶意注册导致数据库资源大量占用间接影响服务器
  • 帝国CMS如何调用评论最多的文章
    3阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国CMS调用评论最多的文章我们需要使用灵动标签进行调用,调用代码如下 [e:loop={&#39;select * from [!db.pre!]ecms_cms where checked=1 order by plnum desc,id desc lim
  • 帝国cms7.5留言板nginx伪静态规则设置方法
    3阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国cms7.5留言板页面url网址默认是动态页面e/tool/gbook/?bid=1模式,那么网址url如何进行伪静态规则设置成为gbook/1.html样式呢?先看案例网址:留言板动态网址: http://qinshin
  • 帝国cms新闻模型与文章模型的区别
    4阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国cms新闻模型和文章模型的区别,以下观点和内容是覃师宁博客阅读帝国cms使用手册后得出的结论1、新闻系统模型新闻正文(newstext)字段存放在数据库,而文章系统模型新闻正文(
  • 帝国cms文章信息添加反斜杠前台页面不显示解决办法
    4阅读0条评论来源:互联网/原创
    立业博客 www.liye5.com 免费分享帝国cms后台添加文章内容使用到反斜杠\\,但是前端文章页面并不会出现反斜杠\\符号,对于前端网站而言,晒代码经常需要反斜杠的地方很多,不能使用就很不方便了。那么如何解决?某歌
  • 新闻媒体资讯模板/个人博客资讯模板/企业新闻资讯官网帝国cms模板响应
    1阅读0条评论来源:互联网/原创
    模板是用帝国cms最新内核开发的模板,该模板属于新闻媒体资讯模板/个人博客资讯模板/企业新闻资讯官网 首先声明:此模板不是原创,是仿的一个站,由于一个小朋友喜欢,我就给他仿了一下!不是原创哦 !是仿仿仿的! 换成你的,颜色都可以修改,改完让你耳目一新的感觉! 响应式自适应设计,同一个后台,数据即时同步,简单适用! 原创设计、手工书写DIV+CSS, 完美兼容IE7+、Firefox、Chrome、360浏览器等;主流浏览器; 页面以下为引用:简洁简单,容易管理,DEDE内核都可以使用;附带测试
  • 大气财务公司/会计公司/代理记账公司网站模板/电脑端手机端自适应模板
    49阅读0条评论来源:互联网/原创
    帝国cms最新内核开发的模板,该模板属于企业通用类、金融、理财、投资类企业都可使用, 这款模板使用范围极广,不仅仅局限于一类型的企业,你只需要把图片和产品内容; 换成你的,颜色都可以修改,改完让你耳目一新的感觉!
  • 电脑壁纸/手机壁纸/美女图片整站源码(帝国cms内核)瀑布流美图网站源码免
    51阅读0条评论来源:互联网/原创
    今天立业阁花了一点时间,仿了一个电脑手机壁纸网站,我已经采集了几千条数据,网站是瀑布流类型的美图网站源码,可以做电脑壁纸、手机壁纸、美女图篇等网站,也可以做视频播放站,都可以的,更加牛的是,给大家的福利,免费下载哦!有火车头采集哦! 源码介绍: 源码名称:【原创模板】电脑壁纸/手机壁纸/美女图片整站源码(帝国cms内核)瀑布流美图网站源码免费下载 模板内核:基于帝国cms7.5版本 目标站:可以多站点采集,目前只采集了一个站点(采集规则有偿) 安装环境:php7.3+mysql5.6 授权:无
  • 2021年精仿小刀娱乐网整站源码(带数据、整套火车头采集)帝国cms内核带售
    49阅读0条评论来源:互联网/原创
    源码名称:【原创模板】2021年精仿小刀娱乐网整站源码(带数据、整套火车头采集)帝国cms内核带售后包更新 模板内核:基于帝国cms7.5版本 目标站:小刀娱乐网 安装环境:php7+mysql 授权:无任何限制,开源无加密 源码功能: 1.后台自定义前台各种参数,无需再模板中修改(最主要的) 2.广告位丰富,均在后台控制,自由设置、添加。 3.集成百度推送、sitemap商业插件、商业留言板插件。 4.已做SEO优化并集成og协议。 5.等等,接了个单,这里先空着,先去做单子! 价
  • 帝国cms内核中小学学习辅导材料/电子本科网站响应式模板/整站源码带数
    53阅读0条评论来源:互联网/原创
    源码名称:【原创模板】帝国cms内核中小学学习辅导材料/电子本科网站响应式模板/整站源码带数据/带火车头采集/公众号引流利器 模板内核:基于帝国cms7.5版本 目标站:多站采集(包括中小学作文、各种辅导知识站、试卷站、课本站等多家站) 安装环境:php7.0+mysql5.7 授权:无任何限制,开源无加密 PC和wap:响应式模板 手机端请自行打开演示站
  • 个人博客网站模板/源码模板教程站长整站源码/wordpress内核站长资源网
    149阅读0条评论来源:互联网/原创
    立业博客于2021年5月30日23点改版啦,也就是现在大家看到的,之前用的是wordpress内核的程序,主题用的是riplus,现在改版了,所以把之前的整站打包下来了,给有需要的小伙伴,以后本站,主要更新原创模板和源码,包括写采集规则哦!