渗透入门之WEB 表单密码破解
记得原来最早接触网络安全的时候,就是拿着小榕的朔雪去跑邮箱密码,转眼过去这么多年了,现在做渗透,跑密码,依然是渗透流程中必不可少的一部分,这次就给大家介绍介绍跑WEB 表单密码时,常见的一些工具和使用方法.
一．准备字典
公共字典
字典很重要,通常一个好字典决定了成功与否,我常用的是500 个最常见的密码
(http://www.whatsmypass.com/the-top-500-worst-passwords-of-all-time),另外还有一些网上比较好的字典
资源，列举如下:
ftp://ftp.ox.ac.uk/pub/wordlists/
http://theargon.com/achilles/wordlists/
http://www.outpost9.com/files/WordLists.html
http://packetstormsecurity.org/Crackers/wordlists/
最好在跑之前,如果WEB 表单有注册的地方,先去注册一下,了解一下密码的机制,比如人家注册的时候,密码最短需要6 位,英文+数字+特殊字符,你的字典里要是还有4 位,非英语字符的,还是就此趁早删除了吧,省的浪费时间和带宽.
1.2 自定义字典
有的时候,公共字典不能满足我们的特定需求,我们可以自己来定义字典,比如密码有可能是目标网站的域名,或者是他BLOG 里常提到的一个单词,这里推荐一个不错的工具wyd,我来简单介绍一下他的使用方法,更高级的用法可以去看它的帮助文档.
wget -r http://www.pentest.cc 先用wget 递归下载目标站所有的HTML 页面wyd.pl -n -o wordlist.txt www.pentest.cc/
然 后使用wyd 来从这些HTML 页面里剥离出字典cat wordlist.txt |sort|uniq >wordlist2.txt 去掉重复的单词,排序cat wordlist2.txt |pw-inspector -m 1 -M 20 >customlist.txt 配合pw-inspector 来过滤字典,定义单词最为1-20 位Wyd 这个程序对中文字符支持的不是很好,所以目标是英文网站的效果比较好.WINDOWS 下的用户,如果没有pw-inspector 还可以使用raptor 这个工具来代替,过滤字典.
现在还比较流行使用1337 字符来作为密码,我们可以通过linux 下sed 命令做转换,如下:
cat plain.wordlist | sed -e 's/a/4/g' -e 's/e/3/g' -e 's/i/1/g' -e 's/o/0/g' -e 's/s/5/g' -e 's/t/7/g' > l337.wordlist
这样就把字典里的字符a 替换成4,e 替换成3,i 替换成1,o 替换成0,s 替换成5,t 替换成7 了.
二．实际案例
我 这里用的工具是WINDOWS 下的GoldenEye,Windows 下的朔雪,BrutuS 这些老牌经典工具,在应对现在的WEB 表单,多多少少都有些缺陷了.所以我渐渐的也就不用了.Linux 下的hydra,medusa 在破解WEB 表单时,我个人感觉也不是很好,也许是我功力太差的原因吧:(
2.1 破解lotus 的登录表单
现在各个中小企业,用 lotus 作为企业邮箱的很多,其实lotus 的管理后台要是进去了,基本上得到这台主机的权限也就不成问题了.我们先来说说如何破解.打开GoldenEye,点击菜单上的"Crack mode"->"HTML-FORM base attack",然后在URL 里输入地址,我这里是
(http://mail.pentest.cc:8000/webadmin.nsf),输入好以后,点一下"Analyse"按钮,他会自动分析当前页面的表
单里的元素,如果没有错误,我们来定义"Keywords",keyword 的意思是当你输入的密码不正确的时候,返回的一
个单词,程序也是由此来判断密码正确与否的.lotus 的keywords 为"invalid"
接 下来,我们点"Options"选项,点侧边栏的"Proxy",这里可以定义破解的代理,这里定义代理,有2 个好处,1 是为了隐藏自己真实的iP,2 是有的渗透点,会有失败记录,一个IP 登录的失败次数过多了,就会封锁你的IP;坏处是代理多了,自然速度也就慢了.这个功能很有用的,有的时候就是因为对方有iP 记录,导致用朔雪这类不支持代理的破解软件失效.代理的寻找方法,你可以配合AccessDiver 工具的代理搜索和代理验证来使用,一般国外也有代理公布站点.我列举2 个我个人认为不错的站
http://proxies.my-proxy.com/
http://www.proxz.com/
当然对于对方没有IP 记录的,这步不做也是可以的
我们最后来导入破解字典,点击"Wordlist Options",点侧边栏的"List queue",点右侧的ADD 按钮,来加入字典.
这里的字典格式是"username:passowrd"这样的.
我们最后点击两个小电脑连接的图标,就开始破解了,破解过程可以在"Process View"看到
破解成功了的话,会在"!errors"标签里看到结果
2.2 破解最常见的WEB 登录表单
在破解开始之前,先来判断下出错信息,当我输入用户名和密码都不正确的时候,出错信息返回如下
当我输入用户名为admin,密码任意的时候,返回信息如下:
由此可以判断出当用户名和密码都不对的时候,返回"你输入的用户名和密码都不正确,请联系管理员",当输入的用户名正确的时候,返回"用户名或密码错误",我们可以根据此项,来调整我们的字典.把要跑的用户名先验证一遍,提高成功率,这部做完后,打开GoldenEye
通过以上对比,我们知道这次的keywords 就需要填写"错误提示信息"了,破解结果如下:
2.3 绕过基于隐藏字段的验证码
有的朋友会问,如果遇到WEB 表单有验证码的,怎么破解,其实有些程序写的比较不成熟,我们通过抓包分析,还是能绕过的.请看下面的例子.通过抓包可以看出,注册码字段是reothepwd,而表单有个隐藏的字段为otherpwd,如果提交的时候,这2 个字
段相等,就说明验证码正确,如果此时的用户名和密码不正确,就会返回"用户名或者用户密码错误,请重新输入"
下 面我们来配置GoldenEye,点完"Analyse"按钮后,就会把表单元素分析出来,可是这里默认的配置,我们需要改一下,才能达到我们的要求,首 先编辑otherpwd 字段,定义它的类型为"other",并且让他的值等于reotherpwd字段的值,然后修改"form action"为/atc/news/admin/login.asp
定义"keyword"为"用户名或者用户密码错误"
点2 个小电脑图标,开始破解,成功的猜出账户密码.绕过了注册码验证:)