目录
SQL读取文件漏洞
权限查看:
数据库用户
查询用户权
我们的UNION注入payload如下:
用户权限
代码:sql
代码:sql
代码:sql
其它权限查询
代码:sql
文件读写File权限查询
代码:sql
加载文件 LOAD_FILE()
sql读取漏洞
代码:sql
代码:sql
另一个例子
代码:sql
sql文件读取漏洞利用条件
SQL写入文件漏洞
写入权限检测Secure_file_priv:
语句:
注意:
安全文件权限隐私检查 secure_file_priv
输出[写入]文件
SQL中导出语句
select写入数据
SQL 注入写入文件
运行webshell注意点
写入webshell注入载荷UNION如下
文件写入 与 Webshell
具体的关联步骤如下:
Web Shell利用的注意点
权限问题:
文件路径与文件类型:
Web Shell隐蔽性:
SQL读取文件漏洞
- SQL注入漏洞通常能让攻击者执行任意SQL语句,如果数据库配置不当或权限过宽。
- 攻击者可以利用 LOAD_FILE()(MySQL)或 xp_fileexist(SQL Server)等特定的函数来读取服务器上的文件
- 攻击者通过构造SQL注入语句,获取数据库服务器上敏感的文件
- 如配置文件(如/etc/passwd,web.config等)。
权限查看:
- 读取数据比写入数据更为常见,写入数据严格保留给现代 DBMS 中的特权用户,因为它可能导致系统漏洞,我们将会看到这一点。
- 例如,在 中MySQL:
- DB 用户必须具有FILE将文件内容加载到表中,然后从该表中转储数据并读取文件的权限。
- 因此:
- 让我们首先收集有关数据库中用户权限的数据,以决定我们是否将文件读取和/或写入后端服务器。
- 例如,在 中MySQL:
数据库用户
- 首先:
- 我们必须确定我们在数据库中是哪个用户。
- 虽然我们不一定需要数据库管理员 (DBA) 权限才能读取数据
- 但这在现代 DBMS 中变得越来越必要,因为只有 DBA 才被授予此类权限
- 这同样适用于其他常见数据库
- 如果我们确实拥有 DBA 权限,那么我们拥有文件读取权限的可能性就更大
查询用户权
- 如果没有
- 那么我们必须检查我们的权限以查看我们可以做什么
- 为了能够找到我们当前的 DB 用户
- 我们可以使用以下任何查询:
我们的UNION注入payload如下:
cn\’ UNION SELECT 1, user(), 3, 4– –
或者:
cn\’ UNION SELECT 1, user, 3, 4 from mysql.user– –
这告诉我们当前的用户,在本例中是root:
这是非常有希望的,因为 root 用户很可能是 DBA,这赋予我们许多特权。
用户权限
- 现在我们知道了我们的用户,我们可以开始寻找该用户拥有的权限。
- 首先:
- 我们可以使用以下查询测试我们是否具有超级管理员权限:
代码:sql
cn\’ UNION SELECT 1, super_priv, 3, 4 FROM mysql.user– –
再次,我们可以将以下有效负载与上述查询一起使用:
代码:sql
cn\’ UNION SELECT 1, super_priv, 3, 4 FROM mysql.user WHERE user=\”root\”– –
- 如果 DBMS 中有许多用户
- 我们可以添加WHERE user=\”root\”仅显示当前用户的权限root:
代码:sql
cn\’ UNION SELECT 1, super_priv, 3, 4 FROM mysql.user WHERE user=\”root\”– –
- 查询返回Y,这意味着YES,表示超级用户权限。
- 我们还可以使用以下查询直接从架构转储我们拥有的其他权限:
其它权限查询
代码:sql
cn\’ UNION SELECT 1, grantee, privilege_t
评论前必须登录!
注册