手机版

准确找到PHP WEBSHELL木马版本

时间:2021-10-20 来源:互联网 编辑:宝哥软件园 浏览:

让我们看一下通过引号成功执行命名代码片段的情况。代码如下:复制代码如下: ` ls-al `;` ls -al `;echo“SSS”;` ls -al `;$ SQL=' SELECT ' username ' FROM ' table ' WHERE 1 ';$ SQL='从' table '中选择' username ',其中1'/*仅是它前面的一个空白字符,或者在一行代码的末尾,后面是write。以下两种行为是意外情况,即SQL命令中的反引号,应排除在外。*/正则表达式怎么写?分析:关于可移植性有哪些共同点?与其他包含反引号的正常部分有什么区别?它们的前面可以有空格和制表符等空白字符。也可以有程序代码,前提是引号(单引号和双引号)必须关闭。既危险又隐蔽。CFC4N给出的正则性如下:[(?(?^(?\s)?)|(?(?Pquote[''])[^(?p=报价)]?(?P=quote)[^`]*?))`(?Pshell[^`])`】解释:[(?(?^(?\s)?)|(?(?Pquote[''])[^(?p=报价)]?(?P=quote)[^`]*?))]匹配起始位置或起始位置后有空白字符或前面有代码,代码有封闭的单引号和双引号。(这个PYTHON正则化使用捕获命名和反向引用)【`(?PS hell [`]) `]这个比较简单,匹配后面引号中间的字符串。

Python脚本检测PHP WEBSHELL,然后我将这段代码写入程序,测试运行discuz的程序。结果出现了假阳性。误报的位置是“define ('UC _ dbtablepre ',' ucenter `)”。“config.inc.php”中的“加州大学”,是什么原因造成的?这一行代码符合前面封闭引号和后面引号的使用,符合要求,已经检测出来。这种情况怎么排除?这个有什么特别的?它前面有一个逗号。如果是圆点呢字符串连接?排除逗号?嗯,我错了。我不应该用我的想法误导你。改变主意。在查找带引号的可执行代码前面的字符串时,它们只能是行首,也可以有空白字符(包括空格、tab键等)。),代码的结尾也可以以分号“;”开头。在其他情况下,是不可执行的?嗯,应该是这样的。(如有错误,欢迎指正。)现在我们有想法了,常规代码更容易写了。以下[(|(?=;))\ s * ` [`] `],解释,[(|(?=;))]匹配的位置是行的开头,或者以分号“;”开头。[\ s * ` [`] `]任何空白字符,后跟.(你知道的)。好的,写完之后,我检查了一下,发现了另一个问题。

匹配引入文件的正则也匹配了要求一次./include/db_ ' .$数据库。上课。PHP ';这种代码,什么原因造成的,您自己分析吧。给出修复之后的大蟒代码,如下:复制代码代码如下: #!/usr/bin/python #-*-编码: utf-8-*-# # # # # @包# # # @作者CFC4N[电子邮件保护]# # @版权所有(c)www . cnxct.com # # @ Version $ Id : check _ PHP _ shell。py 37 2010-07-22 09:56336028 z CFC4N $ # # import OS import sys import re import time def list dir(dirs,liston=' 0 ')33330(?php|inc|html?)$ ',文件名,re .IGNORECASE): I=0 in ame=0 f=打开(文件路径)而f: file_contents=f.readline()如果不是file _ contents 3360 break I=1 match=re。搜索(r ' '(?功能\b(?include|require()? _一次)?\b)\s*\(?\s*[''](?pfilename[^;]*(?\.(?php|inc)))['']\)?\ s *;'文件内容,关于.IGNORECASE | re .MULTILINE)if match :函数=match。组(“函数”)文件名=匹配。group(' filename ')if in ame==0: info=' \ n[% s]: \ n " %(文件路径)else : info=" ' info=' \ t |-[% s]-[% s]行[% d]\ n"%(函数,文件名,I)flog。在ame=1 match=re中写入(信息)打印信息。搜索(r ' \ b(?pffunctioneval | proc _ open | popen | shell _ exec | exec | passthru | system)\ b \ s * \(',file_contents,re .IGNORECASE | re .multiline)if match : function=match。group(' function ')if in ame==0: info=' \ n[% s]: \ n " %(文件路径)else : info=' " info=' t |-[% s]行[% d]\ n"%(function,I)flog。在ame=1 match=re.search(r'(^|(中写入(信息)打印信息?=;))\s* `(?“pshell[^`])`\”文件内容. IGNORECASE)如果匹配: shell=match。group(' shell ')if in ame==0: info=' \ n[% s]: \ n " %(文件路径)else : info=' " info=' \ t |-[`]命令是[% s]行[% d]\ n"%(shell,I)flog。在ame=1 f . close()flog中写入(信息)打印信息。如果“_ _ main _ _”=_ _ name _ _ 3333333 1-recurse,则close()子文件夹“%(操作,操作)退出”()elif argvnum==2: path=OS。路径。真实路径(sys。argv[1])listdir(路径,liston)else : liston=sys。argv[2]路径=OS。路径。真实路径(sys。argv[1])listdir(路径,liston)flog=open(OS。getcwd()'/check _ PHP _ shell。日志',' a ')ISOTIMEFORMAT=' % Y-% m-%稍微检测了一下讨论7.2的代码,还是有误报的,误报的为这种包含结构化查询语言的代码:复制代码代码如下: $ query=$ db-query(' SELECT ' status ',' threads ',' posts` FROM ` { $ tablepre }论坛` WHERE ` status `=' 1 ');稍微检测了一下讨论7.2的代码,还是有误报的,误报的为这种包含结构化查询语言的代码:复制代码代码如下: $ query=$ db-query(' SELECT ' status ',' threads ',' posts` FROM ` { $ tablepre }论坛` WHERE ` status `=' 1 ');由于这个脚本是按照一行一行的代码来处理的,所以,有这种误报。您自己去修复吧。相对网上流传的脚本来说,还是比较准确的。欢迎转载。转载请注明来源,以及留下博客链接,同时,不能用于商业用途。(已经修复,增加了反引号后面【\ s *;】的判断2010-07-27 17:06) PS:如果说上传文件也算是危险的、值得注意的操作的话,建议加上移动上传的文件函数的检测。你知道在哪里加的。^_^ 2010-12-17 关于这些代码,已经放到谷歌的代码托管上了。

版本控制地址为http://code.google.com/p/cnxct/大家个获得最新版。我是一个PHPer,写的大蟒有点憋,有点懒,还请各位安全界的大牛,程序界的前辈不要鄙视,要给建议,谢谢php。版的以后在写吧。同时,也欢迎各位安全爱好者反馈最新的网外壳特征代码,我尽力增加到程序中区。完整的代码复制代码代码如下:#!/usr/bin/python #-*-编码: utf-8-*-# # # # # @ package # # @ author CFC4N[电子邮件保护]# @版权(c)www . cnxct.com # # @ Version $ Id $ # # import OS import sys import re import time def listdir(dirs,liston=' 0 '): flog=open(OS。getcwd()'/check _ PHP _ shell。日志',' a ')如果不是os.path.isdir(dirs): print(?php|inc|html?)$ ',文件名,re .IGNORECASE): I=0 in ame=0 f=打开(文件路径)而f: file_contents=f.readline()如果不是file _ contents 3360 break I=1 match=re。搜索(r ' '(?功能\b(?include|require()? _一次)?\b)\s*\(?\s*[''](?pfilename[^;]*(?\.(?php|inc)))['']\)?\ s *;'文件内容,关于.IGNORECASE | re .MULTILINE)if match :函数=match。组(“函数”)文件名=匹配。group(' filename ')if in ame==0: info=' \ n[% s]: \ n " %(文件路径)else : info=" ' info=' \ t |-[% s]-[% s]行[% d]\ n"%(函数,文件名,I)flog。在ame=1 match=re中写入(信息)打印信息。搜索(r ' \ b(?pffunctioneval | proc _ open | popen | shell _ exec | exec | passthru | system | assert | fwrite | create _ function)\ b \ s * \(',file_contents,re .IGNORECASE | re .multiline)if match : function=match。group(' function ')if in ame==0: info=' \ n[% s]: \ n " %(文件路径)else : info=' " info=' t |-[% s]行[% d]\ n"%(function,I)flog。在ame=1 match=re.search(r'(^|(中写入(信息)打印信息?=;))\s* `(?“pshell[^`])`\”文件内容. IGNORECASE)如果匹配: shell=match。group(' shell ')if in ame==0: info=' \ n[% s]: \ n " %(文件路径)else : info='"info=' \ t |-[`]命令是[% s]行[% d]\ n"%(shell,I)flog。在ame=1 match=re中写入(信息)打印信息。搜索(r '(?Pshell\$_(?pos|ge|reques)t)\s*\[[^\]]\]\ s * \(',文件内容,关于. IGNORECASE)如果匹配: shell=match。group(' shell ')if in ame==0: info=' \ n[% s]: \ n " %(文件路径)else : info=' " info=' \ t |-[`]命令是[% s]行[% d]\ n"%(shell,I)flog。在ame=1 f . close()flog中写入(信息)打印信息。如果“_ _ main _ _”=_ _ name _ _ 3333333 1-recurse,则close()子文件夹“%(操作,操作)退出”()elif argvnum==2: path=OS。路径。真实路径(sys。argv[1])listdir(路径,liston)else : liston=sys。argv[2]路径=OS。路径。真实路径(sys。argv[1])listdir(路径,liston)flog=open(OS。getcwd()'/check _ PHP _ shell。日志',' a ')ISOTIMEFORMAT=' % Y-% m-%

版权声明:准确找到PHP WEBSHELL木马版本是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。