看是否有文件上传操作(POST方法),
IPREMOVED - - [01/Mar/2013:06:16:48 -0600] \"大众POST/uploads/monthly_10_2012/view.php HTTP/1.1\公众 200 36 \"大众-\"大众 \"大众Mozilla/5.0\"大众IPREMOVED - - [01/Mar/2013:06:12:58 -0600] \"大众POST/public/style_images/master/profile/blog.php HTTP/1.1\公众 200 36 \"大众-\"大众 \"大众Mozilla/5.0\"大众
nginx默认记录的日志格式为:
access_log logs/access.log
或
access_log logs/access.log combined;
nginx默认记录日志的位置为:
nginx安装目录/log/
0x02 查找含有恶意php代码的文件
2.1 查找最近发生变革的php文件find . -type f -name '.php' -mtime -7
-type f 表示搜索正常的一样平常文件 -mtime -7 表示724小时内修正的文件 结果可能如下:
./uploads/monthly_04_2008/index.php./uploads/monthly_10_2008/index.php./uploads/monthly_08_2009/template.php./uploads/monthly_02_2013/index.php2.2 查找文件中是否存在疑似代码find . -type f -name '.php' | xargs grep -l \公众eval (\"大众 --color
(代表任意个空格)
find . -type f -name '.php' | xargs grep -l \"大众base64_decode (\公众 --colorfind . -type f -name '.php' | xargs grep -l \"大众gzinflate (\"大众 --colorfind . -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() 将字符串解压缩处理,攻击的时候payload用gzdeflate压缩之后,利用这个函数进行解压缩 str_rot13() 对字符串进行rot13编码 也可以利用正则表达式来搜索文件,查找可以代码:
find . -type f -name '.php' | xargs egrep -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)) { echo fgets($fp, 1024); } fclose($fp); } ?>
exec():命令实行函数 system():同exec() passthru():同exec() preg_replace()正则表达式由润色符\"大众e\"大众润色的时候,更换字符串在更换之前须要按照php代码实行,这种情形也须要考虑到,这种情形可采取这种以下扫搜:
find . -type f -name '.php' | xargs egrep -i \"大众preg_replace \((['|\\"大众])(.).\2[a-z]e[^\1]\1 ,\"大众 --color
0x03 比较代码文件
这种情形须要有一份干净的代码,这份代码和正在利用的代码进行比较。例如
diff -r wordpress-clean/ wordpress-compromised/ -x wp-content
上面的例子是比较wordpress-clean/ 和wordpress-comprised/两个目录,并且目录里面的wp-content/子目录不比较
0x04 征采可写的目录
看这个目录里面是否有可疑文件,如下脚本查找权限为777的目录是否存在php文件
search_dir=$(pwd)writable_dirs=$(find $search_dir -type d -perm 0777)for dir in $writable_dirs do #echo $dir find $dir -type f -name '.php'done
黑客常常在jpg文件中插入php代码,因此在查询这些目录的时候也要查询jpg文件:
find wp-content/uploads -type f -iname '.jpg' | xargs grep -i php
把稳:-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_filefind . -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
本文作者:Drops,转载自:http://www.mottoin.com/detail/3649.html