转载PHP安全之webshell和后门检测

转载 2018年01月10日 13:59:32

PHP安全之webshell和后门检测
阅读 1442,2017年03月17日 发布,来源:www.cnblogs.com

基于PHP的应用面临着各种各样的攻击:

XSS:对PHP的Web应用而言,跨站脚本是一个易受攻击的点。攻击者可以利用它盗取用户信息。你可以配置Apache,或是写更安全的PHP代码(验证所有用户输入)来防范XSS攻击
SQL注入:这是PHP应用中,数据库层的易受攻击点。防范方式同上。常用的方法是,使用mysql_real_escape_string()对参数进行转义,而后进行SQL查询。
文件上传:它可以让访问者在服务器上放置(即上传)文件。这会造成例如,删除服务器文件、数据库,获取用户信息等一系列问题。你可以使用PHP来禁止文件上传,或编写更安全的代码(如检验用户输入,只允许上传png、gif这些图片格式)
包含本地与远程文件:攻击者可以使远程服务器打开文件,运行任何PHP代码,然后上传或删除文件,安装后门。可以通过取消远程文件执行的设置来防范
eval():这个函数可以使一段字符串如同PHP代码一样执行。它通常被攻击者用于在服务器上隐藏代码和工具。通过配置PHP,取消eval()函数调用来实现
Sea-surt Attack(Cross-site request forgery,CSRF。跨站请求伪造):这种攻击会使终端用户在当前账号下执行非指定行为。这会危害终端用户的数据与操作安全。如果目标终端用户的账号用于管理员权限,整个Web应用都会收到威胁。
一、各种webshell
随着业务量的增大,越来越多的黑客来攻击扫描,网站安全性日益重要,一不留神就被黑客控制了服务器,最常见的方式就是通过POST请求来上传木马文件,从而可以执行任意命令

最流行的一种后门叫做一句话木马,其形式如下所示:

!/usr/bin/env python

encoding: utf-8

import os,sys
import re
import hashlib
import time

rulelist = [
‘($_(GET|POST|REQUEST)[.]\s(\s$_(GET|POST|REQUEST)[.]))’,
‘((eval|assert)(\s|\n)((\s|\n)$_(POST|GET|REQUEST)[.]))’,
‘(eval(\s|\n)(base64_decode(\s|\n)((.|\n))’,
‘(function_exists\s*(\s*\’|\”+[\’|\”]\s*))’,
‘((exec|shell_exec|passthru)+\s*(\s*$_(\w+)[(.)]\s))’,
‘($(\w+)\s*(\s.chr(\d+)))’,
‘($(\w+)\s*${(.*)})’,
‘($(\w+)\s*(\s*$_(GET|POST|REQUEST|COOKIE|SERVER)+[(.)]\s))’,
‘($_(GET|POST|REQUEST|COOKIE|SERVER)+[(.)](\s$(.*)))’,
‘($_\=(.*)$_)’,
‘($(.)\s((.)\/e(.),\s*$_(.),(.)))’,
‘(new com\s*(\s*[\’|\”]shell(.)[\’|\”]\s))’,
‘(echo\s*curl_exec\s*(\s*$(\w+)\s*))’,
‘((fopen|fwrite|fputs|file_put_contents)+\s*((.)$_(GET|POST|REQUEST|COOKIE|SERVER)+[(.)](.*)))’,
‘((\s*$_FILES[(.)][(.)]\s*,\s*$_(GET|POST|REQUEST|FILES)+[(.)][(.)]\s*))’,
‘($_(\w+)(.)(eval|assert|include|require|include_once|require_once)+\s(\s*$(\w+)\s*))’,
‘((include|require|include_once|require_once)+\s*(\s*\’|\”.(jpg|gif|ico|bmp|png|txt|zip|rar|htm|css|js)+[\’|\”]\s*))’,
‘(eval\s*(\s*(\s*$$(\w+))’,
‘((eval|assert|include|require|include_once|require_once|array_map|array_walk)+\s*(\s*$_(GET|POST|REQUEST|COOKIE|SERVER|SESSION)+[(.)]\s))’,
‘(preg_replace\s*((.*)(base64_decode($)’
]

def scan(path):
print(’ 可疑文件 ‘)
print(‘*’*30)
for root,dirs,files in os.walk(path):
for filespath in files:
if os.path.getsize(os.path.join(root,filespath))<1024000:
file= open(os.path.join(root,filespath))
filestr = file.read()
file.close()
for rule in rulelist:
result = re.compile(rule).findall(filestr)
if result:
print ‘文件:’+os.path.join(root,filespath )
print ‘恶意代码:’+str(result[0][0:200])
print (‘最后修改时间:’+time.strftime(‘%Y-%m-%d %H:%M:%S’,time.localtime(os.path.getmtime(os.path.join(root,filespath)))))
print ‘\n\n’
break
def md5sum(md5_file):
m = hashlib.md5()
fp = open(md5_file)
m.update(fp.read())
return m.hexdigest()
fp.close()

if md5sum(‘/etc/issue’) == ‘3e3c7c4194b12af573ab11c16990c477’:
if md5sum(‘/usr/sbin/sshd’) == ‘abf7a90c36705ef679298a44af80b10b’:
pass
else:
print(‘*’*40)
print “\033[31m sshd被修改,疑似留有后门\033[m”
print(‘*’*40)
time.sleep(5)
if md5sum(‘/etc/issue’) == ‘6c9222ee501323045d85545853ebea55’:
if md5sum(‘/usr/sbin/sshd’) == ‘4bbf2b12d6b7f234fa01b23dc9822838’:
pass
else:
print(‘*’*40)
print “\033[31m sshd被修改,疑似留有后门\033[m”
print(‘*’*40)
time.sleep(5)
if name==’main‘:

if len(sys.argv)!=2:
print ‘参数错误’
print “\t按恶意代码查找:”+sys.argv[0]+’目录名’
if os.path.lexists(sys.argv[1]) == False:
print “目录不存在”
exit()
print (‘\n\n开始查找:’+sys.argv[1])
if len(sys.argv) ==2:
scan(sys.argv[1])
else:
exit()
2、如何防范

php.ini 设置

disable_functions =phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,get_current_user,leak,putenv,popen,opendir
设置“safe_mode”为“on”
禁止“open_basedir” 可以禁止指定目录之外的文件操作
expose_php设为off 这样php不会在http文件头中泄露信息
设置“allow_url_fopen”为“off” 可禁止远程文件功能
log_errors”设为“on” 错误日志开启
php编码方面

所有用户提交的信息 post get 或是其他形式提交的数据 都要单独写个过滤函数处理一遍,养成习惯(intval,strip_tags,mysql_real_escape_string)
经常检查有没有一句话木马 eval($_POST[ 全站搜索php代码有没有这样的源代码
文件要命名规范 至少让自己可以一目了然,哪些php文件名字有问题
如用开源代码,有补丁出来的话,尽快打上补丁
如果攻击者拿到了服务器的最高权限,有可能通过修改服务器的配置文件php.ini来达到他们隐藏后门的目的,前几年比较流行。原理如下:php.ini 里面的这两个配置项:auto_prepend_file ,auto_append_file 可以让php解析前,自己加点东西进去 Automatically add files before or after any PHP document,如果被配置了eval()函数的后门 那就很阴险了,php文件代码里面查不出,只会在php解析前包含eval()函数进来 并且因为是全局的 所以所有php页面都是后门!所以要先确认auto_prepend_file ,auto_append_file没被配置成其他东西,才进行第3点的源代码检查。
服务器配置

配置的时候尽量使用最小权限,不要写入或者执行的目录不能给相应的权限

nginx或者apache配置的时候,不能访问的目录一定要配置为deny

待续。。。

参考文章

https://github.com/chenpingzhao/php-webshells

/miltonzhong/article/details/9714367

http://blog.jobbole.com/53821/
© 著作权归原作者所有

收集一些常见的webshell后门的特征码

收集一些常见的webshell后门的特征码2010-02-26 21:17 3571人阅读 评论(0) 收藏 举报vbscriptcmdsystem正则表达式phpasp一些常见的webshell(a...
  • forest_fire
  • forest_fire
  • 2016年03月21日 11:05
  • 3246

Web安全之:WebShell的获取与查杀

0x00 什么是webshell 攻击者以asp、php、jsp等网页文件形式保存在Web服务器上的一种命令执行环境,也可称为网页后门。...
  • where_qwer
  • where_qwer
  • 2016年07月15日 20:30
  • 2322

国内各类 WebShell 密码大全 爆破、社工用 webshell-password

转自:http://www.zbeol.com/blog/post/1856.html !@#123 ******* 000 1 10011C120105101 111 12...
  • kezhen
  • kezhen
  • 2015年07月13日 17:44
  • 2633

[web安全] Webshell的检测

原文地址:http://www.freebuf.com/articles/others-articles/71604.html (原文主要是针对窃密型Webshell的检测来讨论的,开篇部分先介绍了传...
  • hitwangpeng
  • hitwangpeng
  • 2015年08月20日 13:32
  • 996

那些强悍的PHP一句话后门

我们以一个学习的心态来对待这些PHP后门程序,很多PHP后门代码让我们看到程序员们是多么的用心良苦。 强悍的PHP一句话后门 这类后门让网站、服务器管理员很是头疼,经常要换着方法进行各种检...
  • nowadaysall
  • nowadaysall
  • 2016年08月27日 14:41
  • 2965

网站被黑中毒WebShell木马的解决方案

收到客户的反馈,说运行了一年的网站突然遭到黑客的攻击,系统cpu一直保持在100%,有进程也干不掉,然后客户就进行杀毒了,然后就把所有的exe文件都杀了,然后系统也就很多功能不正常了,数据库的服务也干...
  • huangxiangec
  • huangxiangec
  • 2014年02月13日 11:10
  • 9769

代码简短且隐蔽的后门木马

本文将介绍一个代码很简短,而且很隐蔽的后门木马,以便让大家在检测程序时可以避免被挂木马。...
  • fdipzone
  • fdipzone
  • 2015年08月30日 22:16
  • 14794

webshell检测方法归纳

0x00 背景 webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服...
  • u011066706
  • u011066706
  • 2016年04月17日 22:10
  • 6312

什么是webshell,遇到webshell文件怎么办?

前段时间,有一个用户问小编什么是webshell,悬镜服务器卫士是针对webshel文件内容进行扫描的,还是针对文件夹进行扫描的?今天小编就给大家简单的介绍下。 先来普及下什么是webshe...
  • Anprou
  • Anprou
  • 2017年04月17日 16:29
  • 538

安全应急方法-发现后门文件

主要指非web类后门,web类后门可参考一中的4及后面部分        1)记录文件stat信息,备份文件并删除        2)通过netstat -anltp命令可查看到当前连接信息及建立连接...
  • hrayha
  • hrayha
  • 2017年03月27日 17:42
  • 651
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:转载PHP安全之webshell和后门检测
举报原因:
原因补充:

(最多只允许输入30个字)