cracer培训教程第一期 文件上传漏洞与命令注入漏洞

偏向php
文件包含漏洞是代码注入的一种。其原理就是注入一段用户能控制的脚本或代码,并让服务器段执行,代码注入的典型代表就是文件包含file inclusion。文件包含可能出现在jsp、php、asp等语言中,常见的导致文件包含的函数如下
php:include(),include_once(),require(),require_once(),fopen,readfile()
JSP/Servlet:ava.io.file(),java.io.filereader(),…
ASP:include file,include virtual
本地文件包含
include(),include_once(),require(),require_once(),fopen,readfile()
当使用者4个函数包含一个新文件时,该文件将作为php代码执行,php内核并不在意该被包含的文件是什么类型

保存为include.php
在同一个目录下创建test.txt内容为

访问测试 //http://127.0.0.1/test/include.php?c=test.txt //访问连接,将123.txt 传送给c并赋给test变量
文件包含漏洞利用的条件

  1. include()等函数通过动态变量的方式引入需要包含的文件
  2. 用户能控制该动态变量
    远程文件包含
    如果php的配置选项allow_url_include为on,则include/require函数是可以加载远程文件的,这种漏洞被称为远程文件包含漏洞(RFI)
    代码:

保存为include.php
http://127.0.0.1/test/include.php?c=http://mysql.sql.com/123.txt
本地文件包含漏洞利用技巧
1.包含用户上传的文件
2.包含data://或php://input等伪协议
3.包含Session文件
4.包含日志文件,比如Web Server的access log
包含日志(常用)
1.通过构造语句让服务器报错并将一句话随报错信息写入日志
2.找到日志文件
3.用菜刀连接
4.拿下网站

命令注入漏洞
Command Injection,即命令注入攻击,是指由于web应用程序对用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至web应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等.命令注入攻击最初被称为Shell命令注入攻击,是由挪威一名程序员在1997年意外发现的,他通过构造命令字符串的方式从一个网站删除网页,就像从硬盘中删除一个文件一样简单

php命令执行函数
在php中您可以使用下列5个函数来执行外部的应用程序或函数
1.system:执行一个外部的应用程序并显示输出的结果
2.exec:执行一个外部的应用程序
3.passthru:执行一个UNIX系统命令并显示原始的输出
4.shell_exec:执行shell命令并返回输出的结果的字符串
5.""运算符:与shell_exec函数的功能相同

你可能感兴趣的:(cracer培训教程第一期 文件上传漏洞与命令注入漏洞)