php新手教程
本文为先知社区「Xian_Yun」的原创文章原文链接:https://xz.aliyun.com/t/12659网站备份防止在对源码进行修改时出问题,或者被攻击方删除源码而准备压缩tar资源 -cvf web.tar /var/www/html。
zip -q -r web.zip /var/www/html解压缩tar -xvf web.tar -c /var/www/htmlunzip资源 web.zip -d /var/www/html备份mv web.tar /tmp
mv web.zip /home/xxx上传下载scp username@servername:/path/file资源name /tmp/local_destination #从服务器下载单个文件到本地scp /path/local_filename username@servername:/path #从本地上传单资源个文件到服务器
scp -r username@servername:remote_dir/ /tmp/local_dir #从服务器下载整个目录到本地scp -r /tmp/local_dir use资源rname@servername:remote_dir #从本地上传整个目录到服务器
SSHXshell、finalshellFTP相关工具:FileZilla 、SmartFTP数据库备份因为最常用的资源是mysql数据库,所以基本的攻防大部分都是用mysql数据库的命令0备份指定数据库:
mysqldump –u username –p password databasename > target.s资源ql备份所有数据库:mysqldump –all -databases > all.sql
导入数据库:mysql –u username –p password database < from.sql资源明确自己手上的机器信息虽然信息收集都是红队干的活,但是蓝队也需要明确自己的信息uname -a
#系统信息ps -aux -ps -ef #进程信息id #用于显示用户ID,以及所属群组IDnetsta资源t -ano/-a #查看端口情况cat /etc/passwd #用户情况ls /home/
#用户情况find / -type d -perm -002 #可写目录检查grep -r “flag” 资源/var/www/html/ #查找flag口令更改为了防范弱口令攻击,mysql密码默认都是root,phpstudy默认密码123456
还有其他默认密码admin,top100, top1000等资源尤其是WEB应用的后台密码修改passwd username #ssh口令修改set password for mycms@localhost
= password(18ciweufhi28746);#资源MySQL密码修改find /var/www//html -path *config*’ #查找配置文件中的密码凭证监控文件是否被删除或篡改或者被传入恶意文件
python一把锁梭注意,这是一个pyth资源on2脚本# -*- coding: utf-8 -*-#use: python file_check.py ./importosimporthashlibimport
shutilimportntpa资源thimporttimeCWD=os.getcwd()FILE_MD5_DICT={}# 文件MD5字典ORIGIN_FILE_LIST=[]# 特殊文件路径字符串Special_path_str
=d资源rops_JWI96TY7ZKNMQPDRUOSG0FLH41A3C5EXVB82bakstring=bak_EAR1IBM0JT9HZ75WU4Y3Q8KLPCX26NDFOGVSlogstring资源
=log_WMY4RVTLAJFB28960SC3KZX7EUP1IHOQN5GDwebshellstring=webshell_WMY4RVTLAJFB28960SC3KZX7EUP1IHOQN5G资源D
difffile=diff_UMTGPJO17F82K35Z0LEDA6QB9WH4IYRXVSCNSpecial_string=drops_log# 免死金牌UNICODE_ENCODING="u资源tf-8"
INVALID_UNICODE_CHAR_FORMAT=r"\?%02x"# 文件路径字典spec_base_path=os.path.realpath(os.path.join(CWD,S资源pecial_path_str
))Special_path={bak:os.path.realpath(os.path.join(spec_base_path,bakstring)),log:os.p资源ath.realpath(os.
path.join(spec_base_path,logstring)),webshell:os.path.realpath(os.path.join(spec_bas资源e_path,webshellstring
)),difffile:os.path.realpath(os.path.join(spec_base_path,difffile)),}defisListL资源ike(value):returnisinstance
(value,(list,tuple,set))# 获取Unicode编码defgetUnicode(value,encoding=None,no资源neToNull=False):ifnoneToNull
andvalueisNone:returnNoneifisListLike(value):value=list(getUnicode(_,enc资源oding,noneToNull)for_invalue)
returnvalueifisinstance(value,unicode):returnvalueelifisinstance(value,资源basestring):whileTrue:try:return
unicode(value,encodingorUNICODE_ENCODING)exceptUnicodeDecodeError,ex资源:try:returnunicode(value,UNICODE_ENCODING
)except:value=value[:ex.start]+"".join(INVALID_UNICODE_CHAR资源_FORMAT%ord(_)for_invalue[ex.start:ex.end])
+value[ex.end:]else:try:returnunicode(value)exceptUnicode资源DecodeError:returnunicode(str(value),errors=
"ignore")# 目录创建defmkdir_p(path):importerrnotry:os.makedi资源rs(path)exceptOSErrorasexc:ifexc.errno==errno
.EEXISTandos.path.isdir(path):passelse:raise# 获取当前所有文件路资源径defgetfilelist(cwd):filelist=[]forroot,subdirs
,filesinos.walk(cwd):forfilepathinfiles:originalfile=资源os.path.join(root,filepath)ifSpecial_path_strnot
inoriginalfile:filelist.append(originalfile)returnfi资源lelist# 计算机文件MD5值defcalcMD5(filepath):try:withopen
(filepath,rb)asf:md5obj=hashlib.md5()md5obj.update资源(f.read())hash=md5obj.hexdigest()returnhashexceptException
,e:printu[!] getmd5_error : +getUnicode(fi资源lepath)printgetUnicode(e)try:ORIGIN_FILE_LIST.remove(filepath
)FILE_MD5_DICT.pop(filepath,None)except资源KeyError,e:pass# 获取所有文件MD5defgetfilemd5dict(filelist=[]):filemd5dict
={}forori_fileinfilelist:ifSpeci资源al_path_strnotinori_file:md5=calcMD5(os.path.realpath(ori_file))ifmd5
:filemd5dict[ori_file]=md5retur资源nfilemd5dict# 备份所有文件defbackup_file(filelist=[]):# if len(os.listdir(Special_path[bak])) == 0:
forfile资源pathinfilelist:ifSpecial_path_strnotinfilepath:shutil.copy2(filepath,Special_path[bak])if__name__
==_资源_main__:printu---------start------------forvalueinSpecial_path:mkdir_p(Special_path[value])# 获取所有文件路资源径,并获取所有文件的MD5,同时备份所有文件
ORIGIN_FILE_LIST=getfilelist(CWD)FILE_MD5_DICT=getfilemd5dict(ORIGIN_FILE_LIST资源)backup_file(ORIGIN_FILE_LIST
)# TODO 备份文件可能会产生重名BUGprintu[*] pre work end!whileTrue:file_list=getfil资源elist(CWD)# 移除新上传文件diff_file_list
=list(set(file_list)^set(ORIGIN_FILE_LIST))iflen(diff_file_list)!=0资源:# import pdb;pdb.set_trace()forfilepath
indiff_file_list:try:f=open(filepath,r).read()exceptExceptio资源n,e:breakifSpecial_stringnotinf:try:print
u[*] webshell find : +getUnicode(filepath)shutil.move(filep资源ath,os.path.join(Special_path[webshell],ntpath
.basename(filepath)+.txt))exceptExceptionase:printu[!]资源 move webshell error, "%s" maybe is webshell.%getUnicode
(filepath)try:f=open(os.path.join(Special_pa资源th[log],log.txt),a)f.write(newfile: +getUnicode(filepath)
+ : +str(time.ctime())+\n)f.close()exceptEx资源ceptionase:printu[-] log error : file move error: +getUnicode
(e)# 防止任意文件被修改,还原被修改文件md5_dict=getfilem资源d5dict(ORIGIN_FILE_LIST)forfilekeyinmd5_dict:ifmd5_dict[filekey
]!=FILE_MD5_DICT[filekey]:try:f=open(资源filekey,r).read()exceptException,e:breakifSpecial_stringnotinf:try
:printu[*] file had be change : +g资源etUnicode(filekey)shutil.move(filekey,os.path.join(Special_path[difffile
],ntpath.basename(filekey)+.资源txt))shutil.move(os.path.join(Special_path[bak],ntpath.basename(filekey)),
filekey)exceptExceptionase资源:printu[!] move webshell error, "%s" maybe is webshell.%getUnicode(filekey)
try:f=open(os.path.join(S资源pecial_path[log],log.txt),a)f.write(diff_file: +getUnicode(filekey)+ : +getUnicode
(time.ctime())+\n)资源f.close()exceptExceptionase:printu[-] log error : done_diff: +getUnicode(filekey)pass
time.sleep(2)# 资源print [*] + getUnicode(time.ctime())还有github上有脚本https://github.com/TheKingOfDuck/FileMonitor
也可以进行手动的资源方法搜索查看可能是攻击方传入的恶意文件find/var/www/html-name*.php-mmin-5#查看最近5分钟修改文件find./-name*.php|xargswc-l|sort
-u#寻资源找行数最短文件,一般有可能是一句话木马grep-r--include=*.php[^a-z]eval($_POST/var/www/html#查包含关键字的php文件find/var/www/html资源
-typef-name"*.php"|xargsgrep"eval("|more#在Linux系统中使用find、grep和xargs命令的组合,用于在指定目录(/var/www/html)下查找所有资源以.php为扩展名的文件,并搜索这些文件中包含字符串"eval("的行。
#使用more命令来分页显示结果,以便在输出较长时进行逐页查看以下列举三种最常见的webshell
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。