【常见漏洞概述】目录遍历、敏感信息泄露、URL重定向、XXE、PHP反序列化(三)
发布于 2021-05-12 23:57 ,所属分类:区块连和PHP开发学习资料
目录遍历漏洞概述
当用户在前端发起文件值(比如文件名称)的请求时,后台接收后再执行其对应文件。该过程若后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过“../”等手段让后台打开或者执行一些其他的文件。从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞。
注:如果你通过不带参数的url(比如:http://xxxx/doc)列出了doc文件夹里面所有的文件,被归为敏感信息泄露漏洞,而不是目录遍历漏洞。
敏感信息泄露概述
由于开发人员疏忽或者不当的设计,导致敏感信息被前端用户轻易访问到。比如:
---通过访问url下的目录,可以直接列出目录下的文件列表;
---输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息;
---前端的源码(html,css,js)内包含了敏感信息,比如后台登录地址、内网接口信息、甚至账号密码等;
PHP反序列化
php中serialize(),unserialize()函数。
序列化serialize()
序列化就是把一个对象变成可传输的字符串,比如:
class S{
public $test="pikachu";
}
$s=new S(); //创建一个对象
serialize($s); //把这个对象进行序列化
序列化后得到的结果是这个样子的:O:1:"S":1:{s:4:"test";s:7:"pikachu";}
O:代表object
1:代表对象名字长度为一个字符
S:对象的名称
1:代表对象里面有一个变量
s:数据类型
4:变量名称的长度
test:变量名称
s:数据类型
7:变量值的长度
pikachu:变量值
反序列化unserialize()
就是把被序列化的字符串还原为对象,然后在代码中继续使用。
$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
echo$u->test;//得到的结果为pikachu
若反序列化的内容是用户可控的,且后台不正当的使用了PHP中的魔法函数,就会导致安全问题。
常见的魔法函数:
__construct()当一个对象创建时被调用
__destruct()当一个对象销毁时被调用
__toString()当一个对象被当作一个字符串使用
__sleep()在对象在被序列化之前运行
__wakeup将在序列化之后立即被调用
漏洞举例:
class S{
var $test = "pikachu";
function __destruct(){
echo $this->test;
}
}
$s = $_GET['test'];
@$unser=unserialize($a);
payload:O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
URL重定向
不安全的url跳转
不安全的url跳转问题可能发生在执行了url地址跳转的地方。
若后端采用了前端传进来的(用户传参,或者预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生"跳错对象"的问题。
url跳转比较直接的危害是:
-->钓鱼,既攻击者使用漏洞方的域名做掩盖,而最终跳转的却是钓鱼网站
xml外部实体注入漏洞(XXE)概述
概括一下就是"攻击者通过向服务器注入指定的xml实体内容,服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。
摘自:pikachu
相关资源