注明:代码仅限学习使用,禁止用作web攻击,一切后果由使用者自负,博主不承担法律责任。
0
弱密码攻击是我能想到的最简单的网安案例了。曾不止一次用123456(78)攻破各种网关、入口、无线接入点等等。前几天报导的2016最差密码中,没有任何争议,这个密码又一次强势登顶。
当然,在特定场合下,用123456去试密码并不可行。比如校园网网关,比如某台想进去瞅瞅的服务器,比如某个“谅你随便试也进不去”的场合。这时候,就需要按照需求进行分析了。Python在这种场合下很有用,时间紧张,需要尽快把想法变成行动,防止对方察觉;就算察觉了也要在补救措施到来前拿到想要的东西。如此而已。
以下案例亦真亦幻,就当听个乐儿了~
AB
A君想从B处拿到一些文件,但又不想留下太多痕迹,希望给B一个惊喜?A首先尝试了合理手段去获得线索。放狗一搜,的确有一堆结果;一一看过来,却发现没一个有用。甚至他天真地用关键词+download的方法去搜索,得到的无非是一堆广告链接和挂马网站而已。
A君不甘心,怎么办呢?他改变了搜索的思路,从B的文件展露出的一些端倪入手。比如奇怪的命名规则,比如特殊的排列方式,比如能看见的文本中特征词的分布。当然,这个过程很漫长,但由于A并不擅长长驱直入,只得从这些细微处下手。功夫不负有心人,终于,A找到了B某个文件的真实来源,从而找到了原作者所在的地方。
然而,原作者住在城堡里。大可以理解为找到原片的来源是getty,自己又没钱又没账号。这下没办法了吧?的确,对于A来说,要么只好腆着脸找B讨要文件,要么去找大老板卖自己时间换取想要的东西。这可不行,A暗自决定,一天时间,要么想出办法,要么干脆放弃。
A画了大半天时间重新审视了现有的资料,从蛛丝马迹中发现了一个可乘之机。在400度行的一个角落里找到了一串类似密码的东西。一个密码带出一个服务,一个服务连着一串服务。于是,A一下子看到了很多的东西。
CD
C君想登录一个网站,但没有用户名和密码。怎么办呢?他以游客身份看到了最近访问用户列表。上面有十几个用户名。没有什么方法,一个个试过去,用户名和密码填成一样。哈!居然还真有人这么设定!登上去以后,自然而然更多的信息就到手咯~
D君比C君更懂得电脑技术一些。他也想进入一个网站。不同的是,那个网站的安全性更好一些,密码输错10次就会锁定IP。D君便理所应当地想到封掉一个换一个不就完了啦。他还知道社工的强大,花费不多就能得到更加准确的数据。哈!找到一个有意思的条目……
E
E比较有才,熟知Windows、Linux、Mac、Android、IOS、WP8等系统的开关机。他能直接写出一个链接来,直捣黄龙拿到那个文件。笔者看了E的做法后大为惊叹,学着也照猫画虎干了些人畜无害的事情~
F
可得好好说说F,他是123456走天下的先驱人物,挂在嘴边上的名言:“喜欢就买,不行就分,多喝热水,重启试试”早已被奉为警句。碰巧通过123456拿到一个su后一发不可收拾,看到了许多不该看的东西。
1
说说正经事。上面都是我见过或者道听途说的事情,但自己还没有真正试过做点什么。恰巧遇到一个网关没有验证码没有相应的阻断策略,干脆用Python练练手,写个小程序试一下。
已知条件:用户名是十位数,密码是六位数,默认密码为身份证后六位
身份证
我们都知道,身份证的18位数字是很有规律的:省市年月序号性别校验。只是现在我们不需要根据已知数位求身份证,而需要枚举出所有可行的后六位数值来。
如果没有限制条件,数量也太大了。31*10000,显然不可行。最好能把字典大小控制在1E3量级,这样也方便测试。分析可知,前两位生日可以通过一些社工方法拿到,性别可以通过规律得到。这样的话,得到的条目显著减少了。
POST数据构造
直接F12看一下正常访问是怎样的……然后一条一条删掉没影响的,最后留下精简的数据即可。
生日
可惜没法直接知道一个陌生人的生日。只好拿自己的生日做实验了。
多线程
尽管Python的多线程不太有效,实际上还是单核执行,但对于IO密集型操作应该还是有些效果。我尝试了最简单的Threadding模块,运行后发现还没有顺序执行来得快呢。或许对于一些更复杂的、需要载入更多内容的访问,多线程更适合吧。
其它
测试中发现用外网IP连接不太稳定,会报errno 10060,又不愿意加sleep,干脆想了别的办法。最后大概每秒钟3-5条的频率,不算太快,折衷办法。
结果
花费不到一分钟试出了自己的密码。
2
执着的图片
其实今天本来有正事儿相干的,结果一坐在电脑前就忍不住调程序。又写了个奇怪的需求。这次的需求是图片访问基于用户session,改变了就没法访问这张图片。(其实是可以的,只不过我懒得分析POST到底是什么流程,索性用拟人的方法来强行自动化)类似的情况有动态验证码生成——如果request了图片就会刷新。
明显就是一个利用selenium进行自动化的过程,但编程中遇到了一些小问题:selenium的确能保持session的状态,但它GET图片后并没法保存。如果是人手动操作的话,此时应该是通过右键另存为或者CTRL+S,不过程序并不能轻易地做到这一点。
按键操作
走了一点小弯路,想着用浏览器的模拟按键来操作。后来发现得使用winAPI模拟按键。CTRL+S之后,弹出的保存文件框再次超出了Python的适用范围,于是上stackoverflow一搜,发现了两种及其不优雅的解决方案……(没办法,谁让这个需求本来就很别扭呢)
一种是通过Python输入前两个键,Autoit输入ENTER键来模拟;另一种是全屏截图然后根据获得的图片坐标进行裁剪……权衡了规模和实现难度后选择了第一种。
结果
得到了一堆图片
代码
1
|
|
2
|
|
|
|
The previous duoshuo comment system stopped service. Please use disqus or submit issues to comment.