sqlmap --os-shell原理

VSole2021-09-24 07:04:41

前言

当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。

在mysql、PostgreSQL,sqlmap上传一个二进制库,包含用户自定义的函数,sys_exec()和sys_eval()。那么他创建的这两个函数可以执行系统命令。

在Microsoft SQL Server,sqlmap将会使用xp_cmdshell存储过程,如果被禁(在Microsoft SQL Server 2005及以上版本默认禁制),sqlmap会重新启用它,如果不存在,会自动创建

接下来我会通过注入、SQLSERVER数据库、Mysql数据库进行介绍os shell原理。

注入

必要条件:

  • 拥有网站的写入权限
  • Secure_file_priv参数为空或者为指定路径。

普通注入--os-shell主要是通过上传一个sqlmap的马,然后通过马来进行命令执行。


测试环境:

操作系统:Microsoft Windows Server 2012 Standard

数据库:Mysql 5.1.60

脚本语言:PHP 5.4.45

Web容器:Apache 2.4.39

利用sqlmap进行注入检测

然后执行--os-shell

这个时候sqlmap主要做了三件事情:

1、进行目标的一个基础信息的探测。

2、上传shell到目标web网站上。

3、退出时删除shell。


Database

数据库支持外连,通过Sqlmap执行--os-shell获取shell。

Sqlserver

必要条件:

  • 数据库支持外连
  • 数据库权限为SA权限

Sqlserver --os-shell主要是利用xp_cmdshell扩展进行命令执行。


测试环境:

操作系统:Microsoft Windows Server 2016 Datacenter

数据库:Microsoft SQL Server 2008

利用Sqlmap进行数据库连接。

sqlmap -d "mssql://uset:password@ip:port/dbname"

sqlmap默认不自带pymssql,需要手动下载。

执行命令python -m pip install pymssql下载,然后连接成功。

执行--os-shell。但是这个地方Sqlmap未能成功开启xp_cmdshell。

这个时候sqlmap主要做了三件事情:

1、识别当前数据库类型,然后打印出来。

2、检测是否为数据库dba,也就是查看是否为sa权限。

3、检测是否开启了xp_cmdshell,如果没有开启sqlmap就会尝试开启。

继续执行--sql-shell手动开启。

手动开启语句:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

在执行RECONFIGURE;时sqlmap报语法错误。

写一个python脚本调用下载的pymssql模块进行排错。

可以执行select @@version;命令

执行RECONFIGURE;命令的时候的报错和sqlshell执行时的报错一样。

由于sqlmap调用的是pymssql模块进行数据库的链接,所以这个地方要开启xp_cmshell,就必须利用其他工具进行开启。利用navicat进行数据库连接 然后执行命令开启xp_cmdshell。,

开启后,可以在navicat里面执行命令,或者sqlmap使用--os-shell进行命令执行。

若从一开始就使用navicat或其他工具进行数据库链接的话,就需要手动查看是否为dba,是否开启了xp_cmdshell扩展进程。

select IS_SRVROLEMEMBER('sysadmin')

查看是否为SA

select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell';

查看是否存在xp_cmdshell扩展进程,显示1为存在。

查询完毕后,和上面的操作依葫芦画瓢就行了。

Mysql

  • 数据库支持外连
  • Secure_file_priv参数为空或者为指定路径
  • 对mysql目录存在写入权限。
  • 针对版本大于5.1,需要存在/lib/plugin目录。

Mysql --os-shell主要利用的原理是通过udf执行命令,在Mysql Udf提权这一篇文章中我讲得比较详细了,可以去看看。


测试环境:

操作系统:Microsoft Windows Server 2012 Standard

数据库:Mysql 5.1.60

执行sqlmap -d --os-shell

这个时候sqlmap主要做了五件事情:

1、连接Mysql数据库并且获取数据库版本。

2、检测是否为数据库dba。

3、检测sys_execsys_eval2个函数是否已经被创建了。

4、上传dll文件到对应目录。

5、用户退出时默认删除创建的sys_execsys_eval2个函数。

sqlmap数据库原理
本作品采用《CC 协议》,转载必须注明作者和本文链接
sqlmap --os-shell原理
2021-09-24 07:04:41
前言当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。
本靶机难度为高难度,涉及到了缓冲区溢出的源码审计 ,逆向分析,动态调试等漏洞技能点,攻击方法有2种:??SQL 注入得到的密码可以保留。
⽹上整理的⾯试问题⼤全,有些 HW ⾯试的题,已经收集好了,提供给⼤家。
蓝队初级防护总结
2023-01-09 10:11:55
三. 网站被上传webshell如何处理?工具方面比如使用D盾webshellkill,河马webshell查杀,百度在线webshell查杀等工具对网站目录进行排查查杀,如果是在护网期间可以将样本备份再进行查杀。堡垒机是针对内部运维人员的运维安全审计系统。WAFWAF是以网站或应用系统为核心的安全产品,通过对HTTP或HTTPS的Web攻击行为进行分析并拦截,有效的降低网站安全风险。
堡垒机是针对内部运维人员的运维安全审计系统。WAFWAF是以网站或应用系统为核心的安全产品,通过对HTTP或HTTPS的Web攻击行为进行分析并拦截,有效的降低网站安全风险。设置账户锁定策略,比如说登录行为限制次数,达到次数后锁定多长时间。
服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等) 网站指纹识别(包括,cms,cdn,证书等),dns记录 whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等) 子域名收集,旁站,C段等 google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等 传输协议,通用漏洞,ex
我们都知道,学安全,懂SQL注入是重中之重,因为即使是现在SQL注入漏洞依然存在,只是相对于之前现在挖SQL注入变的困难了。而且知识点比较多,所以在这里总结一下。通过构造有缺陷的代码,来理解常见的几种SQL注入。本文只是讲解几种注入原理,没有详细的利用过程。
作为web渗透界的神器之一,无论是挖掘src或者渗透测试,不少的师傅们都离不开这个工具。他的强大也不只是简单地自动化注入,后续文章我会逐渐带大家熟悉这个工具的原理。其实网上已有大佬做了很多的分析,我将更细致更基础地进行分析。
HW蓝队初级面试总结
2022-10-12 07:00:02
一、sql注入原理、分类、绕过原理:产生sql注入漏洞主要因为没有对接受到的参数进行过滤、验证和处理直接拼接到了sql语句中,然后直接执行该sql语句,这样就会导致恶意用户传入一些精心构造的sql代码,与后台sql语句拼接后形成完整的sql语句执行,达到攻击者的目的。
VSole
网络安全专家