一、概述
1、目录遍历
在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。
当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件。 在这个过程中,如果后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过“../”这样的手段让后台打开或者执行一些其他的文件。 从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞。
2、敏感信息泄露
由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。 比如:
---通过访问url下的目录,可以直接列出目录下的文件列表;
---输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息;
---前端的源码(html,css,js)里面包含了敏感信息,比如后台登录地址、内网接口信息、甚至账号密码等;
3、php反序列化
序列化把一个对象变成可以传输的字符串,序列化的目的是方便数据的传输和存储。在PHP应用中,序列化和反序列化一般用做缓存,比如session缓存,cookie等。
反序列化把被序列化的字符串还原为对象
序列化的操作主要围绕以下两个函数:
serialize() //将一个对象转换成一个字符串
unserialize() //将字符串还原成一个对象
二、练习过程
1、目录遍历
在目录遍历上面分别点击,url中的title分别出现对应的php文件
在第一个页面中把title内容换成第二个页面的title内容
回车即可访问到对应页面
2、敏感信息泄露
直接查看源代码,发现有测试账户密码,并能用其登录成功
3、php反序列化
用菜鸟工具中的php工具把“<script>alert('xss')</script>”序列化
编译工具 | 菜鸟工具 /菜鸟工具地址
<?php
class S{
var $test = "<script>alert('xss')</script>";
}
$a = new S();
echo serialize($a);
?>
O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
把得到的序列化符号直接输入到输入框中,然后提交
即可弹出xss窗口
跟着大佬的教程,能完成php反序列化漏洞,但是如何断定它是存在php反序列化漏洞的,我没有弄明白,好像是通过查看源代码,发现源代码中存在unserialize() 函数,从而推测存在反序列化漏洞。