身世酒杯中,万事皆空。

0x01 Intro

第一次接触js的逆向是从17年的hctf中,之后,也时常会遇到过需要解开Webpack/混淆js的情景。近几日遇到了一个批量刷票的需求,目标是投票网http://wenjuan.com/

目标

  1. 逆向投票网的防刷票机制,实现自动化投票。
  2. 总结鄙人常用的chrome debug操作,望能提供有需求逆向js同学帮助。

结构

本文结构从实例开始,当中穿插Chrome Debug逆向使用操作、分析、脚本编写等,最后进行总结。

0x02 从需求开始

目标:https://www.wenjuan.in/s/6N3iy2u

HTTP分析

走了一遍流程,发现是可以重复投票的,只要你点击在此参与即可,抓了一下数据包,发现流程如下:

Read More

距离上次一次blog更新时隔将近两年了。20年为了毕业,搞了半年的nlp的实践(知识图谱-KnowledgeGraphInference)。下半年刚开始打工,这将近一年的时间里做了很多关于业务工作,但无法公开分享,主要是职场新人,这里面水太深,把握不住(其实是懒)。现在重新回归,继续更新我的blog。

目标

解答日常在代码审计中常见模糊点。

已有基础

  1. 简单了解golang语法,0 golang编写基础
  2. 能够熟练复制别人的代码并跑过编译
  3. 熟练掌握面向对象编程
  4. 大概知道go的struct是个啥。通过下面这篇文章。

《Go Struct超详细讲解》
https://juejin.cn/post/6844903814168838151

了解了以下几个点:

struct 定义如下

1
2
3
4
5
6
7
8
9
type Member struct {
key1 int
key2, key3 string
}

var (
m1 = Member{id:1}
)
var m1 Member
  1. 结构体也可以不包含任何字段,称为空结构体,struct{}表示一个空的结构体,注意,直接定义一个空的结构体并没有意义,但在并发编程中,channel之间的通讯,可以使用一个struct{}作为信号量。
Read More

该文实际发于06/06/2021,之前未完全公开具体细节。

不讲武德

11月9日晚上,有个朋友问我,马老师发生什么事了,给我发了来几张截图。我一看,噢,原来是前几天,saltstack公布了安全更新,一个CVE-2020-16846,一个CVE-2020-25592,这两个一起用能未授权RCE。。

Abstract

在对CVE-2020-17490和CVE-2020-16846进行分析后,发现CVE-2020-17490的补丁存在未修补完全的情况,导致wheel_async仍然存在未授权访问,可以调用wheel模块中的方法,基于此对SaltStack的wheel模块中的方法进行分析,最终发现加载配置模块存在模板注入,可以实现远程代码执行。

不再赘述,CVE-2020-17490、CVE-2020-16846,分析文章在这里

Background

SaltStack是VMware子公司,其产品用于运维管理,能够支持数万台服务器,主要功能是配置文件管理和远程执行命令,十分易用且强大,在github有11.4k star,阿里云的Nacos与之类似,不过Nacos管理的是微服务。

SaltStack只用python开发,采用C/S架构,其中Server被称为Master,Client被称为Minion,即一个Master能够向多个Minion下发配置文件,远程执行命令。SlatStack是系统总称,主要有salt、salt-master、salt-minion、salt-api等程序组成,其中salt-master和salt-minion的功能为从指定路径读取配置文件并启动。salt-master监听4505和4506端口,分别用于发布消息和接受监控数据。

salt程序可以调用大量函数,并可以指定minion或指定一组minion作为目标。salt-api可以使用cherrypy或tornado来对外提供REST接口,默认使用cherrypy。

Read More

写在之前

本文为鄙人的毕业论文,之前对机器学习这玩意儿毫无了解,迫于毕业压力跟一帮毫无经验的硬件同学研究了好几个月的NLP。最后算是跑通了整个链路,但是效果可以说是差强人意,完全无法用的一个模型。鄙人典型的蛮干党,什么数学原理都不懂,搞了一些论文读了一读,上手就干他妈的,最后发现完全玩不转,但最后还是沉淀下来一些经验,我当时做这块发现实践资料非常少,故发出,给水毕业论文的学生一些参考。

本项目为笔者毕业设计,于2019年12月了解到该项目,在此前对机器学习无任何了解。在大学期间(2016-2019)一直学习安全相关知识,主攻WEB安全,目前研究方向为云原生安全。故对WEB前端、后台、数据库有一定的知识储备和了解,同时对于各种编程语言有一定的了解。本项目并非笔者一己之力,团队规模为7人,均为某邮2016级电子信息工程专业的学生。

PS: 黑色的地方不是没有图片,而是图片的背景是透明的,所以就黑了,建议点开观看。也可以在此处看最后交给学校的pdf版本。
https://whip1ash.cn/file/Design%20of%20Knowledge%20Graph%20and%20Knowledge%20Inference%20System%20Based%20on%20Neural%20Network.pdf

Introduction

Background

近年来,随着人工智能的迅速发展,支持人工智能的技术逐渐被更多人了解并研究,知识图谱就是其中很重要的一个技术。目前,知识图谱在很多日常生活的很多方面都已经得到了非常广泛的应用。比如语义化的搜索引擎(Google,Baidu等),移动助手(Mobile assistant)(Siri,Cortana等),以及一些智能问答机器人(intelligent chatbots)。

知识图谱相关的支持技术在很早就已经开始得以发展,比如语义网、逻辑描述和专家系统等,但知识图谱(Knowledge Graph)这个概念来源于Google在2012年发起的一个项目,在此提出”Knowledge Graph: things, not strings”,但Google官方并没有给出知识图谱的定义,同时也没有一个得到广泛认可的知识图谱的定义。所以,在2018年,基于图1的架构提出了对于知识图谱的定义。

未命名文件 -2-

A knowledge graph acquires and integrates information into an ontology and applies a reasoner to derive new knowledge.

Read More

Abstract

Nginx配置不当,导致换行符(“\n”)能够使FastCGI的PATH_INFO参数为空,PHP-FPM未考虑PATH_INFO为空情况,导致下溢(underflow),使其能够覆盖PHP全局变量,从而导致RCE。

目前Exp只影响PHP7全版本,根据洞主说法,也能够在PHP 5.6能够导致Crash。

本文粗略结构如下:

  1. 漏洞复现
  2. Exp分析
  3. 漏洞分析

Reproduction

Env

Ubuntu 18.04
PHP 7.2.19
Nginx 1.14.0

Exp地址: https://github.com/neex/phuip-fpizdam
Clone下来后go build .

Nginx Config

Read More

0x01 Abstract

本文简单描写了tctf的web第二题”Wallbreaker Easy”的解题方法,以此题为出发点,探索一些通过Imagick来bypass disable_functions的方法。通过自动化测试来寻找启动子进程的后缀名处理和API函数,从而寻找可以劫持的程序(通过LD_PRELOAD)和发现可能会存在命令注入的函数(在启动的新进程中执行命令)。

此思路并非原创,只是在前人的基础上提出一点自己的思考和实现。

环境: Ubuntu 18.04 + PHP 7.2.15 + Imagick 3.4.3RC2

通过sudo apt install php php-fpm php-imagick安装。

0x02 TCTF 2019 Wallbreaker Easy WP

题目描述如图,并且提示ubuntu 18.04/sudo apt install php php-fpm php-imagick
-w630

主要使用了一个老手法的新利用,这位大佬找到一个扩展修饰符,可以在main函数前执行,这样就省去了使用LD_PRELOAD需要寻找可用函数的问题。详情见此篇文章。
巧用LD_PRELOAD突破disable_functions

如果不了解LD_PRELOAD。见此篇文章。
利用环境变量LD_PRELOAD来绕过php disable_function执行系统命令 – YiYang

既然前提有了,只需要找到可以利用函数就可以了。大佬通过查找ImageMagic的文档发现,在处理ilbm的文件的时候会启动ilbmtoppm程序,而这个程序是ubuntu 18.04自带的。

Read More

原文在这里。其实这篇Paper很值得研究,并能够应用在日常的漏洞挖掘中。本文不是直译过来的,原文党请移步原版。翻译此文只是为了加深的理解,我的英语也很一般,尽量讲得让大家都看懂吧。能力一般,水平有限,多多谅解,有问题希望大家与我多交流,共同探讨。Orz

Abstract

HTTP请求通常被认为是相互独立的实体。在这篇文章中,我将探讨一些被遗忘的技术。通过这种技术,远程未授权的攻击者能够打破HTTP请求的独立性,并拼接攻击者的请求到其他请求中。我在数个军方和商业的Web基础设施上找到了这个问题,并将我的exp拼接到正常的用户请求中,因此我在赏金项目中获得了7万刀的奖励。

通过案例,我将为你展示如何精巧地篡改受害者的请求,使这些请求被送到一个恶意的域中,使其得到有害的响应,并获得回显(lure credentials into your open arms)。我同样将证明使用后端重组请求的方式,将会使得前端(请求)[注:这里的前后端是指服务器在数据流中不同的位置]的信任被利用,这会导致能够使用最大权限来调用内部API,污染Web缓存,使PayPal的登录页面不再安全。

HTTP Request Smuggling最早的记录是在2005年,由Watchfire提出。但由于其难以利用,所以它多年来一直被忽略,但是近年来Web设备受这个漏洞影响的概率在增加。我将帮助您解决这个遗留问题,包括新的攻击形式和利用向量,通过定制的开源工具和一种可靠的黑盒测试的新方法,同时将收到影响的风险降到最低。

Core concepts

自动HTTP/1.1开始,通过单个TCP或者SSL/TLS套接字来发送多个HTTP请求就被广泛的支持。这个协议非常的简单,HTTP请求被简单的拼接在一起,然后服务器通过解析HTTP头部来分别同一个套接字中的不同的HTTP请求。它经常和HTTP管道(HTTP pipelining)搞混,HTTP管道是一种不常见的子类型,不在本文的探讨范围之内。

仅仅针对这项功能而言,这是无害的。而然,现代的网站由一系列的系统组成,全通过HTTP通信。这种多层架构导致不同用户的HTTP请求通过同一个TCP/TLS链接来传输。

这就意味着后端在处理请求时,需要和前端识别的请求结束的位置一样,这是至关重要的。换种说法,攻击者可能发送一个边界模糊的消息,它将会在后端被分割成两个不同的HTTP请求。

Read More

Intro

转载自编程随想Blog,本文的原文地址在这里。过滤了一些敏感的内容,尽量不破坏原文完整性。

正文

引子

  本月初,人民币对美元的汇率【破7】。很多读者在博客评论区问及此事,俺正好借此机会写一篇相关的扫盲教程。
  由于这个话题有点大,俺计划用两篇博文写完,除了今天这篇,再找时间另写一篇谈“国际金融”相关的话题。

本文的【目标读者】

  如果你自认为对“宏观经济学”(尤其是其中的“货币经济学”)已经有足够的认识,那么,本文你就不用看了(以免浪费时间)。

  如果你对这个领域还不熟悉,并且希望能对该领域有更【系统性】的了解,俺建议你直接去看《货币金融学》这本书。这是非常经典的教材,被欧美很多高校采用,其作者是“弗雷德里克·米什金”,俺的网盘有电子版。本文聊的内容,此书中基本都有;而且书中的内容肯定比这篇博文更加详细、更加全面。
  (注:本文后续章节凡是提到《货币金融学》,都是指此书的中译本第9版)

  综上所述,本文的【目标读者】是 —— 既对该领域不太懂,同时又不愿意花时间看书的那些人。
  另外,考虑到目标读者多半是该领域的外行,本文中的很多术语都标注了【维基百科链接】,便于你作进一步的阅读。

“货币经济学”是啥?

Read More

0x01 Abstract

比较详细的Drupal启动以及HTTP处理、路由分发分析。避免调漏洞的时候一脸懵逼。
纸上得来终觉浅,绝知此事要躬行。

0x02 Background

环境准备

源码从这里下载
PHP版本是7.1.2

背景知识

Drupal是建立在Symfony框架之上的,详细结构在这里。Drupal的路由系统是建立在Symfony内核之上的,下图是路由和控制器的简单示意图:

还有一个详细的请求处理和渲染的流程图,图片太大,不挂了,大图在这里

0x03 一切还从index.php开始

打开index.php,只有简洁的几行代码,一行一行看。
-w752

Read More

Abstract

此文较为详细的动态调试并分析了Thinkphp5.1的路由分发以及执行调度流程,通俗点说就是Thinkphp5.1是如何处理请求的。漏洞分析部分网上资料较多,故较为简略。网上Thinkphp5.1的源码分析较少且不完整,希望能给研究框架/漏洞的朋友提供一点小小的帮助。

Thinkphp5.1 启动流程浅析

Thinkphp5.1对底层架构做了进一步的改进,减少依赖,主要就是新增了容器(Container)、门面(Facade)、中间件(Middleware)三大块功能。

容器(Container)的功能,一句话概括就是管理对象实例,缓存已创建的实例。中间件(Middleware)如同字面意思一样,就是中间件。门面(Facade)的功能暂时不关注。

Thinkphp5.1对比Thinkphp5.0,个人感觉比较明显的差别有两点,一是使用Container来进行实例管理,调用都是动态的,非常灵活。二是在Think\App中取消了exec()方法,在Middleware中进行相关的逻辑。 这里分析的版本是Thinkphp 5.1.10,最新版本是5.1.35,基本架构一样,有一些细节大同小异。

建议阅读这篇文章 thinkphp5.1新特性 作为基础知识。

Dynamic Debugging

Container调用过程

public/index.php
-w561
5.0.x包含start.php然后静态调用App::run()方法,这里动态调用App::run方法。

Read More
⬆︎TOP