人力资源管理系统搭建-信息安全管理评估
环境搭建
实验系统环境:
-
系统:Fedora39
-
架构:X86_X64
-
用户:root用户环境
如果觉得文章可以的,请打赏作者喝一瓶矿泉水,感谢!!!
docker安装
注意:操作前请先关闭防火墙和SELINUX策略
操作如下:
1、关闭防火墙
systemctl stop firewalld.service
2、关闭SELINUX
vim /etc/selinux/config
修改内容如下:
SELINUX=enforcing 主食掉原来的内容
SELINUX=disabled
然后重启Linux。
安装docker和docker-compose
sudo dnf install -y docker docker-compose
查看docker状态
systemctl status docker
如果处于运行之中,如下:Active: active (running) since Thu 2024-11-28 12:52:19 CST; 1 week 6 days ago
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; preset: disabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: active (running) since Thu 2024-11-28 12:52:19 CST; 1 week 6 days ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 1211 (dockerd)
Tasks: 251 (limit: 4584)
Memory: 264.3M
CPU: 5min 5.416s
CGroup: /system.slice/docker.service
那么直接添加开机自启动即可
systemctl enable docker
添加成功返回如下:
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
如果没有处于运行中,请使用如下命令启动
systemctl start docker
1panel安装
执行以下命令进行安装
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
安装成功后,控制台会打印面板访问信息,可通过浏览器访问 1Panel:
http://目标服务器 IP 地址:目标端口/安全入口
-
如果使用的是云服务器,请至安全组开放目标端口。
-
ssh 登录 1Panel 服务器后,执行 1pctl user-info 命令可获取安全入口(entrance)
安装成功后,可使用 1pctl 命令行工具来维护 1Panel
mongodb安装与搭建
拉取mongodb数据库镜像
root@fedora:~/emails# docker pull mongo:latest
可能会出现下载超时的错误:
Get "https://registry-1.docker.io/v2/": dial tcp 192.133.77.59:443: i/o timeout
使用国际网络解决该问题,或者切换docker镜像源地址或者docker代理。
使用curl测试网络:
curl -v https://registry-1.docker.io/v2/
* processing: https://registry-1.docker.io/v2/
* Trying 75.126.115.192:443...
* Trying [2a03:2880:f10d:183:face:b00c:0:25de]:443...
* Immediate connect fail for 2a03:2880:f10d:183:face:b00c:0:25de: 网络不可达
* connect to 75.126.115.192 port 443 failed: 拒绝连接
* Failed to connect to registry-1.docker.io port 443 after 21050 ms: Couldn't connect to server
* Closing connection
curl: (7) Failed to connect to registry-1.docker.io port 443 after 21050 ms: Couldn't connect to server
安装成功如下:
Digest: sha256:4f93a84f7d4d8b1b6cb7e0c172d8a44b0bed9b399f207165ea19473bdb5a36b0
Status: Image is up to date for mongo:latest
docker.io/library/mongo:latest
运行容器
docker run -d --name my-mongo -p 27017:27017 -v mongo:latest
1panel安装mongodb
如果你有运维管理面板,那么搭建就是很容易的,例如宝塔、1panel。
我这里使用1panel面板来进行安装:

安装成功如下:

然后进入容器中进行配置,查看容器名称:
docker ps -a
返回如下:

使用ID的方式进入

或者使用1panel运维面板进入

在MongoDB的test 数据库,我们这里默认进入了test数据库中,现在要创建一个 users 集合并插入文档数据:
db.createCollection('users')
中途可能会出现如下问题,这是权限的问题
MongoServerError[Unauthorized]: Command create requires authentication
推荐使用mongo-express,这是一个基于 Web 的 MongoDB 管理界面,进行一个方便的安装操作:

创建test数据库

再次创建集合users

创建成功如图:

创建文档

添加如下内容,依次添加
{username: 'mo60', password: '123456'}
{username: 'Juneha', password: '624522'}
{username: 'Jack', password: '468052'}
添加完成如下:

PHP环境搭建
拉取PHP镜像
docker pull bigtruedata/php-mongodb
pull成功如下:
Digest: sha256:00126ccae2bf8748b9f66e5b2a164a1d1a610ad345f7079559aa6967fcb8c945
Status: Downloaded newer image for bigtruedata/php-mongodb:latest
docker.io/bigtruedata/php-mongodb:latest
运行容器
docker run -itd --name php-mongodb -v ./php-www:/var/www/html -p 80:80 bigtruedata/php-mongodb
成功如下:

中途可能遇到的错误
容器地址网段不一样导致无法访问,如果你使用1panel搭建环境,推荐直接用1panel搭建php-mongodb环境,使用命令搭建就都使用命令,这样可以保证IP地址段在一个地方。
解决办法:
查看php-mongodb容器名称
docker ps -a
删除容器
docker stop c0525275c2b8 && docker rm c0525275c2b8
然后在1panel中去创建

挂载到系统的路径位置随意,自己知道就好,容器地址是/var/www/html
搭建靶场
创建setup.sh文件
vim setup.sh
文件内容如下:
!/bin/bash
read -p "请输入 MongoDB IP 地址: " mongodb_ip
if [[ ! $mongodb_ip =~ [1]+.[0-9]+.[0-9]+.[0-9]+$ ]]; then
echo "无效的 IP 地址!请重新运行脚本,并输入有效的 IP 地址。"
exit 1
fi
f1og="not is flag..."
fl0g="flag{MjAyNHdlbGMwbQ==}"
robots_content="User-agent: *\nDisallow: nosql.php\nDisallow: f1og.txt\nDisallow: fl0g.txt"
log_content=""
php_content="
<div class="container">
<div class="card">
<?php
if (isset($_REQUEST['username']) && isset($_REQUEST['password'])) {
$manager = new MongoDB\Driver\Manager("mongodb://$mongodb_ip:27017");
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$query = new MongoDB\Driver\Query(array(
'username' => $username,
'password' => $password
));
$result = $manager->executeQuery('test.users', $query)->toArray();
$count = count($result);
if ($count > 0) {
echo '
用户信息
';echo '';
foreach ($result as $user) {
$user = ((array)$user);
echo '
echo '';
}
echo '
| 用户名: | ' . $user['username'] . ' |
| 密码: | ' . $user['password'] . ' |
$o = intval($_GET['o']);
$hint = substr($_POST['hint'], 0, 4);
$file = 'nosql.log';
if (!empty($o) && !empty($hint)) {
$contents = file_get_contents($file);
$part1 = substr($contents, 0, $o);
$part2 = substr($contents, $o + strlen($hint));
$newContents = $part1 . $hint . $part2;
file_put_contents($file, $newContents);
}
if (file_exists($file)) {
echo file_get_contents($file);
include $file;
}
} else {
echo 'Login Failed';
}
} else {
echo '
登录
';echo '<form action="" method="get">';
echo '<input type="text" name="username" placeholder="用户名" required>
';
echo '<input type="password" name="password" placeholder="密码" required>
';
echo '<button type="submit">登录';
echo '';
}
?>
"
html_content="
<meta charset="UTF-8">
<div class="container">
欢迎来到人力资源管理系统!
"
echo "https://blog.mo60.cn/index.php/archives/2023-China-Skills-Security-web1.html"
echo -e "$robots_content" > robots.txt
if [ -e robots.txt ]; then
echo "robots.txt 写入成功!"
else
echo "robots.txt 写入失败!"
fi
echo -e "$f1og" >f1og.txt
if [ -e f1og.txt ]; then
echo "f1og.txt 写入成功"
else
echo "f1og.txt 写入失败"
fi
echo -e "$fl0g" >fl0g.txt
if [ -e fl0g.txt ]; then
echo "fl0g.txt 写入成功"
else
echo "fl0g.txt 写入失败"
fi
echo "$log_content" > nosql.log
if [ -e nosql.log ]; then
echo "nosql.log 写入成功!"
chmod 777 nosql.log
else
echo "nosql.log 写入失败!"
fi
echo -e "$html_content" > index.html
if [ -e index.html ]; then
echo "index.html 写入成功!"
else
echo "index.html 写入失败!"
fi
echo "$php_content" > nosql.php
if [ -e nosql.php ]; then
echo "nosql.php 写入成功!"
else
echo "nosql.php 写入失败!"
fi
将文件复制到php-www目录
docker cp ./setup.sh c9502f60f1d4:/var/www/html
成功如下:
Successfully copied 6.66kB to c9502f60f1d4:/var/www/html
然后进入当前目录下的php-www目录,创建.sh文件内容如下运行即可生成所需文件
docker exec -it php-mongodb /bin/bash
赋予文件执行权限
chmod +x setup.sh
执行文件
./setup.sh

注意:如何查看 MongoDB IP 地址?

我们需要去1panel去修改文件:

地址如下:mongodb://mongodb:mongo_ypcjkW@172.18.0.2
填写内容为mongdb用户:密码@容器
修改之手传到docker容器中:
docker cp /opt/php-mongodb/nosql.php b73f9e4a8930:/var/www/html
成功返回如下:
Successfully copied 5.12kB to b73f9e4a8930:/var/www/html
访问网站:

0-9 ↩︎

浙公网安备 33010602011771号