靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释

理论基础:

1、使用arp-scan -l命令进行主机扫描,确定主机ip;

  • arp-scan是一个用来进来系统发现和指纹识别的命令行工具。它可以构建并发送ARP请求到指定的IP地址,并且显示返回的任何响应。
  • arp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标扫描,也可以进行批量扫描。批量扫描的时候,用户可以通过CIDR、地址范围或者列表文件的方式指定。该工具允许用户定制ARP包,构建非标准数据包。同时,该工具会自动解析Mac地址,给出MAC对应的硬件厂商,帮助用户确认目标。
1.1> arp-scan可以实现的目标:
  • 使用一个可以配置的输出带宽或者包速率,发送ARP包到任意多个目标主机;
  • 对于系统发现,这是非常有用的,你可能需要扫描大量的地址空间;
  • 以灵活的方式构建并传出ARP报文;
  • arp-scan可以控制ARP包中所有的字段以及以太网帧的头部;
  • 解码并且显示任何返回的数据包;
  • arp-scan可以解码显示返回的任何ARP数据包,并且使用MAC地址查找供应商;
  • 使用arp-指纹工具采集IP主机的指纹。
1.2> ARP的相关知识:
  • ARP(地址解析协议)是一种协议,决定了链路层(第2层)地址,对于一个给定的网络层(第三层)地址。 ARP协议在RFC826以太网地址解析协议定义;
  • ARP协议被设计成允许被用于任何链路层和网络层协议。然而在实际中它仅用于以太网(包括802.11无线)和IPv4,我们假定在整个文档中,这些协议。 IPv6使用NDP(邻居发现协议)来代替,这是一种不同的协议;
  • ARP是一个不可路由的协议,因此只能在同一个以太网网络上的系统之间使用。
1.3> arp-scan相关知识:
  • arp-scan可用来发现本地网络上的IP主机。它可以发现的所有主机,包括那些已经阻止所有IP访问,如已经打开防火墙和系统入口过滤器的主机;
  • arp-scan适用于以太网和802.11无线网络。它也可以与令牌环网和FDDI工作,但他们并没有经过测试。它不支持串行链路如PPP或SLIP,因为ARP不支持他们;
  • 运行arp-scan需要root权限,或arp-scan必须是SUID root。因为它使用的读取和写入的以太网数据包的功能需要root权限;
  • arp-scan向局域网中所有可能的ip地址发出arp请求包,如果得到arp回应,就证明局域网中某台主机使用了该ip。

2、使用nmap扫描:

  • nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
2.1> NMAP扫描技术:
  1. 在这里我将展示用于扫描网络/主机的基本技巧。
  2. 端口状态:扫描后,你可能会看到一些结果,端口状态是过滤,打开,关闭,等等。让我解释这一点。
  • 开放(Open): 这表明一个应用程序侦听此端口上的连接;
  • 关闭(Close): 这表明收到了探头,但没有应用程序监听次端口;
  • 已过滤(): 这表明探针没有收到,无法建立连接。它也表明探针被某些筛选给丢弃;
    未过滤(): 这表明探针接收但无法建立连接;
    打开/过滤(): 这表示该端口进行过滤或打开,但NMAP的无法建立连接;
    关闭/过滤(): 这表示该端口进行过滤或关闭,但NMAP的无法建立连接;

实验环境:

  • 靶机,IP地址:IP地址未知
  • 测试机,kali,IP地址:192.168.85.135

实验步骤:

1、信息收集(主机发现和端口扫描)

1.1> 主机发现

注意:因为只是在局域网中,所以使用内网扫描;

命令1:arp-scan -l

命令2:netdiscover -i eth0 -r 192.168.85.0/24

  • netdiscover -i eth0 -r 192.168.37.0/24

1.1.1> arp-scan命令
靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第1张图片
1.1.2> netdiscover命令;
在这里插入图片描述
靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第2张图片

1.2> 端口扫描:
2.1.1> nmap命令——扫描端口详细信息
  • nmap -sS -Pn -A -p- -n IP地址
  • nmap -sV -p- IP地址

NMAP的相关参数:

  • -sV —— 用来扫描目标主机和端口上运行的软件的版本;
  • -p 80 —— 指定80端口;
  • -p- —— 扫描0-65535全部端口;
  • -sS/sT/sA/sW/sM——指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描;
  • -PN选项——指示NMAP跳过默认的发现检查并对执行对目标的完整端口扫描。当扫描被阻止ping探针的防火墙保护的主机时,这是非常有用的;
  • -PS——选项进行TCP SYN Ping;
  • -PA——对指定主机进行TCP Ack Ping扫描;
  • -P——对指定主机进行UDP Ack Ping扫描;
  • -n——用于禁用反向DNS解析;
  • -A —— 全面系统检测、启用脚本检测、扫描等;

(1) 命令:root@kali:~# nmap -sS -Pn -A -p- -n 192.168.85.136

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第3张图片注意:

  • 111端口是SUN公司的RPC(Remote Procedure Call,远程过程调用)服务所开放的端口,主要用于分布式系统中不同计算机的内部进程通信,RPC在多种网络服务中都是很重要的组件。常见的RPC服务有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等等。在Microsoft的Windows中,同样也有RPC服务,如Dirb、Masscan、Netdiscover。

靶机操作系统信息:

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第4张图片
扫描到的端口版本信息:

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第5张图片关于以上的说明:

  • 其中:-T4指定扫描过程中使用的时序(分为0-5等级);
  • -sV扫描版本的信息和开启的服务;
  • 也可以选择带-A参数,详细扫描开放端口的具体服务;
  • 与masscan相比,namp更详细,但是速度较慢(可以通过masscan快速扫描,再使用nmap扫描具体开放的端口);
  • 可以发现192.168.85.136主机开启了22(ssh服务),80(Apache服务);
  • 在这里注意几个端口:22(ssh服务),139/445(smaba共享服务),80(Apache服务),3306(MySQL服务)和6667(icrd互联网中继聊天守护进程)端口;
2.1.2> masscan命令——扫描端口

命令:root@kali:/var/www/html# masscan --rate=10000 --ports 0-65535 192.168.85.136

  • masscan --rate=每秒多少个数据包 --ports 端口范围 IP地址/IP地址段
  • Masscan扫描速度快,为了防止漏扫,可以多扫描几次;

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第6张图片

1.3> 扫描主机和端口后总结如下——>我们以80 端口为突破口:

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第7张图片

2、发现攻击机web服务的内容管理系统框架

2.1> 通过访问Web服务登录发掘;

Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。

通过扫描到的IP(192.168.85.136)登录Web服务;

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第8张图片

2.2> 通过nmap扫描发掘;

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第9张图片
结论:我们可以发现该网站的CMS(内容管理系统),这样我们就可以直接在网上搜索这个CMS的漏洞利用方式。

2.3> 确定Web服务的内容管理框架后,就可以通过以下思路找到一些突破口;
1、	直接访问敏感文件  robots.txt
2、	扫目录
3、	用户名  密码爆破
4、	Whatweb扫描
5、	看网页源码   看有没有信息可利用
6、	Powered by  drupal     
7、	扫描备份文件
8、	密码重置

3、漏洞的查询

3.1> 使用浏览器搜索漏洞;

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第10张图片

3.2> 使用Metasploit进行漏洞查询

Metasploit是一款开源的安全漏洞检测工具。它可以帮助用户识别安全问题,验证漏洞的缓解措施,并对某些软件进行安全性评估,提供真正的安全风险情报。当用户第一次接触Metasploit渗透测试框架软件(MSF)时,可能会被它提供如此多的接口、选项、变量和模块所震撼,而感觉无所适从。Metasploit软件为它的基础功能提供了多个用户接口,包括终端、命令行和图形化界面等。

(1)Metasploit的基本配置:
  • 第一步:启动postgresql数据库 ——> 命令:/etc/init.d/postgresql start;或者 service postgresql start;
  • 第二步:初始化MSF数据库(关键步骤!)——> 命令:msfdb init;
  • 第三步:运行msfconsole ——> 命令:msfconsole;
  • 第四部:在msf中查看数据库连接状态 ——> 命令:db_status;
  • 第五步:更新metasploit ——> 命令:msfupdate;
  • 第六步:设置启动 自动启动msf和postgresql ——> update-rc.d postgresql enable或者 update-rc.d metasploit enable;

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第11张图片

(2)搜索这个类cms在msf中能进行利用的方法

命令:msf5 > search drupal

以上有数个攻击模块,哪一个能用,就需要一个一个进行尝试了。

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第12张图片同时选择攻击模块;

在这里插入图片描述

(3)查看使用这个模块需要设置的配置参数;

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第13张图片

(4)设置目标,攻击;这里直接反弹一shell

方法一:
靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第14张图片方法二:

注意:有时候反弹shell需要的时间比较长,需要等待几分钟,因此我么可以使用另外一个命令后台等待shell;

1、 命令:exploit -j ——> 在后台等在其shell

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第15张图片

2、 当成功利用后,我们可以在Kali的MSF终端下,反弹回一个会话:

命令:msf5 > sessions -i

会话连接为:192.168.85.135:4444 -> 192.168.85.136:34377 (192.168.85.136)

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第16张图片
3、接着,我们选择会话 3 ,与其建立连接即可!

命令:sessions -i 3

在这里插入图片描述

(5)切换成反弹式的shell;
  • 命令:meterpreter > shell

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第17张图片

(4)使用python,切成交互式的shell;

命令:python -c ‘import pty;pty.spawn("/bin/bash")’

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第18张图片

(5)发现flag1.txt文件,并查看该文件,提示为查看cms的config文件;

在这里插入图片描述

(6)搜索drupal的配置文件
  • 通过浏览器搜索drupal的配置文件,可以看到配置文件为:/sites/default/settings.php

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第19张图片
靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第20张图片

(7)使用suid提权,找到一个属于root的具有s权限的文件;

命令1:find / -user root -perm 4000 -print 2>/dev/null
命令2:find / -perm -u=s -type f 2>/dev/null

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第21张图片
查看find命令的权限;

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第22张图片

(8)提权;

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第23张图片

知识总结:

一、拿下shell之后的操作:

1、 查看基本信息:

  • whoami ——> 用于显示自身用户名称;
  • pwd ——> 显示当前所在工作目录的全路径;
  • uname -a ——> 输出所有系统信息;
  • /etc/issue ——> 是Linux终端登录的欢迎语句存储文件(系统信息、内核版本);
  • lsb_release -a ——> 分行罗列出显示LSB和特定版本的相关信息;

2、看当前目录文件,配置文件(数据库配置文件);
3、查看/etc/password;
4、查看具有 s 权限,可执行二进制文件;

  • 定时任务文件
  • Sudo
  • 上传检测脚本()

二、考虑suid提权,查找正在系统上运行的所有SUID可执行文件,可用命令为

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

靶机渗透测试实战(一)——拿下shell之后的操作、SUID的解释_第24张图片
以上所有的二进制文件都将以root用户权限来执行,准确的说,这个命令将从/目录中查找具有SUID权限位一切属主为root的文件并输出它们,然而将所有错误重定向到/dev/null,从而仅列出该用户具有访问权限的那些二进制文件。因为它们的权限中包含“s”,并且它们的属主为root。

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。那么,为什么要给Linux二进制文件设置这种权限呢?其实原因有很多,例如,程序ping需要root权限才能打开网络套接字,但执行该程序的用户通常都是由普通用户,来验证与其他主机的连通性。
但是,如果某些现有的二进制文件和实用程序具有SUID权限的话,就可以在执行时将权限提升为root。其中,大家熟知的具有提权功能的Linux可执行文件包括:
Nmap
Vim
find
Bash
More
Less
Nano
cp

你可能感兴趣的:(安全漏洞)