"思考" 标签

不,怀想;是,青春

作者: LandGrey ●   创建时间: 2018年6月14日 01:37 ●   标签:   #分享,   #思考

从阶梯教室出来,突然不知道该往哪里走,看到图书馆灯火通明,就不自觉的要往图书馆的方向走,然后好像别人指引似的,浏览到一本书《本性孤独》。有趣的是作者根本一点名气也没有,而我却从中看到了自己的影子。 三毛说:”心之何如,有似万丈迷津,遥亘千里,其中并无舟子可以渡人,除了自渡,他人爱莫能助。”突然回想到那些时光,那些曾经让我想逃避,让我厌恶的时光。 初中最为致命。在学校中,我脑子里面除了学习,似乎再无其它 东西。那时的自己也最为强大,强大到可以主观上屏蔽一切影响我学习书本内容的所有东西。可以忽视教室里所有的人,想象着只有自己一个人在一个独立的空间,谁都无法影响到我。仍书、吵闹、晃来晃去的手机,在我眼中就是空气一般的存在。那时冬天早上,天还没有亮,可以看见夜空的星星。我洗头就是直接用凉的自来水冲头,出宿舍门不久,头发都冻成了冰渣,一般都是等完了冰渣,再用手直接把头上的冰渣都拨掉。出去在小摊上买点东西吃,然后趴在教室的栏杆上仰望下天空不过3秒,就回到教室中,一人边吃东西,边背书。这样的结果是,现在仍然具有早上凉水冲头的技能。那时,脑子一根筋的我错过了很多美好的事情。也是那时独特的缺憾。 如此,我梦想着逃避这种生活,当然,慢慢的,我不再如此单调的生活,只因我不想再错过些那时本应该发生的美好的事情。但是,慢慢的,再也找不回那时的感觉。自己也试图找寻过原因,但最终还是欺骗自己说,人长大了,总归是要变一些的,怎么能找回以前的感觉呢? 另我惊讶的是,我今天确实找到了,一种在不知下一步往何处去时的深沉的思考引我找到一本书,然后看到了多年前寻找的问题的答案。 本来以为这世上的人只会走两条路:一条是按照条条杠杠,别人制定的规矩,跟着大众走;一条是主观的绝对的自由 ,跟着自己的心走。可是,我突然从书中指引的回忆中看到我在初中时走的另一条道路:就只是往前走,脚踏在自己的心上,心贴地面。这就是答案,原来一直跟着自己的心走,可是心在胸膛,这个大家都认为的再正常不过的位置。心呆在胸膛久了,就浮到空中了,没有原来的生气。 一直想不通为什么总想找到那段曾让我逃避的时光,那让我怀想到难受的时光。原来,那段时光给了我人生的第三条路。现在,抛却所有的理所当然和麻木,回到路上,青春洋溢。 作于 2015-10-23

更多 →

20行与200行代码批量获得网站标题-反思平庸与技术精进

作者: LandGrey ●   创建时间: 2018年6月8日 22:43 ●   标签:   #分享,   #思考

一. 20行代码临时任务,需要自动化收集大概文本中指定的100多个域名的网站标题(title)。这种以前也做过的简单任务,自己操作起来可以说是驾轻就熟了。花个两分钟,写个脚本,大概20行代码如下:#!/usr/bin/env python# coding:utf-8#import reimport requestsheaders = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063",}def poc(url): try: req = requests.get(url, headers=headers, timeout=15) title = re.findall("<title>(.*?)</title>", req.text, re.I | re.M) if title: return url + " " + title[0] else: return False except: return False使用POC-T 框架调用以上代码,就可以批量获取网站title了。使用Python脚本+框架的方式,可以简单快速的完成任务。但是实际上,操作起来最多只能获取到大概60%左右的网站标题。剩下的怎么办?还是手工一个个打开网页看标题……二. 问题所在批量获得网站Title这个编写脚本的技术工作,自己以前在渗透测试中,也做过很多次。要是有人问我"怎么批量获取网站的标题",我心里可能会嘲笑问我的人"这么简单的事都不会"。但是到了真正我来完成批量获取网站标题的任务时,祭出的20行代码却只能获取到60%左右的网站标题,剩下的大量不能正常获取的网站标题,还得人工一个一个的去看。浪费大量的精力去做本来可以很好的利用自动化方式解决的事情,让我感到十分羞愧。20行代码存在的主要问题,其实自己也大概清楚是怎么回事:编码处理不当。因为各种环节问题,一些中文标题解码错误,不能正确获得;不少网站存在首页跳转,程序获取不到跳转地址,自然拿不到标题;各种其它细节处理与疏于考虑的问题但自己在批量获取网站标题这个工作上,平庸到可以说是"怎么批量获取网站标题"都不会的人。最终应该嘲笑的是自己长久以来对平庸技术的满足与追求更加精进技术需求的漠视。三. 200行代码知道了问题所在,我就下决心要解决长期以来的对此问题的漠视,做个会"批量获取网站标题"的人。果然,写出准确率很高的批量获取网站Title的代码,要考虑并处理很多种情况,包括:编码问题。中文、UTF-8及Unicoded等转换。全面考虑各种首页跳转的情况。网站跳转代码的正则匹配表达式的书写考虑要全面。HTTPS协议网站请求相关问题。匹配网站标题的正则表达式的正确书写。Js代码写网站标题的情况。HTML实体编码的网站标题。中间包含换行、Tab键等空白字符标题的处理。网站请求错误重试、延时、网页自动跳转、超时时间、headers等考虑。获取不到网站Title的原因要显示出来其它当然,目前代码可能还是有不完善或者考虑不到的地方,一些较少遇到的情况会人为忽略。比如有的网站首页会以JavaScript ...

更多 →

突破封闭Web系统的技巧之旁敲侧击

作者: LandGrey ●   创建时间: 2017年12月27日 22:50 ●   标签:   #分享,   #渗透测试,   #思考

前言:在互联网安全服务公司乙方工作的人或者进行SRC众测等相关渗透测试时,经常碰到客户只给一个"xxx信息管理系统"、"xxx平台"之类的一个Web登录界面的系统的链接地址,其它全凭自己造化,去找漏洞吧!我将上面讲的"需要认证后才能进入系统进行操作,但是当前没有认证凭证"的web系统统一称为"封闭的Web系统",本文认为阅读人员有一定的渗透测试经验,并将就如何突破封闭的Web系统,进行探讨。分享自己的思路与常用技巧,欢迎同道中人一起交流思路。 注:本文有一定的攻击性操作,仅为安全从业人员渗透测试思路交流,请在法律条规允许的范围内进行安全测试。一:文章脉络《突破封闭Web系统的技巧》由两篇文章组成。这是第二篇文章"旁敲侧击"。下面是本文的脉络:旁敲侧击 0x00: 扫端口扩范围 0x01: 寻找测试域名 0x02: 微信公众号与APP 0x03: 寻找蛛丝马迹 0x04: 何方CMS 0x05: 历史漏洞搜索 0x06: 大杀四方二:旁敲侧击经过我们的一阵自杀式……哦不对,字典式冲锋,发现我们将自己意淫成管理员企图从心里战胜"封闭系统"的想法失败了。进不去就是进不去啊,一个低危洞都没有,看来是这系统比较安全了。但是回头一瞟,隔壁座位上的老王喜笑颜开,3个高危已经轻松提交上去,还有2个中危都不屑一看…… 自己心里想着"我真菜",然后决定彻底放弃。直到某天,老王感觉亏欠你太多,向你娓娓道出他那天所施展的姿势……0x00:扫端口扩范围在正面冲锋失败后,我们应该暂时放弃"通过合法的凭证进入Web系统"这个想法,扩散思维,不再局限于Web系统,多关注操作系统、中间件的层面。端口扫描做为一项常用技术,可用nmap、masscan、zmap等工具进行端口探测和服务识别,不再赘述。值得注意的是:不要着急就只扫描TCP协议的端口,UDP协议的端口也不要放过。扫描到一些有趣的端口和服务,就可以尽情的去玩耍了。如果有较多有可能被拿下的服务端口开放,无形中我们直接拿下服务器的概率会大大增加。当别人还在"冲锋"时,我们可能早就通过某不知名端口部署的其它Web应用系统的中间件漏洞进入系统了~0x01:寻找测试域名有些厂商在开发其Web系统时,可能会先单独分配个测试域名来测试正在开发的系统,比如"testapi.land.com"。当系统开发完成后,厂商如愿以偿的将安全的系统部署在域名"api.land.com"上,但是确忘记关闭了"testapi.land.com"。然后,测试域名上仍然开放着N多端口,分别对应着不同版本的Web系统,俨然成为了一个天然的靶场。0x02:微信公众号与APPWeb系统进不去?去看看厂家的微信公众号吧。为了迎合客户和流量,有点规模的企业都会建立自己的微信公众号,而且安全保护的受重视程度通常远低于Web系统。Web系统可能有复杂的图片验证码,而微信公众号可能为了用户体验,并没有设置任何图形验证码;Web系统难以发现的接口可能在浏览微信公众号时的数据包中找到;同理,如果厂家的封闭Web系统是面向多业务员的,那么很可能存在某一或几款APP,存在同样的登录功能,而且也比Web系统要疏于保护。缺少验证码或可能找到一些请求接口和一些有意思的请求参数。除此之外,反编译APP获得其源码,梳理代码中所有敏感的请求接口、连接地址、关键认证逻辑,可能会有意外收获。另外,测试完安卓机上的APP后,如果APP有IOS版本,测下IOS版的APP,说不定有意外收获。0x03:寻找蛛丝马迹最好详细的记录下所有有关Web系统的相关信息。这些信息都有可能成为最后突破的方向,如服务器操作系统类型、使用的框架或组件、使用的容器、使用的CMS类型、服务器版本、开发语言、前端框架等信息。这部分的工具实在太多了,挑拣自己顺手的用就好,比如Firefox插件wapplayer、whatweb、云悉,其它不再赘述。搞不定的web系统,说不定一个Struts2 RCE、Weblogic RCE、Tomcat war包部署之类的漏洞,连服务器的权限都拿到了。另外,对于信息量极少的封闭系统,右击查看源码基本成了必须要做的事,最好把能接触到网页,全部右击查看一遍网站源码。仔细浏览一遍,看看有没有特殊的网页注释、特殊链接之类的,也许一条测试后台的ip地址链接、放置在json文件中的明文配置密码信息,就能让你进入未受保护的测试系统。最后,如果系统条件允许的话,最好用检测普通Web系统的手段对封闭的Web系统检测一遍。比如用主机漏洞扫描器Nessus、web漏洞扫描器 AWVS、Netsparker、Appscan等扫描下网站,防止遗漏重要的Web漏洞信息。0x04:何方CMS如果Web系统不是作为独苗被单独开发的话,那么很可能是由已知的CMS或框架写成的。知名的CMS在 0x03:寻找蛛丝马迹步骤就应该已经知道了。如果它是由没有开放源代码的商业化的CMS改造而成或者不知名的系统建成,我们还有以下几种方式得到它的名字或者源代码。1. 观察页面的特殊css命名规则、js方法名等资源特征,用搜索引擎搜索; 2. 将有特点的页面比如登录页面,截图后利用在线试图,比对相似的系统,或者发到某群中,问下有经验的师傅; 3. 在搜索引擎、文库、Github、百度云盘和其它代码托管、云存储平台上,搜索目标的系统类型名,如"企业印鉴管理系统",同类系统不多的话,很容易就可以搜索出来;如果开发者没有安全意识,极有可能会把源码托管或分享在任何人都可以访问到的平台上,只要不遗漏此步骤,说不定就可以拿到源码; 4. 在页面底部或者扫描到的REAMDE等文件里如果有外包公司等名称或首页,可以借此得知是哪个外包公司开发的什么系统,寻找类似的保护较脆弱的系统,拿到源码。0x05:历史漏洞搜索经过我们上面的工作,我们很可能已经得知系统的名字和版本。这时候,就可以去搜索引擎、wooyun漏洞镜像站、安全客的漏洞搜索、cvel漏洞库去搜索下CMS的历史漏洞,或者厂商以前曾暴露出来的漏洞,可能会发现许多有用的信息!有可能一个以前暴露出来的员工弱口令稍加变形或者xxxCMS 无条件getshell,封闭系统的大门就彻底向我们敞开了。0x06:大杀四方从上文所述,我们可以看出:所谓旁敲侧击的精华思想有两部分,一是规避安全措施做的很好的封闭Web系统,尝试从相关的弱点系统和人着手,间接突破封闭的Web系统;二是通过各种渠道,获得所使用系统的名字和源码,尝试使用历史漏洞或者审计源码,突破封闭的Web系统。最后,老王也缓缓说出了他快速提交漏洞的秘密:原来在N月前,老王在某次渗透测试时,就通过其它网站的wwwroot.rar备份文件。获得了和这个Web系统一样的源码,审计一波已经得到几个0day,0day才是大杀四方的利器啊!三:总结当尝试突破封闭的Web系统并且正面强攻不奏效的情况下,旁敲侧击往往具有强大的杀伤力。其中的技巧往往越猥琐、小众、另辟蹊径,效果越出彩,而且技巧也远远不止上面提到的一小部分。比如,针对性极强的邮件、网页钓鱼套出目标管理员的口令和密码;在所有思路全部中断时,去QQ群搜索下Web系统名或者机构名,编织个巧妙的不敢轻易拒绝的谎言,进去QQ群后,很可能系统源码、默认密码、测试帐号就全部都有了。

更多 →

突破封闭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 ...

更多 →

命令执行与代码执行的判断

作者: LandGrey ●   创建时间: 2017年5月18日 13:28 ●   标签:   #网络安全,   #思考

一. 判别理念 参考OWASP的 代码注入和命令注入,其中的相关解释: Code Injection differs from Command Injection in that an attacker is only limited by the functionality of the injected language itself. 可以用下面一句话判断是代码执行还是命令执行 执行效果是否受制于语言本身与其安全机制 代码执行: 1. 执行的效果完全受限于语言本身 只能执行当前语言的相关语法,不能达到执行系统命令的程度 2. 执行的效果不完全受限于语言本身 可执行当前语言的相关语法,可达到执行系统命令的程度,但可能受制于语言安全特性本身,得不到正常执行 命令执行: 1. 执行的效果不受限于语言语法本身,不受命令本身限制 不能执行当前语言的相关语法,仅能达到间接执行系统命令; 可执行当前代码语言的相关语法,可达到间接执行系统命令的程度,不会受制于语言安全特性本身。 二. 实例 1. Python反序列化漏洞 Python Pickle反序列化带来的安全问题有如下一段关于python pickle反序列化操作的示例代码: import osimport pickleclass A(object): ...

更多 →
<