From:penetration-testing-sample-report-2013.pdf
offensive security出的一份渗透测试报告,翻译了下重点内容 :)
过程还是很精彩的~
本次测试的域名为:megacorpone.com
先查看一下其DNS服务器:
然后发现 ns2.megacorpone.com 存在域传送漏洞。
关于域传送的漏洞,可以参考这里http://drops.wooyun.org/papers/64
从图片中可以看出域名都在50.7.67.x的IP段内,网络拓扑图:
在admin.megacorpone.com服务器的81端口发现了apache的webserver,然后扫一下文件路径:
可以看到/admin是一个需要身份验证的路径。
根据www.megacorpone.com网站内容做了一个字典,爆破密码,用户名就用admin了。
破解出密码为:nanotechnology1
进入后界面:
可以看到是一套phpSQLiteCMS,管理SQLite数据的:
通过此页面可以直接查询用户名和密码的hash:
测试发现保存的hash并非常规的方式,于是下载一份phpselitecms观察其中的hash方式:
知道了hash的方式是使用使用了一个10位字符的salt一起做sha1,并且字符串拼接原始salt一起放在数据库中。
我们采用同样的hash方式来暴力碰撞密码,尝试破解其他账户,又破解出两个来,收集密码的好处是可能其他系统也会使用相同的用户名密码,这样就可以轻松的进入了。
SQLite Manager软件存在一个已公开的代码注入漏洞,可以使用exp直接打:
http://www.exploit-db.com/exploits/24320/
反弹回shell:
服务器拓扑:
同时发现服务器可以提权,利用exp提权:
http://www.exploit-db.com/exploits/18411/
此时已经完全控制此台服务器。
然后好好的分析了一下此台服务器,查看到web目录下java应用只允许一个网段来访问。
后来发现这个管理员网络之一:
我们在web客户端增加了一个Java小程序,可以直接控制远程客户端。
(PS:出了这么多Java 0day不知道直接挂到页面上,老外的中马率怎么样)
在管理员下载并允许后:
此时网络拓扑:
发现管理员的电脑在域中,开始提升到域管理员。
发现系统中有一个组管理文件。
(ps:关于这个专门去查了一下是2008域管理存在的一个问题:http://www.carnal0wnage.com/papers/LARES-GPP.pdf)
metasploit上有rb脚本可以查找xml文件并解密:https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/gather/credentials/gpp.rb
查看groups.xml文件:
解密:
解密的ruby脚本贴出来:
使用方法是:
#ruby decrypt.rb 密文
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
require
'rubygems'
require
'openssl'
require
'base64'
#encrypted_data = "AzVJmXh/J9KrU5n0czX1uBPLSUjzFE8j7dOltPD8tLk"
encrypted_data =
ARGV
def
decrypt(encrypted_data)
padding =
"="
* (
4
- (encrypted_data.length %
4
))
epassword =
"#{encrypted_data}#{padding}"
decoded = Base64.decode64(epassword)
key =
"\x4e\x99\x06\xe8\xfc\xb6\x6c\xc9\xfa\xf4\x93\x10\x62\x0f\xfe\xe8\xf4\x96\xe8\x06\xcc\x05\x79\x90\x20\x9b\x09\xa4\x33\xb6\x6c\x1b"
aes = OpenSSL::Cipher::Cipher.
new
(
"AES-256-CBC"
)
aes.decrypt
aes.key = key
plaintext = aes.update(decoded)
plaintext << aes.final
pass = plaintext.unpack(
'v*'
).pack(
'C*'
)
# UNICODE conversion
return
pass
end
blah = decrypt(encrypted_data)
puts blah
|
尝试用plink端口转发,把内网的远程桌面连接转发出来,但是被阻断了:
测试后发现可以通过HTTP-Tunnel转发出来:
http://http-tunnel.sourceforge.net/
登陆的用户名密码采用的是SQLite Manager应用中的mike用户。
此时网络拓扑图:
打开IE的默认主页发现了Citrix服务器,用跟远程连接相同的用户名和密码进入:
Citrix环境当中,做了沙盒,只能使用IE,但是可以绕过。
使用IE的保存,弹出的对话框,新建一个powershell的bat批处理:
利用powershell下载metasploit的反弹程序
下载完毕后,在保存对话框中已管理员的权限运行
这样就获得了Citrix系统的权限
此时网络拓扑:
在Citrix上,尝试从内存中获取用户名密码:
这里包含了很多的用户名和密码,其中还包括一个windows域管理员的。
给Citrix服务器创建了一个远程连接服务并使用域管理员登陆:
至此已经完全控制了windows域。