突破封闭Web系统的技巧之正面冲锋

作者: LandGrey ●   创建时间: 2017年12月24日 17:45 ●   标签:   #渗透测试,   #思考,   #Web安全备忘录

首发于:信安之路公众号前言:在互联网安全服务公司乙方工作的人或者进行SRC众测等相关渗透测试时,经常碰到客户只给一个"xxx信息管理系统"、"xxx平台"之类的一个Web登录界面的系统的链接地址,其它全凭自己造化,去找漏洞吧!我将上面讲的"需要认证后才能进入系统进行操作,但是当前没有认证凭证"的web系统"统一称为"封闭的Web系统",本文认为阅读人员有一定的渗透测试经验,并将就如何突破封闭的Web系统,进行探讨。分享自己的思路与常用技巧,欢迎同道中人一起交流思路。 注:本文有一定的攻击性操作,仅为安全从业人员渗透测试思路交流,请在法律条规允许的范围内进行安全测试。一:文章脉络《突破封闭Web系统的技巧》由两篇文章组成。这是第一篇文章"正面冲锋"。下面是本文的脉络: 正面冲锋 0x00: 登录绕过 0x01: 密码猜解 0x02: 管理员猜解 0x03: 普通用户猜解 0x04: 突破加密传输的口令 0x05: 突破登录IP限制 0x06: 图形验证码绕过 0x07: 短信验证码绕过 0x08: 双因子验证绕过二:正面冲锋遇到需要登录才能进一步测试的系统,又没登录口令?没关系,我们有不少正面冲锋的小技巧,相信你看完一定有所收获。0x00:登录绕过如果能绕过系统认证,直接登录,那就万事大吉了!登录绕过的方法主要有:1. SQL注入万能登录密码 a' or '1'='1' -- 2. XSS获取到已登录系统的用户Cookie,替换后可进入系统 3. 通过列目录漏洞或目录文件扫描,发现存在未授权访问的管理页面,可以直接访问进行操作 4. 通过抓包,更改用户id、登录名或Cookie中的敏感认证字段值,即可越权访问 5. 通过已知的后门链接或代码中固化的后门管理口令,直接登录 0x01:密码猜解大部分系统登录是绕不过的,最常用的还是猜解已知用户名的密码,用合法的凭证登录系统。Web系统进行密码猜解,大部分人喜欢叫密码爆破,因为猜解一个人的密码,通常需要成千上万的密码来试。密码猜解的目的是准确、高效的获得已知用户的正确密码。1. 用来发送HTTP/S协议爆破密码的工具主要是用Burpsuite。其它的就是用一些脚本,自己造轮子或用已经写好的较为通用的脚本,如 htpwdScan 。2. 高效的保证就是猜解时使用的密码字典要适合,一般是先尝试TOP500、TOP1000、TOP10000系列的通用弱口令字典。3. 还没有成功的话,就需要自己根据目标的信息构造特定字典来爆破了。可以自己写脚本生成,但是费时费力,对于比较急的任务往往不适用。推荐下自己写的一个高级字典生成工具pydictor 可以直接配置里面的规则生成字典,也支持高级玩家写自己的密码生成插件,一劳永逸。其它的一些好的字典生成工具推荐 crunch、Cewl、Cupp。0x02:管理员猜解在不能判断系统中存在什么样的用户名时,通常先进行管理员用户名的猜解,然后再根据存在的用户名进行密码破解。我总结了一个常见系统管理和测试用户名字典AwesomeSystemTestUsername,可以做为管理员用户名的猜解使用。如果一个系统对存不存某用户名无任何有用提示,可以直接使用上面的字典,加上弱口令TOP1000,同时爆破用户名和密码,常有意外收获!0x03:普通用户猜解如果封闭系统是个多(几十或几百个)业务员系统,那么此时最好用一个普通用户名字典进行猜解。常见的有姓名拼音字典TOP500、TOP10w等。同样,如果一个系统对存不存在某用户无任何有用提示,要猜解的用户名又非常多,可以选几个弱口令如"123456","abc123","1234","1111","111111",同时爆破用户名和密码。0x04:突破加密传输的口令有些业务系统的口令传输到后端前,为了安全和老板的要求,通常是由前端js进行编码或加密后再传输的。常见的Web系统编码和加密方式有base64编码、md5加密、sha1加密、DES加密、AES加密、RSA加密。这时候,有三种爆破方法。一:用爆破工具在传输前按照标准方法加密好再传输,Burpsuite的Payload Processing可以很好的工作。二:用工具提前生成好加密好的字典,然后爆破工具直接加载字典即可。在生成加密字典方面,pydictor是不二之选。encode功能内置支持多种加密方法,并且支持自定义加密方法,直接调用js文件中的加密方法进行加密等。另外,还可以用内置工具handler,加密自己现有的字典,让字典适用本次爆破场景。当然,也可以写轮子直接调用可以解析js语法的组件并执行,例如python的execjs模块、pyv8模块等,原理和pydictor调用js文件中的加密方法相同。三:对于某些动态加密或难以还原加密算法的场合,可以用selenium+webdriver模拟浏览器操作,自动填写密码提交。具体可参考文章基于SELEINUM的口令爆破应用。0x05:突破登录IP地址限制如果对方系统设置了可以登录系统的IP地址白名单,可以尝试用下面的9个HTTP头字段,伪造下IP地址碰碰运气。运气学?天机不可泄漏。Client-Ip: 127.0.0.1 X-Client-IP: 127.0.0.1 X-Real-IP: 127.0.0.1 True-Client-IP: 127.0.0.1 ...

更多 →

URL跳转漏洞bypass小结

作者: LandGrey ●   创建时间: 2017年12月9日 21:28 ●   标签:   #渗透测试,   #网络安全,   #Web安全备忘录

下面是owasp对URL跳转漏洞,也叫开放重定向漏洞(open redirect)的一段描述:Unvalidated redirects and forwards are possible when a web application accepts untrusted input that could cause the web application to redirect the request to a URL contained within untrusted input. By modifying untrusted URL input to a malicious site, an attacker may successfully launch a phishing scam and steal ...

更多 →

巡风源码浅析之VulScan分析篇

作者: LandGrey ●   创建时间: 2017年12月8日 16:17 ●   标签:   #python,   #网络安全

巡风是一款适用于企业内网的漏洞快速应急、巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表。 开源地址: https://github.com/ysrc/xunfeng0x00: VulScan介绍查看介绍前,请先查看 巡风源码浅析之Nascan分析篇 的“0x01:分析准备”。VulScan部分的目录结构可抽象为:│ VulScan.py │ └─vuldb │ ***.py │ ***.json │ ├─nmb │ ***** ├─pyasn1 │ ***** └─smb └ *****其中主要的逻辑都在VulScan.py中,其它放置了几个外部模块nmb、pyasn1和smb;扫描插件有两种,放置在vuldb文件夹下,一是python脚本型插件,一是json文件型插件;本文主要分析VulScan.py文件并选取一个python脚本型插件、一个json文件型插件做简要说明,和Nascan相比,这部分代码少很多,逻辑也不复杂,所以会啰嗦一点,可能更适合新手学习。0x01: VulScan分析脚本开头执行了下面几行代码sys.path.append(sys.path[0] + '/vuldb')sys.path.append(sys.path[0] + "/../")from Config import ProductionConfig主要是将vuldb目录和上级目录加入系统路径中,可以直接 from Config import ProductionConfig 和导入python脚本型插件。然后进行了数据库连接和一些变量初始化工作。看一下程序入口:if __name__ == '__main__': # 插件初始化加载 init() # 将密码字典、运行线程数、超时时间、ip地址白名单从数据库中取出 PASSWORD_DIC, THREAD_COUNT, TIMEOUT, WHITE_LIST = get_config() ...

更多 →

pydictor爆破字典生成指南

作者: LandGrey ●   创建时间: 2017年11月21日 00:17 ●   标签:   #分享,   #渗透测试,   #python

0x00:简介 pydictor是一个使用python语言开发,遵循GPLv3协议的开源命令行工具,主要用来帮助安全研究人员生成称心如意的暴力破解字典。 以功能强大、简洁实用、适用场景多、自定义程度强为开发目标。 开源地址:pydictor 0x01:特点与功能今天主要是讲pydictor如何结合渗透测试过程常见的场景使用,特点与功能REAME有详细讲解,下面只梳理一下大概脉络,方便下文的理解。 特点:1. 完全使用python的原生库写成,不需要额外安装其它任何的python模块; 2. 同时支持python 2.7+ 和python 3.4+版本,可在Windows、Linux和Mac平台上运行; 3. 可自定义化程度高,留出很多可配置规则的文件; 4. 爆破必备,新老皆宜. 功能:1. 基于三大字符集(d:数字 L:小写字母 c:大写字母)的基础字典; 2. 基于自定义字符集(包括特殊字符)的字典; 3. 排列组合字典(几个字符或字符串的所有排列可能); 4. 用配置文件或者符合pydictor字典语法的字符串直接生成字典; 5. 析取网页中可能有意义的原始单词字典; 6. 基于关键词生成针对性密码字典; 7. 基于性别生成中国公民身份证后4/6/8位字典; 8. 生成一段时间内的生日字典(自定义位数); 9. 用pydictor的handler功能润色下自己的字典; 10.基于个人信息和规则生成社会工程学字典(呃,蹭下知名度,本质还是基于关键词,重在密码规则模式) 11.一系列和字典的整个生命周期有关的内置工具; 包括字典合并、合并后去重、字典去重、单词频率统计、安全擦除字典; 12.一系列和生成优化字典有关的选项; 包括自定长度范围、字典加前缀、加后缀、编码或加密字典、用1337模式、控制字典所用规则的程度、根据数字、字符和特殊字符的个数或种类的多少来筛选字典、用正则表达式来筛选字典等。0x02:使用场景早期开发是为了让功能匹配使用场合,后期开发是让具体场景拥有对应的功能。01:字典合并 字典都不是凭空捏造或生成的,一般都会参考前辈们公布的字典。所以,先收集百八十个字典,放到一个目录下,把字典合并起来吧。1. 合并目录/网站路径爆破字典 2. 合并子域名字典 3. 合并用户名字典 4. 合并弱密码字典 5. ...

更多 →

巡风源码浅析之Nascan分析篇

作者: LandGrey ●   创建时间: 2017年11月18日 19:39 ●   标签:   #python,   #网络安全

巡风是一款适用于企业内网的漏洞快速应急、巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表。 开源地址: https://github.com/ysrc/xunfeng0x00: 起因 巡风算是国内开源扫描器中的一个良心产品了,研究下里面的扫描流程和代码逻辑对以后的工作想必大有裨益。 巡风的辅助验证脚本Aider 和我写的 dnstricker 的思路很相似,代码也不复杂,不做单独分析。巡风的项目一直在更新,所以可能在代码上会有些许出入。0x01: 分析准备巡风使用python语言开发,基于Flask Web框架和Mongodb数据库。我自己按照代码位置和代码逻辑,将巡风的架构大致分为三个部分,分别是Nascan、Vulscan和Flask web实现。分析篇也大概按照这三个部分介绍。首先是先搭建起巡风,正常扫描一次,然后进入数据库,了解数据库结构。Mongodb数据库的一个特点就是键值对表示。文档(document)组成集合(collection),集合(collection)再组成数据库(db),有时在文档和集合间可能还会有子集合。粗略的表示就是document -> sub collection -> collection -> db进入数据库查看,了解大体的集合情况:> show dbs admin 0.000GB local 0.000GB xunfeng 0.001GB > use xunfeng switched to db xunfeng > show collections Config # 各种配置信息 Heartbeat # 记录程序最新心跳时间 History # 删除历史目标的记录信息 Info # 存储目标ip,名字,banner,开放端口和服务类型等信息 Plugin ...

更多 →
<