博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
审计 6 SSRF和任意文件读取
阅读量:5105 次
发布时间:2019-06-13

本文共 1275 字,大约阅读时间需要 4 分钟。

1 

在第5行发现    读取的文件后,将文件进行了输出。  所以猜测此处可能存在SSRF 和  任意文件读取

搜索关键变量$_SESSION['avatar']  发现在登陆 和修改密码 读取了改变量,而上传的地方可以修改该变量 。

因为所有的$_SESSION['avatar']变量在发送数据包时都是加密的所以不能直接修改$_SESSION['avatar']导致任意文件读取,所以采用上传时修改其路径。来改$_SESSION['avatar']

1 
';22 echo '返回';23 }24 }else{25 echo '只能上傳 jpg png gif!
';26 echo '返回';27 }28 }29 else {30 not_find($_SERVER['PHP_SELF']);31 }32 ?>

在第13行发现   $query = "UPDATE users SET user_avatar = '$avatar' WHERE user_id = '{$_SESSION['user_id']}'"; 他直接把上传的路径$avatar直接取出来,更新了数据库

而UPDATE有个特殊的属性在set设置多个相同的键时,只取最后一个键的值。  因此可以导致可以构造$_SESSION['avatar']  

payload:

$avatar=  ' , user_avatar = '读取的文件路径' WHERE user_id = 'zzz'  首先用单引号把$avatar去闭合,然后用逗号接下一个构造的变量 user_avatar = '读取的文件路径' ,但是出现了一个问题  user_id不是知道   但是可以取构造   user_name='注册的用户'

然后发现  if(is_pic($_FILES['upfile']['name']))  对文件后缀进行了验证

最终payload:   $avatar=  ' , user_avatar = '读取的文件路径' WHERE  user_name='注册的用户' #.jpg

 然后用户登录 上传抓包,把抓到的

  上传文件修改文件名的包

   去取变量$avatar

   将取到的$avatar读出来

修改文件名 filename

发现数据库得到是 ../upload/..........._config.php   是因为取 单引号时对单引号和 / 进行了转义导致单引号没闭合

重新编码成16进制 绕过单引号和/

 

成功构造。

 然后先重放登录页面获取去取变量$avatar

然后在   将取到的$avatar读出来

如图所示攻击成功,本地文件任意读取。

 接下来测试SSRF

因为没有内网环境,所以测试百度  将http://www.baidu.com 

发现成功将百度页面读取,也就是可以读取内网信息。所以存在SSRF

转载于:https://www.cnblogs.com/pojun/p/7354916.html

你可能感兴趣的文章
解决CListCtrl闪烁及水平滚动条不能跟踪拖动的问题
查看>>
Thinkphp中使用display()方法显示视图模板,使用show()方法是显示文本内容
查看>>
搭建-以外网访问本地主机
查看>>
本地存储(cookie&sessionStorage&localStorage)
查看>>
JavaScript escape encodeURI encodeURIComponent() 函数
查看>>
UtraEdit 支持Lua高亮
查看>>
Javascript语法基础
查看>>
Microsoft Visual C++ 6.0快捷键(绝对值得掌握)
查看>>
操作系统 第1次作业
查看>>
使用VS2015(c#)进行单元测试,显示测试结果与查看代码覆盖率
查看>>
windows编程经典书籍
查看>>
转:VC调用vbscript.dll使用其正则表达式库
查看>>
Friends and Subsequences
查看>>
使用JQuery操作DOM
查看>>
jQuery系列之目录汇总
查看>>
Delphi多媒体设计之TMediaPlayer组件(六)
查看>>
使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容)
查看>>
ipcloud上传裁切图片,保存为base64再压缩传给后台
查看>>
HTTP幂等性概念和应用
查看>>
[SDOI2016 Round1] 数字配对
查看>>