总是在过节的时候产生一些稀奇古怪的想法。
由于一个总所周知的小典故,漏洞的英文是Bug,直译过来是臭虫,那么自然找漏洞就可以理解为“抓虫”,接下来想简单谈一谈关于找漏洞(侧重Web方面但应该也适用于其他范畴)的一些想法。结合自己和前人的经验加上了解到的情况,总结出三条规律,故此称为“抓虫三定律”。
搬家
终于把域名绑到来GitHub Pages这边,也就意味着以前的WordPress站点关闭了。掰掰手指头算算,距离开设独立站点写Blog的时间马上就要满三年了,想当初觉得有自己的一个独立Blog很酷,在同学的影响下买了域名和主机空间,开始用WordPress。三年下来也只是装模作样地写了二三十篇屁话连篇的文章,再想想当初的满腔热血,似乎有点羞愧难当了。
回想起当初的折腾,现在还真是觉得好笑。挑选主机空间一定要选香港的,即便是和美国主机相比贵上不少。主要由于在学校的时间长,能正正经经用电脑写Blog的时间怎么也不会太多,那就寄希望于选个访问快点的主机,用手机来写。装WordPress的时候又折腾了一番,找了个看起来挺高端的“瀑布流”主题,那会就流行这个,有点类似现在Pinterest,完全没有考虑到这样的主题是是要靠图片来支撑才好看。于是博客一开始就是满屏文字的瀑布流模样。。。
等搭建起来能够稳定使用以后,才发现用手机写Blog的想法是多么不切实际,即使是有实体全键盘的加持,打上百儿上千个中文字还是一件很困难的事。有时候下定决心写点什么东西,仔细想想有觉得没什么好写的,即使写了出来也没什么人去看。结果就无限期地丢弃在那里,所以访问量我是从来不会去看的,反正是自己做主的博客,没人催稿,不用对谁负责,自己开心玩玩就好。
那么既然是抱着这样的想法来使用博客的,那么一百大洋一年的主机价格好像有些奢侈了,干脆就挂在GitHub Pages上面好了,不用钱还比较稳定;既然是抱着这样的想法,那么评论系统也可有可无咯;既然是抱着这样的想法,那么花哨漂亮的东西就不用费神搞太多了,看着舒服就好。
曾经看过一个观点说,大多数独立博客都撑不过半年的,开始可能两三天一篇更新,到半年以后就基本没有更新了,渐渐就荒废了。想想也是,除非是骨灰级的话唠,没有任何利益驱动下坚持写博客,一般人既没有精力,也没有题材;即使是骨灰级的话唠,半年天天对着写,有什么话都说得一干二净了吧。所以博客在我这里倒是更像一个玩具,喜欢就研究下有什么新的花样来写博客,从WordPress到Hexo,真的,可能真的只是因为我喜欢折腾而已。
GitHub 简易装逼小记
最近思维有点混乱,得强迫自己写点什么东西来理顺一下思维。自从上了大学,除了话变少了,码字好像也越来越不顺手了,经常表达不出自己的想法。这可不行,想当初老子语文考试写作文哄骗老师的能力还是有那么一点厉害的。写点什么好呢,就随便写写最近在GitHub上混的事情好了。
GitHub的大名我是早就听说过了,被誉为是广大码农的救赎,从此以敲代码为生的广大互联网工作者就走上了以代码结交损友的不归路。各大开源项目纷纷在GitHub拉起大旗,招兵买马,霸占山头,企图借助这一神奇的社区做大做强。而我对于GitHub的认识在很长一段时间仅仅停留在git clone
这一命令上,因为很多神器都是依托GitHub来发布的,更不用说各种乱七八糟的依赖包,万一系统源中没有收录,git clone
往往是值得信赖的灵丹妙药。
如果你只打算通过GitHub安装开源软件或者纯粹读读大牛们写的代码,一条git clone
加上浏览器足矣。但是,年轻人,看着有些写得那么烂的代码,你就没有一种想死磕对面程序员,通过自己动手修改代码拯救整个开源项目的冲动吗?看着有些写得这么好的代码,你就没有一种想认识对面程序员互相切磋切磋的冲动?或者是你有一个惊天动地的idea,想让世界各地的程序员来帮助你完成这个idea,把它的光辉照耀到世界的每一处角落。如果你有上述的任何症状,这时你就需要一个叫做git的东西来帮你打开新世界的大门。
Centaur
0x01 What
Centaur 是一个基于代理转发的分布式扫描系统。
0x02 Why
为什么需要这样的软件?
互联网时代,企业需要确保自己网络的安全来保障业务的正常运作。渗透测试就是其中一种通过发现漏洞来确保网络安全的测试方式,而专业完整的渗透测试对于测试人员来说往往费时费力,单一地用扫描器发现漏洞误报率高,效率低,流量大容易拖慢网络。所以一个灵活快捷的辅助型扫描系统将大大降低测试人员的工作量,提高测试的效率。
为什么采用这种架构?
之前也有写过基于scarpy的爬虫式扫描脚本,效果不是很理想,原因如下:
- 精准度。大多数情况下扫描系统都是对某一固定的目标进行检测,而基于爬虫的扫描系统发散性较强,往往几个链接就爬到了其他无关站点导致偏离目标。
- 灵活度。由于scarpy的架构,一旦开始了抓取就容易失去控制,即使通过输出看见偏移了目标站点也无法即使改变方式。另外对url的识别也不够成熟。
- 效率。其实一切问题都是效率的问题,爬虫适合大规模抓取url,但是实际可能存在漏洞的url少之又少,还要写比较精密的过滤器来去重和识别。
一般Web检测都是针对目标站点的,基于代理转发的办法就相对与通过人工控制输入流,用半自动的方法提高针对性和精确度。浏览器挂上代理,代理部分处理接收的HTTP(S)数据包转发到服务器端,服务器端通过异步的方法把扫描的任务分发到各个子节点,子节点完成任务后把结果重新传回服务端并存入数据库。在渗透测试中测试人员的经验起到决定性的作用,Centaur可以把测试人员的经验和机器扫描的速度结合起来,测试人员只需正常地浏览页面,点击可能出现漏洞的链接,后台就自动开始对链接进行检测。Centaur是希腊神话中的半人马,取其为名因为系统结合了人的智慧和机器的速度,恰是战场所向披靡的半人马。
0x03 How
上面提到系统的三个部分,接下来详细谈谈实现方式。
首先根据经验,Web安全中最容易直接获取系统权限危害系统数据的漏洞一般有三类:
1. 上传漏洞
2. SQL注入
3. 弱口令
在测试过程中寻找这三类漏洞的时间占的时间比重很大,因为一旦发现攻陷系统就是分分钟的事情了,而Centaur目前主要也是往这三个方向挖掘漏洞。
架构:
- Cilent(客户端):基于mitmproxy实现,mitmproxy所提供的libmproxy库提供灵活的方式来处理代理方式接收到的HTTP包,通过filter(过滤器)来进行去重,去掉不适用的url,去掉不相关站点链接等操作,然后通过handler把数据包按GET,POST,PATH三个分类转发到Server(服务端),其中GET对应的是SQL注入漏洞,POST对应的是POST类型的SQL注入漏洞和弱口令,PATH主要对应上传漏洞和列目录漏洞。
- Server(服务端):通过restful api的方式接收到数据包以后通过异步的方法调用celery任务分发系统,celery能自动检测在线的Worker(子节点),并把任务分发到Worker上。Server还负责把子节点的扫描结果储存到数据库里。
- Worker(子节点):对应三种不同的任务,调用不同的测试工具来检测,PATH类型对应的是dirs3arch,GET类型对应的是sqlmap,POST对应的是sqlmap和弱口令检测脚本。调用工具完成扫描后,通过sqlAlchemy用ORM方式把结果回传到服务端的数据库中。
Meile
大概从两年多前从同学那知道了美乐网之后,美乐就成了听歌的主要站点。每每打开浏览器都会不自觉的首先打开美乐,顺手点开推荐歌单。因为这里,与许多好音乐不期而遇,不巧,音乐又与当时的心情勾结在一起。与其说打开“赞过的歌单”是满满的好音乐,不如说是五味杂陈的心情记忆。
在用一样习惯了的东西的时候也许从来不问为什么,只知道它很好,却不会思考它背后的运作。网站从UI到各种设置都很人性化,光鲜的外表掩盖了免费背后的辛酸。得知网站在明天就要停止服务,心情自是沉闷。可能只是把好的东西当作理所当然,只是低估了创业的艰辛,只是天真地认为天长地久。
即使停掉服务器,音符还会在心中跳动,谢谢你,美乐。
VIM x 小红点
还要鼠标干什么![小红点](https://s-media-cache-ak0.pinimg.com/originals/cb/24/78/cb247846563e517e616e5258fb6364eb.jpg) ## 0x01 其实一眼就看出来,VIM和TrackPoint(小红点)的设计理念是相同的,目的只有一个——扔掉鼠标。 没有用上ThinkPad以前会有种感觉,同时用上VIM和小红点的时候,会不会有种重叠的感觉,好笑点说,手指会不会打架呀?该是想用hjkl光标还是用食指下意识地触碰键盘中央的小红点。好了,就我打字这会就已经有答案了,手指自然不会打架,大脑也不会反应不来,而打字这会还是用小红点比hjkl控制方向要好。毕竟,用hjkl还要去够一够左上角的esc键。 ## 0x02 记得德国有个设计大奖就叫做红点奖,于是我先入为主地认为小红点绝对是最符合这个大奖的设计。好的设计就应该这样简单实用,容易让人产生依赖感。通过减少整只手移动去操作鼠标,改为局部(手指)移动来进行操作,从而省去来回伸手移动十来厘米去够鼠标的时间。就文书工作来说,完成一篇文章的录入必定会频繁地运用鼠标,长期使用算下来省去的时间将相当可观。这就是所谓的效率上的提升。 ## 0x03 然而能达到效率上提升的工具在掌握上的曲线往往会比较陡峭。就VIM而言,刚学用那会真是手忙脚乱,分不清hjkl哪个是前后左右,简单的复制粘贴撤销之类的操作也是让人崩溃,经常因为打开了大写锁定而把辛辛苦苦录入的文章搞得乱七八糟。记得是破釜沉舟地拔掉鼠标逼自己用键盘在VIM完成一切操作,过了几天才慢慢好起来。其实小红点也是如此,刚买回来的时候要把灵敏度调好几次才慢慢熟悉那种感觉。而好多人即使在用thinkpad也从来不碰小红点,就是觉得没必要花时间去习惯一个可有可无的东西,当然也就不能理解其中的爽快。 **所以还是那句话,值得做的事情都是有门槛的,一旦越过了门槛就会感觉努力都是值得的。** 到现在,换用机械键盘时也会不自觉地想用食指触碰键盘中央找小红点。偶尔用office也会理所当然地想用hjkl来移动光标。 此谓中毒太深。