审计 6 SSRF和任意文件读取

1 <?php
2 error_reporting(0);
3 session_start();
4 header("Content-type:image/jpeg");
5 echo file_get_contents($_SESSION[‘avatar‘]);
6 ?> 

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

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

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

 1 <?php
 2 include_once(‘../sys/config.php‘);
 3 $uploaddir = ‘../uploads‘;
 4
 5 if (isset($_POST[‘submit‘]) && isset($_FILES[‘upfile‘])) {
 6
 7     if(is_pic($_FILES[‘upfile‘][‘name‘])){
 8
 9         $avatar = $uploaddir . ‘/u_‘. time(). ‘_‘ . $_FILES[‘upfile‘][‘name‘];
10
11         if (move_uploaded_file($_FILES[‘upfile‘][‘tmp_name‘], $avatar)) {
12             //更新用户信息
13             $query = "UPDATE users SET user_avatar = ‘$avatar‘ WHERE user_id = ‘{$_SESSION[‘user_id‘]}‘";
14             mysql_query($query, $conn) or die(‘update error!‘);
15             mysql_close($conn);
16             //刷新缓存
17             $_SESSION[‘avatar‘] = $avatar;
18             header(‘Location: edit.php‘);
19         }
20         else {
21             echo ‘upload error<br />‘;
22             echo ‘<a href="edit.php">返回</a>‘;
23         }
24     }else{
25         echo ‘只能上傳 jpg png gif!<br />‘;
26         echo ‘<a href="edit.php">返回</a>‘;
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

时间: 2024-11-24 06:03:16

审计 6 SSRF和任意文件读取的相关文章

feifeicms后台任意文件读取

前台大略看了下,本身内容比较简单,经过"洗礼"后以及没什么问题了,基本上输入都过滤了. 这次审计找到了一个后台的任意文件读取,可以读取数据库配置文件. 在DataAction.class.php文件中,获取了$_GET['id']并直接用于路径拼凑,最后到达readfile函数中,导致了任意文件读取漏洞. 访问localhost/feifeicms/index.php?s=Admin-Data-down&id=../../Conf/config.php 需要后台权限,有点鸡肋.

TEC-004-php文件下载任意文件读取漏洞修复

修改download?u参数值,将/public/files/14842030529.txt,替换为../../../../../../../../../../etc/passwd    function download() {        $u =$_GET['u'];        // 描述: 任意文件读取漏洞修复  date: 2017年4月28日 下午4:13:39  bylwy        $lenth=strrpos($u,'.');        $string = sub

PHPMailer命令执行及任意文件读取漏洞

今天在thinkphp官网闲逛,无意下载了一套eduaskcms,查看了一下libs目录中居然存在PHPMailer-5.2.13,想起了之前看到的PHPMailer的漏洞,可惜这套CMS只提供了一个邮箱接口,前台页面需要单独自己写,没办法用这套CMS进行复现,这边也顺便利用这个PHPMailer-5.2.13对CVE-2016-10033和CVE-2017-5223进行本地复现,记录一下. PHPMailer 命令执行漏洞(CVE-2016-10033) 漏洞编号:CVE-2016-10033

【代码审计】两个任意文件读取漏洞实例

0x00 前言 0x01 漏洞实例一 环境搭建: XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:https://pan.baidu.com/s/13q_ITM0pPTGlkaNv8uq2Iw 代码分析: 1.漏洞文件位置:/App/Manage/Controller/TempletsController.class.php 第59-83行: public function edit() { $ft

python从任意文件读取邮件地址输出的代码

如下的资料是关于python从任意文件读取邮件地址输出的代码. # This script takes whatever you throw at stdin and outputs email addresses.# eg. python email_extractor.py < PythonFAQ.html# This script can be used for whatever you want, EXCEPT SPAMMING !import sys,reprint 'n'.join(

任意文件读取与下载

0x00 背景介绍 一些网站的业务需要,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,就能够查看或下载任意的文件,可以是源文件,敏感文件等等 0x01 文件读取 文件读取在PHP这种可以有很多种方式实现,在web的默认情况下,$filename变量可能用户可控 <?php $filename = $_GET['f']; echo file_get_contents($filename); ?> #当变量 $filename 没有经过校验,或者校验不严格,用户可以控制这个变量

【CVE-2020-1938】Tomcat AJP 任意文件读取和包含漏洞分析记录

0x00 前言 2020年2月20日傍晚,在某群看到有群友问CNVD的tomcat文件包含漏洞有什么消息没 接着看到安恒信息应急响应中心公众号发了个漏洞公告 随后chy师傅也在群里发了个阿里云的公告链接 根据安恒和阿里云公告给出的信息我们知道是tomcat ajp服务出了问题,但具体是哪里出了问题却不知道.(这个时候我就在想阿里云是怎么知道ajp服务出了问题的呢? 以tomcat7为例给出的修复版本是100,遂去github看commit,看100版本release之前的commit记录. 0x

任意文件读取

转自http://blog.csdn.net/cd_xuyue/article/details/50560259 敏感字段 &RealPath= &FilePath= &filepath= &Path= &path= &inputFile= &url= &urls= &Lang= &dis= &data= &readfile= &filep= &src= &menu= META-INF

XXE任意文件读取(当xml解析内容有输出时)

利用XXE漏洞读取文件 参考:https://www.jianshu.com/p/4fc721398e97 首先找到登录源码如下: 由题目可以利用XXE漏洞读取文件 先登录用Burp Suite抓包: 然后构造XXE读取文件 语句如下: <?xml version = "1.0"?> <!DOCTYPE ANY [ <!ENTITY f SYSTEM "/flag"> ]> <user> <username>