<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[检测php网站是否已经被攻破的方法]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Tue, 05 May 2015 01:05:26 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	0x01 查看访问日志<br/><br/>看是否有文件上传操作(POST方法)，<br/><div class="code"><br/>IPREMOVED - - &#91;01/Mar/2013:06:16:48 -0600&#93; &quot;POST/uploads/monthly_10_2012/view.php HTTP/1.1&quot; 200 36 &quot;-&quot; &quot;Mozilla/5.0&quot;<br/>IPREMOVED - - &#91;01/Mar/2013:06:12:58 -0600&#93; &quot;POST/public/style_images/master/profile/blog.php HTTP/1.1&quot; 200 36 &quot;-&quot; &quot;Mozilla/5.0&quot;<br/></div><br/>nginx默认记录的日志格式为：&nbsp;&nbsp;<br/><div class="code"><br/>access_log logs/access.log <br/></div><br/>或<br/><div class="code"><br/>access_log logs/access.log combined;<br/></div><br/>nginx默认记录日志的位置为:<br/><div class="code"><br/>nginx安装目录/log/<br/></div><br/><br/>0x02 查找含有恶意php代码的文件<br/><br/>2.1 查找最近发生变化的php文件<br/><div class="code"><br/>find . -type f -name &#039;*.php&#039; -mtime -7<br/></div><br/>-type f 表示搜索正常的一般文件&nbsp;&nbsp; -mtime -7 表示7*24小时内修改的文件<br/><br/>结果可能如下:<br/><div class="code"><br/>./uploads/monthly_04_2008/index.php<br/>./uploads/monthly_10_2008/index.php<br/>./uploads/monthly_08_2009/template.php<br/>./uploads/monthly_02_2013/index.php<br/></div><br/>2.2 查找文件中是否存在疑似代码<br/><div class="code"><br/>find . -type f -name &#039;*.php&#039; &#124; xargs grep -l &quot;eval *(&quot; --color <br/></div><br/> (*代表任意个空格)<br/><div class="code"><br/>find . -type f -name &#039;*.php&#039; &#124; xargs grep -l &quot;base64_decode *(&quot; --color<br/>find . -type f -name &#039;*.php&#039; &#124; xargs grep -l &quot;gzinflate *(&quot; --color<br/>find . -type f -name &#039;*.php&#039; &#124; xargs grep -l &quot;eval *(str_rot13 *(base64_decode *(&quot; --color<br/></div><br/>注解：很多命令不支持管道传递参数，而实际上又需要这样，所以就用了xargs命令，这个命令可以用来管道传递参数；grep -l表示只包含某个字符串的文件名，如果去掉-l则会显示匹配特定字符串的行内容<br/><br/>几个特殊字符串的意义: eval()把字符串按照php代码来执行，是最常见的php一句话木马<br/><br/>base64_decode() 将字符串base64解码，攻击的时候payload是base64编码，则这个函数就有用武之地了<br/><br/>gzinflate() 将字符串解压缩处理，攻击的时候payload用gzdeflate压缩之后，使用这个函数进行解压缩<br/><br/>str_rot13() 对字符串进行rot13编码<br/><br/>也可以使用正则表达式来搜索文件，查找可以代码：<br/><div class="code"><br/>find . -type f -name &#039;*.php&#039; &#124; xargs egrep -i &quot;(mail&#124;fsockopen&#124;pfsockopen&#124;stream&#92;_socket&#92;_client&#124;exec&#124;system&#124;passthru&#124;eval&#124;base64_decode) *(&quot;<br/></div><br/>下面解释webshell常用的函数：<br/><br/>mail()：可用来向网站用户发送垃圾邮件<br/><br/>fsockopen():打开一个网络连接或者一个unix套接字连接，可用于payload发送远程请求<br/><br/>pfsockopen():和fsockopen()作用类似<br/><br/>stream_socket_client():建立一个远程连接，例子如下：<br/><div class="code"><br/>&lt;?php<br/>$fp = stream_socket_client(&quot;tcp://www.example.com:80&quot;, $errno, $errstr, 30);&nbsp;&nbsp;<br/>if (!$fp) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;$errstr ($errno)&lt;br /&gt;&#92;n&quot;;&nbsp;&nbsp;<br/>&#125; else &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fwrite($fp, &quot;GET / HTTP/1.0&#92;r&#92;nHost: www.example.com&#92;r&#92;nAccept: */*&#92;r&#92;n&#92;r&#92;n&quot;);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (!feof($fp)) &#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo fgets($fp, 1024);&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($fp);&nbsp;&nbsp;<br/>&#125;&nbsp;&nbsp;<br/>?&gt;<br/></div><br/>exec():命令执行函数<br/><br/>system():同exec()<br/><br/>passthru():同exec()<br/><br/>preg_replace()正则表达式由修饰符"e"修饰的时候，替换字符串在替换之前需要按照php代码执行，这种情况也需要考虑到，这种情况可采用这种以下扫搜：<br/><div class="code"><br/>find . -type f -name &#039;*.php&#039; &#124; xargs egrep -i &quot;preg_replace *&#92;((&#91;&#039;&#124;&#92;&quot;&#93;)(.).*&#92;2&#91;a-z&#93;*e&#91;^&#92;1&#93;*&#92;1 *,&quot; --color<br/></div><br/>0x03 比较代码文件<br/><br/>这种情况需要有一份干净的代码，这份代码和正在使用的代码进行比较。例如<br/><div class="code"><br/>diff -r wordpress-clean/ wordpress-compromised/ -x wp-content<br/></div><br/>上面的例子是比较wordpress-clean/ 和wordpress-comprised/两个目录，并且目录里面的wp-content/子目录不比较<br/><br/>0x04 搜寻可写的目录<br/><br/>看这个目录里面是否有可疑文件，如下脚本查找权限为777的目录是否存在php文件<br/><div class="code"><br/>search_dir=$(pwd)<br/>writable_dirs=$(find $search_dir -type d -perm 0777)<br/>for dir in $writable_dirs<br/>&nbsp;&nbsp;&nbsp;&nbsp;do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo $dir<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find $dir -type f -name &#039;*.php&#039;<br/>done<br/></div><br/>黑客经常在jpg文件中插入php代码，因此在查询这些目录的时候也要查询jpg文件：<br/><div class="code"><br/>find wp-content/uploads -type f -iname &#039;*.jpg&#039; &#124; xargs grep -i php<br/></div><br/>注意：-iname 表示文件名不区分大小写&nbsp;&nbsp;&nbsp;&nbsp; grep -i 也表示不区分大小写<br/><br/>0x05 检测iframe标签<br/><br/>黑客经常做的是嵌入iframe标签，因此可以查看网页的源代码，并且搜索其中是否存在iframe标签，可使用如下命令：<br/><div class="code"><br/>grep -i &#039;&lt;iframe&#039; mywebsite.txt<br/></div><br/>对于动态生成的页面，可使用ff的Live HTTP Headers插件，下载到源码之后再查找是否存在iframe标签<br/><br/>0x06 查找数据库中是否存在敏感字符串<br/><br/>包括%base64_%、%eval(%<等上面提到的一些关键词<br/><br/>0x07 检查.htaccess文件<br/><br/>是否包含了auto_prepend_file和auto_append_file，使用如下命令<br/><div class="code"><br/>find . -type f -name &#039;&#92;.htaccess&#039; &#124; xargs grep -i auto_prepend_file<br/>find . -type f -name &#039;&#92;.htaccess&#039; &#124; xargs grep -i auto_append_file<br/></div><br/>auto_prepend_file的作用是加载当前脚本文件之前，先加载的php脚本 auto_append_file的作用是加载当前脚本文件之后，再加载的php脚本。黑客如果这么修改了.htaccess文件，那么可以在访问.htaccess目录的php脚本时，加载上自己想要加载的恶意脚本 .<br/><br/>htaccess文件还可以被用来把访问网站的流量劫持到黑客的网站，<br/><div class="code"><br/>RewriteCond %&#123;HTTP_USER_AGENT&#125;^.*Baiduspider.*$<br/>Rewriterule ^(.*)$ http://www.hacker.com/muma.php &#91;R=301&#93;<br/></div><br/>将baidu爬虫的访问重定向到黑客的网站(包含HTTP_USER_AGENT和http关键字)<br/><div class="code"><br/>RewriteCond %&#123;HTTP_REFERER&#125; ^.*baidu.com.*$ Rewriterule ^(.*)$ http://www.hacker.com/muma.php &#91;R=301&#93;<br/></div><br/>将来自baidu搜索引擎的流量重定向到黑客的网站(包含HTTP_REFERER和http关键字) 为了查看网站是否被.htaccess修改导致流量劫持，可以在搜索.htaccess文件的时候采用如下命令： <br/><div class="code"><br/>find . -type f -name &#039;&#92;.htaccess&#039; &#124; xargs grep -i http;<br/>find . -type f -name &#039;&#92;.htaccess&#039; &#124; xargs grep -i HTTP_USER_AGENT; <br/>find . -type f -name &#039;&#92;.htaccess&#039; &#124; xargs grep -i HTTP_REFERER<br/></div><br/>Tags - <a href="http://www.dzhope.com/tags/php/" rel="tag">php</a> , <a href="http://www.dzhope.com/tags/php%25E6%259C%25A8%25E9%25A9%25AC/" rel="tag">php木马</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] 检测php网站是否已经被攻破的方法]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>