zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python实现的检测网站挂马程序

Python程序网站 实现 检测 挂马
2023-06-13 09:15:31 时间

系统管理员通常从svn/git中检索代码,部署站点后通常首先会生成该站点所有文件的MD5值,如果上线后网站页面内容被篡改(如挂马)等,可以比对之前生成MD5值快速查找去那些文件被更改,为了使系统管理员第一时间发现,可结合crontab或nagios等工具。

程序测试如下:

#pythoncheck_change.py

Usage:pythoncheck_change.pyupdate/home/wwwroot
pythoncheck_change.pycheck/home/wwwroot

#pythoncheck_change.pyupdate/data/www#生成站点的md5值
#echo"">/data/www/sitemap.html#测试清空文件
#rm-rf/data/www/sitemap.xml#测试删除文件
#pythoncheck_change.pycheck/data/www#查找那些文件被篡改
/data/www/sitemap.xml
/data/www/sitemap.html

代码如下(check_change.py):

#!/usr/bin/envpython

importos,sys,subprocess

defupdate(path):
f=open(file,"w")
forroot,dirs,filesinos.walk(path):
fornameinfiles:
line=os.path.join(root,name)
(stdin,stderr)=subprocess.Popen(["md5sum",line],stdout=subprocess.PIPE).communicate()
f.write(stdin)
f.close()

defcheck(path):
f=open(file,"r")
forlineinf:
check_ok="""echo"%s"|md5sum-c>/dev/null2>&1"""%line
#printcheck_ok
ifnotsubprocess.call(check_ok,shell=True)==0:
abnormal=line.split()
printabnormal[1]
f.close()

defUsage():
print"""
Usage:python%supdate/home/wwwroot
python%scheck/home/wwwroot
"""%(sys.argv[0],sys.argv[0])
sys.exit()

iflen(sys.argv)!=3:
Usage()

file="file.key"
model=sys.argv[1]
path=sys.argv[2]

ifos.path.exists(path)==False:
print"\033[;31mThedirectoryorfiledoesnotexist\033[0m"
sys.exit()
elifmodel=="update":
update(path)
elifmodel=="check":
check(path)
else:
Usage()