• Stars
    star
    117
  • Rank 300,006 (Top 6 %)
  • Language
    Python
  • Created about 8 years ago
  • Updated about 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

browser_vuln_check ,利用已知的浏览器漏洞PoC 来快速检测Webview 和浏览器环境是否存在安全漏洞,只需要访问run.html 即可获取所有扫描结果,适用场景包含:APP 发布之前的内部安全测试,第三方Webview 漏洞检测等(browser_vuln_check framework using some known browser vulnerabilities PoC to quick automate aduit WebView or Browser security ,apply to application security before issue and detecting third-part WebView security)..

browser_vuln_check

browser_vuln_check 利用已知的浏览器漏洞PoC 来快速检测Webview 和浏览器是否存在安全漏洞,帮助产品上线之前检测公开的CVE 漏洞,减少外报漏洞漏水报告


怎么使用

如果你的电脑上没有安装tornado 库,第一步先安装目录/depandent_python_lib 下的setuptools-28.6.0 ,然后再安装tornado-master


检测原理

browser_vuln_check 分两种类型的漏洞检测:崩溃和非崩溃型PoC 漏洞检测

常见的非崩溃型漏洞检测包含:UXSS ,XSS 过滤器绕过,CSP 绕过,信息泄漏,其他小Bug 等检测,检测原理是通过run.html 接收<iframe> 内嵌的PoC 页面返回的信息来判断WebView 是否存在漏洞
Example:

<body>
    <div id="output_state_window"></div>
    <iframe src="bad_kernel.html" style="visibility:hidden;"></iframe>
    <iframe src="oob.html" style="visibility:hidden;"></iframe>
    <iframe src="reflected_xss.html" style="visibility:hidden;"></iframe>
    <iframe src="access_port.html" style="visibility:hidden;"></iframe>
    <iframe src="uxss/exploit.html" style="visibility:hidden;"></iframe>
</body>

通过<iframe> 给PoC 页面构造新的浏览器执行环境,使得PoC 页面内执行的检测漏洞代码互不影响,PoC 页面分为两部分:post_resultcheck_vuln
Example:

function post_result(check_state) {  //  当前PoC 页面往上提交(run.html )检测结果
    var parentwin = window.parent;
    parentwin.postMessage(check_state,"*");
}

function check_vuln() {  //  开始检测漏洞
    var kMessages;
    Object.prototype.__defineGetter__("observe_accept_invalid",function(){
        log("called");
        kMessages=this});
    try{Object.observe({},function(){},1)}catch(e){}
    delete Object.prototype["observe_accept_invalid"];

    if (undefined!=kMessages)
        return true;
    return false;
}
post_result('({vuln_name:"bad_kernel",check_state:'+check_vuln()+'})');  //  向run.html 返回执行结果,包含漏洞名称和漏洞检测结果

在QQ 浏览器9.4.2 上的执行结果(repoter_receiver.py 提供了一种从WebView 扫描漏洞的结果返回到漏洞扫描器的方式,在APP 安全扫描器里只需要把run.html 导入到WebView 然后再到本地启动端口获取执行结果即可):

run_state

崩溃型PoC 采用Pydbg 调试进程,把url 传递给浏览器访问崩溃PoC ,直到浏览器崩溃时定位到崩溃点并获取上下文信息,由于现在浏览器大部分采用多进程运行,于是调试器并不方便针对浏览器的子进程来调试,所以在当前版本的browser_vuln_check 会把每一个会崩溃的PoC URL 作为参数来启动浏览器,然后等待执行结果,关闭浏览器,再执行下一个PoC

WARNING! browser_vuln_check 对于以大写字母POC 或者CVE 开头的文件,server.py 会认为这是一个有效的PoC 文件,作为<iframe> 添加到run.htmlcrash_poc_valid_logic.py 中..


PoC 构造

关于PoC 的构造在uncrash_poc/_poc_temple.html 下有PoC 的模板代码,_poc_temple.html 分为两部分:

    VULN_NAME='poc_temple';     //  PoC CVE ID or Name 
    VULN_VERSION=[];            //  PoC effect version 
                                //  -> VULN_VERSION=None is unknow version ,
                                //     VULN_VERSION=[]   is all version
                                //     VULN_VERSION=['Chrome 50.0','Chrome 51.0.2344.1','QQ Browser 9316','Wechat 6.3.0-Wechar 6.3.12']  version detail

第一部分标记当前的PoC 的名字,版本.在进行漏洞扫描的时候,目的程序的版本对于漏洞分析和检测来说尤其重要,所以这个PoC 代码会影响到哪些版本我们也需要注意,这些信息最后能够帮助我们输出更加有说服力的检测报告

    function post_result(check_state) {
        var parentwin = window.parent;
        var post_result_json={};
        post_result_json.vuln_name=VULN_NAME;
        post_result_json.vuln_version=VULN_VERSION;
        post_result_json.vuln_valid_state=check_state;
        
        parentwin.postMessage(post_result_json,'*');
    }
    
    
    function check_vuln() {
        /////
        post_result(true);
    }
    
    check_vuln();

第二部分为PoC 的主要代码,post_result() 函数提供一个方便的接口,当我们在check_vuln() 中验证PoC 之后,下一步就应该把扫描的结果上报到run.html ,在这里你可以直接通过post_result(true) 或者post_result(false) 返回扫描结果,精简PoC 代码

Example (CVE-2016-1677):

VULN_NAME='CVE-2016-1677';                      //  CVE-ID
VULN_VERSION=['Chrome 50-51','Wechat 6.3'];

function post_result(check_state) {
    var parentwin = window.parent;
    var post_result_json={};
    post_result_json.vuln_name=VULN_NAME;
    post_result_json.vuln_version=VULN_VERSION;
    post_result_json.vuln_valid_state=check_state;

    parentwin.postMessage(post_result_json,'*');
}
    

function check_vuln() {
    var num = new Number(10);
    Array.prototype.__defineGetter__(0,function(){
        return num;
    })
    Array.prototype.__defineSetter__(0,function(value){
    })
    
    var str=decodeURI("%E7%9A%84");
    
    if (str.charCodeAt(0).toString(16)!='7684')  //  valid PoC
        post_result(true);                       //  Get it ..
    else
        post_result(false);
}
    
check_vuln();                                    //  Ready to valid PoC ..

这里需要注意一点,PoC 模板代码也分为两部分:常用PoCUXSS ,对于UXSS ,在调试的过程中发现并不是100% 可以准确验证这一类型的漏洞,后来发现通过新建TAB 标签可以提升UXSS 类漏洞的检测成功率,对于UXSS 这类漏洞,PoC 的检测机制如下:

run_state

首先,run.html 中包含的PoC <iframe> 是一个中转页面,然后通过这个中转页面新建一个TAB 标签,TAB 标签里面是我们的UXSS PoC 代码,实例如下(CVE-2016-1697 ):

window.onmessage=function(message) {
    if ('boolean'==typeof message.data) {
        check_is_valid_state=message.data;

        post_result(check_is_valid_state);
        new_tab.close();
    }
}

var new_tab=window.open('uncrash_poc?poc_name=_CVE-2016-1697.html');

在新标签里,浏览器总算提供了一个相对跟干净的环境给UXSS PoC 来执行验证,所以在新标签窗口中验证完成结果之后,把验证结果postMessage 到<iframe> 窗口,最后<iframe> 再往上传递到run.html

More Repositories

1

Source-and-Fuzzing

一些阅读源码和Fuzzing 的经验,涵盖黑盒与白盒测试..
C++
970
star
2

Machine-Learning-Note

机器学习笔记
Python
426
star
3

Fuzzing-ImageMagick

OpenSource My ImageMagick Fuzzer ..
Mask
295
star
4

PHP-WebShell-Bypass-WAF

分享PHP WebShell 绕过WAF 的一些经验 Share some experience about PHP WebShell bypass WAF and Anti-AV
PHP
282
star
5

network_backdoor_scanner

This is a backdoor about discover network device ,and it can hidden reverse connecting the hacker's server with encrypt commuication 后渗透后门程序,适合在已经攻陷的内网中做下一步的网络信息扫描..
C++
182
star
6

vuln_javascript

模拟一个存在漏洞的JavaScript 运行环境,用来学习浏览器漏洞原理和练习如何编写Shellcode (a JavaScript Execute Envirment which study browser vuln and how to write Shellcode ) ..
C++
180
star
7

PHP_Source_Audit_Tools

PHP 白盒分析工具,结合AST 和数据流跟踪分析代码,达到自动化白盒审计功能
Python
146
star
8

Hacker_Document

收集一些以前看过对于入门和进阶很有用的攻击原理文档..
142
star
9

WebShell-Detect-By-Machine-Learning

使用机器学习识别WebShell
Python
127
star
10

SISE_Traning_CTF_RE

SNST Traning RE Project .华软网络安全小组逆向工程训练营,尝试以CTF 的形式来使大家可以动手训练快速提升自己的逆向工程水平.CTF 的训练程序又浅到深,没有使用太复杂的算法,在逆向的过程中遇到的难关都是在分析病毒和破解中遇到的实际情况,注重于实用.训练营还包含有源代码文件,训练程序和思路.希望可以帮助小伙伴们入门逆向工程这个神奇的世界..
C++
110
star
11

CVE-2017-7269-Echo-PoC

CVE-2017-7269 回显PoC ,用于远程漏洞检测..
Python
88
star
12

Think-in-Security

从二进制到WEB ,分享我在安全路上的思考与点滴,后面会不断地更新..
76
star
13

Angr-CTF-Learn-Note

The learn note of Angr-CTF ..
49
star
14

qemu-fuzzer

Qemu Fuzzer.针对Qemu模拟设备的模糊测试工具,主要思路是Host生成种子Data,然后传递给Guest中转程序,由中转程序访问MMIO,以达到和模拟设备的交互,不同于qtest自带的fuzzer.
C
43
star
15

XSS-hunter

XSS hunter 收集Webview 页面上存在的反射,储存型XSS ,方便应急APP 和前端页面在发布时遇到XSS 安全问题..
PHP
42
star
16

etherum_rpc_steal

The Etherum RPC Steal Toolset and honeypot .以太坊"偷渡"漏洞利用和蜜罐工具集.
Python
40
star
17

Kite

Browser Fuzzing Framework ,浏览器Fuzzing 框架..
HTML
31
star
18

klee-fl

KLEE-fl : Compile Project to Bitcode and Try Fuzzing with KLEE .
C++
27
star
19

my-blog

我的技术博客,记录成长
C++
26
star
20

Aurora_CAPTCHA

极光验证码,为反爬虫而生
Python
25
star
21

My_PoC

Collect some PoC that I writted .记录自己写过的PoC ..
Python
23
star
22

KiMi-VulnBot_Framework

KiMi 漏洞感知机器人扫描框架 @KiMi-VulnBot @KiMiThreatPerception
Python
22
star
23

cve_diff_checker

快速对自己项目中引入的第三方开源库进行1day patch检索,patch数据每天晚上11点更新
Roff
20
star
24

FreeWebpilotInChatGPT35

非付费的chatgpt3.5 用户也可以使用付费的chatgpt4 Webpilot 插件. Free ChatGPT 3.5 users can also use the paid ChatGPT 4 Webpilot plugin.
JavaScript
19
star
25

dns_hijack_server

A dns server that use to hijack other dns request in a wifi network for redirect to your custem http server ..
C++
16
star
26

browser_xss_auditor_fuzzing

浏览器XSS 过滤器Fuzzing 框架 (browser xss aduit fuzzing framework )..
HTML
15
star
27

blue_fariy

github 项目代码加密,在不创建github 私有项目的前提下使用github 更新代码又不希望自己的核心代码公开,bule_fariy.py 可以在git push 之前自动加密所有代码(Encrypt your Github repository code before git push )
Python
15
star
28

Python_CookieLib_0day

Using This 0-day to Anti-Python-Spider ..
PHP
14
star
29

Supplicant_Exploit_Kit

Sise supplicant exploit kit -- 华软蝴蝶漏洞利用工具包..
C++
13
star
30

Ethereum_Similar_Contract_Classify

Python
12
star
31

blockchain_story

酒剑论江湖,区块有故事..
12
star
32

BitLeague

聚合交易平台BitLeague
Python
11
star
33

pseudo-protocals-digger

system pseudo protocals digger for windows -- Windows 系统下的伪协议查看工具
Python
11
star
34

cross_domain_postmessage_vuln_dig

WEB 跨域postMessage() 漏洞挖掘工具,基本原理:使用AJAX 获取页面代码,结合iframe 和data 协议构造测试环境,然后在iframe 下的window.onmessage 中插入hook 监控onmessage 的参数,最后通过能否被原来的onmessage 逻辑引用参数中的data 属性来判断是否可以跨域传递数据..
HTML
11
star
35

Big_Project

我就笑笑不说话,哈哈哈哈..
7
star
36

Distributed-Task-Queue

Dynamic Expand Distributed Task Queue (分布式任务队列框架)
Python
7
star
37

ethereum_solidity_symbol_execute

Ethereum Solidity Symblo Execute Demo -- Check Vuln and Auto Build Payload ..
Python
6
star
38

supplicant_getadaptersinfo_dll

Bypass for supplicant server NAT validate .蝴蝶NAT 认证绕过DLL ..
C++
5
star
39

DCpp_Exploit_Kit

Sise DC++ exploit kit -- 华软DC++ 漏洞利用工具包..
C++
5
star
40

file_crypter

A Simple Malware Example About File Crypter Like CTB-locker ;文件劫持病毒实例代码,就像CTB-Locker 一样加劫持用户交钱恢复被加密的文件..
C
4
star
41

Vending_Machine

2012 的开发代表作品,自动售货机,那年开始从底层出发到硬件设计,这些都是乐趣所在,做一些很酷的东西一直都是追求的目标,从自动售货机的开发过程中开始逐渐萌生出Small System 的雏形,但是由于很多种原因没有办法继续开发下去,最后完成自动售货机是在2013 年的冬天也就是高三,那四天的日子也是我在科技协会一直记住的美好时光,感谢你们的支持,虽然你们可能看不到我在这里所写的东西,如果没有你们设计箱子做电路也就没有后面的故事,谢谢你们..
C
4
star
42

PyDbg_Document

This document is collect interface's using in PyDbg.py and conver to markdown for anybody convenient reading ..
Python
3
star
43

quick_scan_virus

a security tool for quick scan some virus and APT
Python
3
star
44

JPEG-Locker

2013 的开发代表作品,JPEG 保护者.Protect your JPEG picture and more important information .WARNING ! If you want to use my code ,please update the module - PictureLock.bas .I tested patch a key jmp and bypass the valid program could using arbitrarily string to decrypt protecting file .So I hope you can rewrite this module and all encrypt input file with password and XOR .
Visual Basic
2
star
45

USB-firewall

2011 的开发代表作品,2010 年吃了很多苦头才有点入门Windows 系统编程,U 盘防火墙是看了很多VB VC 病毒编写的代码和原理才写的,毕竟10 年一半的时间在学习编程一半时间在学习黑客技术,虽然一次都没有黑成功,但是积累了很多在以后都挺实用的理论.U 盘防火墙可以在一定程度上防止U 盘上的病毒入侵到主机..
Visual Basic
2
star
46

Lap-Game

2010 的开发代表作品,这是刚开始学写程序的第一年,是一个拥有智能AI 的圈叉游戏,AI 不仅可以防守,而且还可以进攻,当年写这段代码还没放到电脑上运行的时候是写在笔记本上面一步步在脑里面运行的,曾经现场运行这段代码来和真人对抗,诚然,现在早已忘记开发的乐趣,那个夕阳西下的时候,我曾经对未来拥有多大的憧憬,但是最后得到了经验,得到了技术,却早已失去掉曾经的乐趣,我想,最悲哀的故事也莫过于此吧,这就是在大学为什么不打算走开发而是做逆向工程的原因,人,最痛苦的事情就是挑起他最不愿意的担子去做他最喜爱的事情..
Visual Basic
2
star
47

python_compiler

Python 指令编译工具(Python Instruction Compiler )..
Python
1
star