渗透测试——四、黑客实践之服务漏洞-灵析社区

超超

渗透测试

一、认识Metasploitable2网络靶机

1、Metasploitable2网络靶机

2、Linux常用命令

3、Linux服务配置文件

4、Metasploitable2切换root账户

5、Metasploitable2建立并访问网页文件

6、Metasploitable2服务停止

二、利用弱密码漏洞渗透网络靶机

1、Telnet 和SSH

2、Hydra 和Medusa

3、MySQL与PostgreSQL

4、破解远程登陆密码

5、VNC Viewer默认密码登录

三、利用服务后门和执行漏洞渗透网络靶机

1、FTP服务

2、Samba服务

3、后门漏洞

4、系统后门漏洞

5、命令执行漏洞

一、认识Metasploitable2网络靶机

1、Metasploitable2网络靶机

Metasploitable2 虚拟系统是一个特别制作的 Ubuntu 操作系统,其设计的目的是作为一种网络安全测试演练的工具。Metasploitable2 开放的服务和常见洞如图。

弱密码漏洞Root 用户弱密码漏洞
Samba ms -rpc shell命令注人漏洞Distcc后门漏洞
VSFTPD源码包后门洞Samba sysmlink默认配置目录遍历漏洞
Unrealircd后门漏洞Php cgi 参数注入漏洞
LinuxNFS共享目录配置漏洞Druby 远程代码执行漏洞
Java rmi server 命令执行漏洞Ingrelock 后门漏洞
Tomcat管理配置漏洞

2、Linux常用命令

1.root 用户查询IP地址:ifconfig

2.显示当前目录:pwd

3查询CPU内存:top -n 10

4.显示文件内容:more、cat

  • more 命令功能:让画面在显示满一页时暂停,此时可按空格键继续显示下一个画面或按0键停止显示。
  • cat 命令功能:用于显示整个文件的内容

5修改时间日期:date -s

6.创建文件夹:mkdir

7,使环境变量生效:source.bash_profile

8.编辑:输人“vi”后,按a键进行修改

  • 退出:按Shi +:组合键,再输入“q!”。
  • 保存:按Shiit+:组合键,再输入“wq”保存。

9.删除:mm

  • mm-f:删除文件夹。
  • mm-f*;删除全部
  • mm:除文件。

10.复制:cp

  • 复制文件:cp。
  • 复制文件夹:cp -r,如复制risk 到 trade 用户直接目录下,命令为 cp -r risk/home/trade

11.修改文件名:mv

例如把aa.jpg 改成aa.bmp,命令为 mv aa.jpg aabmpo

12.查看物理 CPU的个数:

#cat /proc/cpuinfo | grep " physical id"  sort  unig l wc -l

查看逻辑 CPU的个数:

#cat /proc/cpuinfo I grep "processor" I wc -l

查看CPU是儿核:

#cat /proc/cpuinfo grep "cores"  uniq

查看CPU的主频

#cat /proc/cpuinfo l grep MHz l uniq

13.Oracle 启动和停止

(1)0racle启动

  • #su -oracle:切换到 Oracle 用户且切换到它的环境
  • $slsnrctl status;查看监听及数据库状态
  • $slsnrctl start;启动监听。
  • $sqlplus/as sysdba:以DBA 身份进人SOLPlus。
  • SOL>start:启动db

(2) 0racle停止

  • #su -oracle:切换到 Oracle 用户且切换到它的环境
  • $lsnrctl stop;停止监听。
  • $sqlplus/as sysdha: 以 DBA 身份进人 SOLPlus (salplus/nolog,然后输入 conn/as sysdba)
  • SOL> shutdown immediate: 关闭 DB

14.查看文件大小、文件和文件夹属性

  • 1、看文件大小:
#du - sh filename
  • 2、查看文件、文件夹属性
#ls -1 filename
#ls -ld foldername

15.查看 Linux系统多少位:uname -a
64 位的显示:

Linux ps4 2.6.16.46 -0.12 -smp #1 SMP Thu May 17 14: 00: 09 UTC 2007 x86 64 x8664
x86_64 GNU/Linux

后面显示有 x86_64。
32位的显示:

Linux fc6 2.6.18 -1.2798. fc6 #1 SMP Mon 0ct 16.14: 54: 20 EDT 2006 686 i686 i386GN

3、Linux服务配置文件

前面的课程介绍了常见的服务和它们对应端口,这些服务在 Linux 中都对应着不同的配置文件(不同 Linux 版本配置文件位置略有不同);

标准: /etc/服务名称/服务名称。conf

网卡主配置文件:/etc/sysconfig/network -scripts/ifcfg -ens33

SSHD 服务主配置文件:/etc/ssh/sshd_config

YUM 仓库: /etc/yum.repos.d/xx,repo

HTTPD 服务主配置文件: /etc/httpd/conf/httpd.conf

VSFTPD 服务主配置文件:/etc/sftpd/vsftpd.conf

TFTP 服务主配置文件:/etc/xinetd.d/tftp

Bind 服务主配置文件:/etc/named.conf

Samba服务主配置文件:/etc/samba/smb.conf

NFS 主配置文件:/etc/exports (是空的,需要自已去添加)

Autofs 主配置文件:/etc/auto.master

DHCP 主配置文件:/etc/dhcp/dhcp.conf

Postfix主配置文件:/etc/postfix/main.c

Dovecot 主配置文件:/etc/dovecot/dovecot.conf

4、Metasploitable2切换root账户

用Kali Linux 对 Metasploitable2 进行端口服务的扫描,如图5-1-11所示,可以发现HTTP 服务及80 端口是开放的,于是在 Metasploitable2 建立网页。

使用用户名,msfadmin,密码msfadmin登录。
输人id,查看msfadmin 的权限,如图示,会发现 sfadmin 的权限很低,这样的权限不能对系统配置进行修改。

输入“sudo passwdroot”,如图5-1-7 所示,发现sfadmin 用户居然能设置 root 密码密码设置之后,切换到 root 用户。

为了弄清楚 msfadmin为什么能为 root 设置密码,在root 中建立一个用户abc 并切换到abc 用户下,尝试修改 root 密码,如图5-1-9 所示,显示bc 用户不在 sudoers 文件中。

找到/etc/soduers 文件查看内容,发现 admin 组里的用户有着和root 用户一样权限,于是搜一下admin 组中的用户,发现里面有 msadmin 用户,建立普通用户 harker,并把 harke加人admin 组中,于是 harker 和 msfadmin 用户一样有权设置 root 密码了。

5、Metasploitable2建立并访问网页文件

用Kali Linux 对 Metasploitable2 进行端口服务的扫描,如图所示,可以发现HTTP 服务及80 端口是开放的,于是在 Metasploitable2 建立网页。

在Metasploitable2 发布网页的本地目录:

在/var/www/目录下新建一个目录abc,在abc 目录下建立文件index.html,输入“china skill”,最后用浏览器访问这个网页:

6、Metasploitable2服务停止

进人Metasploitable2/etc/init.d 目录,查看Metasploitable2 漏洞机的各种服务程序。输入“/etc/apache2 stop”,停止网站服务,这时网页就不能被访问了。

同样地,输人“/etc/xinetd.d stop”“/etc/postfix stop”“/etc/proftp stop”“/etc/ssh stop等,对应的服务端口在 Kali Linux 中也扫描不到了。

二、利用弱密码漏洞渗透网络靶机

1、Telnet 和SSH

Telnet 和 SSH 是用于远程访问服务器的两大常用协议,如图所。利用它们可以管理并监控生产服务器和企业服务器,更新服务器内核,安装最新的软件包和补丁,能够远程登录服务器,开展软件开发、测试运行、更改代码和重新部署等工作。

Telnet 取名自 Telecommunications 和 Networks 的联合缩写,这是一种在 UNIX平台上最为人所熟知的网络协议。

  • 1、Telnet 使用端口23,它是专门为局域网设计的。
  • 2、Telnet 不是一种安全通信协议,因为它并不使用任何安全机制,通过网络/互联网传输。
  • 3、明文格式的数据,包括密码,所以谁都能探数据包。

Telnet 中没有使用任何验证策略及数据加密方法,因而带来了巨大的安全威胁,这就是Telnet 不再用于通过公共网络访问网络设备和服务器的原因。

SSH 取名自安全外壳 (Secure Shell),它现在是通过互联网访问网络设备和服务器的主要协议。

  • 1、SSH 默认情况下通过端口 22 运行,该端口号可以更改。
  • 2、SSH 是一种非常安全的协议,因为它共享并发送经过加密的信息,从而为通过互联网等不安全的网络访问的数据提供了机密性和安全性。
  • 一旦通信的数据使用 SSH 加密,就极难解压和读取该数据,所以密码在公共网络上传输也变得很安全。
  • 3、SSH 还使用公钥对访问服务器的用户进行身份验证,这是一种很好的做法,提供了极高的安全性。

协议对比:

  • 1、SSH和Telnet 应用领域基本重合。
  • 2、SSH比Telnet 更加安全。
  • 3、在发送数据时,SSH 会对数据加密,而 Tenet 不会 (它会直接发送明文,包括密码)。
  • 4、SSH使用公钥授权,而Telnet 不使用任何授权
  • 5、在带宽上,SSH会比Telnet 多一点点开销。
  • 6、SSH 几乎在所有场合代替了 Telnet。

虽然出于安全的原因,Telnet 基本上已经被SSH 完全代替,但是在一些测试的、无密的场合,由于自身的简单性和普及性,Telnet 依然被经常使用。

VNC (Virtual Network Console)是虚拟网络控制台的缩写。VNC是基于UNIX 和Linux 操作系统的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows及MAC中的任何远程控制软件相媲美。在 Linux 中,VNC 包括以下四个命令:ncserver.vncviewer、vncpasswd和ncconnect。大多数情况下,用户只需要其中的两个命令:vncserver利利 vncviewer。

2、Hydra 和Medusa

Hydra 和 Medusa 是目前应用较广的密码破解工具,它们支持大规模并行化、模块化支持大部分的允许远程登录的服务。Medusa 比 Hydra 应用稳定,代码结构二次开发简单速度上有一定的优势。

在Kali Linux 的终端中执行“hydra -h”:

常用参数如下:

  • -R,接着从上一次进度进行破解。
  • -I,忽略已破解的文件进行破解。
  • -S,采用SSL链接。
  • -s PORT,指定非默认服务端口
  • -I LOGIN,指定用户名破解。
  • -L FILE,指定用户名字典。
  • -p PASS,指定密码破解
  • -P FILE,指定密码字典。
  • -y,爆破中不使用符号。
  • -e nsr,“n”尝试空密码,“s”尝试指定密码,“r”反向登录。-C FILE,使用冒号分割格式,例如用“登录名:密码”来代替-L/-P参数
  • -M FILE,每行一条攻击的服务器列表,“”指定端口。
  • -o FILE,指定结果输出文件。
  • -b FORMAT,为-0FILE 输出文件指定输出格式:text (默认)ison、isonv1。
  • -f/ -F,找到登录名和密码时停止破解。
  • -t TASKS,设置运行的线程数,默认是 16。
  • -w/-W TIME,设置最大超时的时间,单位秒,默认是30 s。
  • -c TIME,每次破解等待所有线程的时间。
  • -4/-6,使用IP4(默认)或IPv6-v/-V 显示详细过程
  • -q,不打印连接失败的信息。
  • -U,服务模块详细使用方
  • -h,更多命令行参数介绍。

server,目标DNS、IP地址或一个网段。

service,要破解的服务名。

OPT,一些服务模块的可选参数。

Hydra 的使用方法如下:

hydra[[[ -ILOGINI-L FILE][ -p PASSI-P FILE]]I[ -C FILE]][ -e nsr][ -oFILE][ -tTASKS]
[ -M FILE[-TTASKS11 -W TIME][ - W TIME][ -f][ -S PORT][-x MIN:MAX:CHARSET]
[ - TIME][ -SOuvVd46] [ service://server[ ;PORT][/OPT]]

在Kali Linux 的终端中执行 medusa -h

其中:

  • -h [TEXT],目标IP。
  • -H [FILE],目标主机文件。
  • -u [TEXT]用户名。
  • -U [FILE],用户名文件。
  • -p [TEXT],密码。
  • -P [FILE],密码文件。
  • -C [FILE],组合条目文件。
  • -0 [FILE],文件日志信息
  • -e [n/s/ns],n 意为空密码,s 意为密码与用户名相同。
  • -M [TEXT],模块执行名称。
  • -m [TEXT],传递参数到模块
  • -d,显示所有的模块名称。
  • -n [NUM],使用非默认端口。
  • -s,启用SSL。
  • -r [NUM],重试间隔时间,默认为3 s。
  • -t [NUM],设定线程数量。
  • -L,并行化,每个用户使用一个线程。
  • -f,在任何主机上找到第一个账号/密码后,停止破解。
  • -q,显示模块的使用信息。
  • -v [NUM],详细级别(0~6)。
  • -w [NUM]、错误调试级别 (0~10)。
  • -V、显示版本。
  • -Z [TEXT],继续扫描上一次。

Medusa 的使用方法如下:

medusa [ - h hostl - H file][ - u useramel - U file][ - p passwordl - P file][ - C file] -M module[ OPT]

Hydra 和 Medusa 支持的协议有 adam6500 asterisk,cisco cisco - enable cvs firebird、ftpftps ,http[ s] - | headl getlpost , http[ s] - getlpost - form ,http - proxy ,http - proxy - urlenum.icq ,imap[ s] ,irc ,ldap2[ s] ,ldap3[ - cram l digest md5 ][ s ] ,mssql ,mysql,nntp ,oracle - listener ,oracle - sid,pcanywhere ,penfs , pop3[ s ] ,postgres ,radmin2 ,rdp ,redis ,rexec ,rlogin ,rpcap rshrtsp,s7 - 300,sip ,smb ,smtp s] ,smtp - enum , snmp socks5 ,ssh ,sshkey ,svn,teamspeak telnet[ s ]vmauthdvnc xmpp

3、MySQL与PostgreSQL

MySOL 是一个关系型数据库管理系统,由瑞典 MySOLAB 公司开发,目前属于 Oracle 公司。MySOL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • 1、MySQL 是开源的,所以不需要支付额外的费用。
  • 2、MySQL 支持大型的数据库,可以处理拥有千万条记录的大型数据库
  • 3、MySQL使用标准的SOL数据语言形式。
  • 4、MySQL可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++Python、Java、Perl、PHP、Eiffel、Ruby 和TCL 等。
  • 5、MySOL对 PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
  • 6、MySQL支持大型数据库,支持大规模的数据仓库,32 位系统可支持最大的表文件为4 GB,64 位系统可支持最大的表文件为8 TB。
  • 7、MySQL 是可以定制的,采用了 GPL协议,可以通过修改源码来开发自己的 MySQL系统。

Linux 系统中MySQL的安装详细见MySQL安装

PostgreSOL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS)。

PostgreSOL的主要优点如下:

  • 1、维护者是PostgreSOL Global Development Group,首次发布于 1989 年6月
  • 2、操作系统支持 Windows、Linux、UNIX、MAC OS X、BSD
  • 3、从基本功能上看,支持ACID、关联完整性、数据库事务、Unicode 多国语言。
  • 4、在表和视图方面,PostgreSOL 支持临时表,而物化视图,可以使用 PL/PostgreSOLPL/Perl、PL/Python 或其他过程语言的存储过程和触发器模拟。
  • 5、在索引方面,全面支持 R -/R + tree 索引、哈希索引、反向索引、部分索引、Expression 索引、GiST、GIN (用来加速全文检索),从8.3 版本开始支持位图索引。
  • 6、在其他对象上,支持数据域,支持存储过程、触发器、函数、外部调用、游标。
  • 7、在数据表分区方面,支持4 种分区,即范围、哈希、混合、列表。
  • 8、从事务的支持度上看,对事务的支持与 MySOL 相比,经历了更为彻底的测试
  • 9、在MyISAM 表处理方式方面,MySOL对于无事务的 MyISAM 表,采用表锁定。1 个长时间运行的查询很可能会阻碍对表的更新,而 PostgreSOL 不存在这样的问题。
  • 10、从存储过程上看,PostgreSOL 支持存储过程。因为存储过程的存在也避免了在网络上大量原始的 SOL语句的传输,这样的优势是显而易见的。
  • 11、在用户定义丽数的扩展方面,PostgreSOL 可以更方便地使用 UDF (用户定义函数)进行扩展。

4、破解远程登陆密码

本案例是利用 Kali Linux 中的三种工具结合自身的字典,对 Metasploitable2 网络靶机的SSH 服务登录密码进行破解。图5-2-10所是利用Kali Linux 中的 Medusa 具对 SSH服务登录密码进行破解;图5-2-11 所是用Hdra 工具对 SSH 服务登录密码进行利用MSF中的 ssh_login 模块对SSH 服务登录密码进行破解。

破解成功与否与字典有关,Kali Linux 自带了一些密码字典,它们都存放在特定目录下/usr/share/wordlists。

使用MSF进行破解:

5、VNC Viewer默认密码登录

在Kali Liunx 中输入“vncviewer 192.168.244.135”,密码为 password (默认密码),进入Metasploitable2 网络靶机的图形管理界面:

三、利用服务后门和执行漏洞渗透网络靶机

1、FTP服务

(1)FTP服务的含义

FTP是TCP/IP 协议组中的协议之一。FTP 协议包括两个组成部分:其一为FTP 服务器其二为FTP客户端。其中FTP 服务器用来存储文件,用户可以使用FTP 客户端通过FTP协议访问位于FTP 服务器上的资源。在开发网站的时候,通常利用FTP 协议把网页或程序传到Web 服务器上。此外,由于FTP 传输效率非常高,在网络上传输大的文件时,一般也采

用该协议。

默认情况下,FTP协议使用TCP 端口中的20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是 20;如果采用被动模式,则具体最终使用哪个端口,由服务器端和客户端协商决定。

(2)FTP的安装

一般 Linux服务安装有两种方式:网络安装和本地安装,网络安装只要直接输入“yum或“apt -get”+服务名即可,本地安装则首先要挂载系统光盘再对etc/yum. repo.d 文件夹里的内容进行修改,删除网络 YUM 源的文件等。利用yum install vsftp*-y”安装FTP服务之后,对FTP服务进行验证。

2、Samba服务

(1) Samba 服务的含义

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端序构成。SMB(Server Messages Block,信息服务块) 是一种在局域网上共享文件和打印机的通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

(2)Samba 服务的安装

Samba 服务安装类似于FTP 服务,如图5-3-3所在Samba 服务选择共享文件夹时,需要配置smb.conf。

3、后门漏洞

后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序,以便修改程序设计中的缺陷。但是,如果这些后门被其他人知道,或是在发布软件之前没有删除,那么它就成了安全风险,容易被黑客当成漏洞进行攻击。

后门程序,与通常所说的“木马”有联系,也有区别。联系在于:都是隐藏在用户系统中向外发送信息,并且本身具有一定权限,以便远程机器对本机的控制。区别在于: 木马是一个完整的软件,而后门则体积较小,并且功能都很单一。

后门程序和电脑病毒最大的差别,在于后门程序不一定有自我复制的动作,也就是后门程序不一定会“感染”其他电脑。

后门是一种登录系统的方法,它不仅能绕过系统已有的安全设置,还能挫败系统上各种增强的安全设置。

最著名的后门程序是微软的 Windows Update。Windows Update 的运行流程为:开机时自动连上微软的网站,将电脑的现况报告给网站,以进行处理,网站通过Windows Update 程序通知使用者是否有必须更新的文件,以及如何更新。

4、系统后门漏洞

本项目任务一中列举了 Metasploitable2 靶机中开放的所有端口,其中有些是预留的后门端口。

1、1524端口从端口描述 (root shell) 可以看出是一个后门端口。过NC 和Telnet 的连接,证实能直接获取root权限:

  • 2、Metasploitable2 靶机的 FTP 服务中包含一个后门,允许一个未知的人侵者进入核心代码、即FTP的笑脸漏洞,如图5-3-10 所示。在FTP 录时输人一个“😃”,程序会反弹一个6200的控制端口,利用NC 连接6200 端口就会进入网络靶机的系统。也可以利用 MSF中的 vsftp_234_backdoor 漏洞模块进入靶机的系统。

  • 3、在Metasploitable2 网络靶机的6667 端口上运行着 UnreaIRCDIRC的守护进程。这个版本包含一个后门,利用MSF 中的unreal_ircd_3281_backdoor 模块就能进入网络靶机系统。

5、命令执行漏洞

一些服务往往包含了命令执行漏洞。

  • 1、在Metasploitable2 靶机的 Samba 服务中,存在着因未过滤用户输入,调用/bin/sh 命令的执行漏洞。

MSF 中存在着攻击模块 usermap_script,利用这个模块进行攻击就能进入网络靶机的系统。

  • 2、在 Metasploitable2 靶机的 Samba 服务中,当配置文件权限为可写,同时“wide links’被允许(默认就是允许),同样存在着命令执行漏洞。MSF 存在着攻击模块 Samba_symlink_traversal,利用这个模块,本机root 文件系统可匿名接入靶机系统利用共享目录就能查看靶机 root 下的文件。
  • 3、Metasploitable2 靶机提供了 distccd 服务,但这里的 distccd 服务比较特殊,存在着命令执行漏洞,如图5-3-16 所示,利用 MSF 中的 distcc_exec 模块进行攻击并获得系统权限这时用Wireshark 抓取攻击包,可看到攻击中命令执行代码“sh c sh -c’(sleep 4538|telnet…)’"。

  • 4、Metasploitable2 靶机中开放了1099 端口,这个端是基于 Java 的 RPC 架的服务端存在着远程调用执行漏洞,利用java_rmi_server 模块进行攻击并获得系统权限。
  • 5、Metasploitable2 靶机的 PHP 服务,由于PHP CGI脚本没有正确处理请求参数,导致源代码泄露,如利用php_cgi_arg_injection 模块进行攻击并获得系统权限。

  • 6、Metasploitable2 靶机由于 Druby 配置不当,被滥用执行命令,利用 drb_remote_codeexec 模块进行攻击并获系统权限。
  • 7、Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。默认情况下,8180 端口是 Tomcat 管理的HTTP 端口。在靶机中这个端口存在着远程调用执行的漏洞。

阅读量:2025

点赞量:0

收藏量:0