在 WooYun Zone 里看到个帖子有木有大牛帮我检测我母校的站,有人回复可以用360的网站卫士来扫描别人网站的漏洞。但是要扫描某个网站时是会有验证的……
方法一:mod_substitute
于是想到了用反向代理,然后替换网页内容,这里用 Apache 的反向代理做个演示:
在 http.conf 最后加上:
<VirtualHost *:80>
ServerName sec.mine.com
ServerAlias sec.mine.com
ProxyRequests Off
<Proxy *>
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://www.ooxx.com/
ProxyPassReverse / http://www.ooxx.com/
</VirtualHost>
其中 sec.mine.com 是自己的域名,www.ooxx.com 是要检测的对方的域名。当然先开启 Apache 的 proxy 扩展什么的就不说了,网上很多。
关键是替换代理服务器返回的网页内容,搜了下中文资料貌似大部分都和这篇文章里说的差不多,可惜我试了下不知道为什么没成功。Google 到了一个类似的问题——Apache as Proxy replace the html code/tags/text,参照 mod_substitute 的官方文档,改成这样就好了:
<VirtualHost *:80>
ServerName sec.mine.com
ServerAlias sec.mine.com
ProxyRequests Off
<Proxy *>
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://www.ooxx.com/
ProxyPassReverse / http://www.ooxx.com/
RequestHeader unset Accept-Encoding
<Location "/">
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|COPY RIGHT|<a href=\"http://webscan.360.cn/index/checkwebsite/url/sec.mine.com\" name=\"yourhash\" >360网站安全检测平台</a>|ni"
</Location>
</VirtualHost>
RequestHeader unset Accept-Encoding
是为了防止服务器把 response 给压缩(gzip)了,要不然无法进行正则替换。显而易见,我把 response 里的 COPY RIGHT 替换成了360网站安全给的文字验证。
方法二:rewrite
不过搞完后发现回复里用的是 .htaccess 的方法,试了试也比较简单:
在 http.conf 里加上:
<VirtualHost *:80>
ServerName test.mine.com
DocumentRoot /var/www/html/test.mine.com
<Directory "/var/www/html/test.mine.com">
Order deny,allow
AllowOverride All
allow from all
</Directory>
</VirtualHost>
再去新建 /var/www/html/test.mine.com 这个目录,目录里放个名为 webscan_360_cn.html 的文件,文件内容你懂的。(也可以新建个 index.php 在里面写入验证代码)
然后新建个 .htaccess,内容:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} ^webscan_360_cn
RewriteRule ^(.*)$ http://www.ooxx.com/$1
要先打开 Apache 的 rewrite 就不咯嗦了,这个 rewrite 规则大意就是除了以 webscan_360_cn 开头的文件,其他的都反向代理到 www.ooxx.com。
参考:
反向代理的有趣用法
Apache as Proxy replace the html code/tags/text
360网站安全检测域名验证存在风险,有可能被他人验证通过