突破封闭 Web 系统的技巧之正面冲锋
2023-10-21 18:04:48发布 浏览450次 信息编号:79738
友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。
突破封闭 Web 系统的技巧之正面冲锋
其他的则是使用一些脚本来创建自己的轮子或者使用已经编写的更通用的外包脚本,例如
2、高效率的保证是猜测时使用的密码字典要合适。
一般来说,首先尝试:
通用弱口令词典系列:
不必太大,合适即可。
3、如果猜测不成功,则需要根据目标信息构建有针对性的字典进行爆破。
您可以编写自己的脚本来生成它,但它既费时又费力,并且通常不适合更紧急的任务。 推荐一个我写的高级字典生成工具:
可以直接配置规则生成字典,还支持高级玩家基于API编写自己的密码生成插件,一劳永逸。
推荐一些其他好的词典生成工具:
塞尔:
库普:
0x02:管理员的猜测
当无法确定系统中存在什么样的用户名时,通常会先猜测管理员的用户名,然后根据现有的用户名来破解密码。 我总结了一个常用的系统管理和测试用户名字典rname
可用作管理员用户名的猜测。
另外,如果系统没有提示某个用户名是否存在,可以直接使用上面的字典并添加弱密码
同时爆破普通管理员和测试用户的用户名和密码,往往会得到意想不到的结果!
0x03:普通用户猜解
如果封闭系统是一个有很多(几十个或几百个)销售人员的系统,那么最好使用普通的用户名字典来猜测。 通常使用姓名拼音词典。 例如:
%E5%A7%93%E5%90%8D%E7%BB%84%E5%90%88.txt
:
如果你更高级的话,可以自己使用脚本将中文名字转换成拼音字典,这里就不赘述了。
同样,如果一个系统对于某个用户是否存在没有任何有用的提示,并且有很多用户名需要猜测,那么你只能选择几个弱密码“”、“”、“1234”、“1111”,利用用户名和密码同时使用会非常有效。
此外,多用户系统通常都会初始化默认密码,这些密码通常相对简单。 如果你能找到它,结合十万个名字拼音词典,相信你会赚很多钱的!
0x04:破解加密传输的密码
有些业务系统的密码在传输到后端之前,为了安全和老板的要求,通常会先通过前端js进行编码或者加密后再传输。 常见的Web系统编码和加密方法有编码、md5加密、sha1加密、DES加密、AES加密、RSA加密等。 这时我总结了以下三种爆破方法:
一:利用爆破工具内置功能先加密,然后按照加密方式发送数据包。
“ ”功能在这方面具有明显的优势。
二:使用字典生成工具生成加密字典,然后爆破工具直接加载字典。
当谈到生成加密字典时, 是最好的选择。
函数内置了对多种加密方式的支持,并且支持自定义加密方式、直接调用js文件中的加密方式进行加密等。此外,您还可以使用内置工具对您现有的明文字典进行加密,使字典适合这种爆破场景。
当然,你也可以自己写个轮子,直接调用执行可以解析js语法的组件,比如、pyv8模块等,原理和js文件中调用加密方法是一样的。
三:使用+模拟浏览器提交登录密码
对于某些动态加密或加密算法难以恢复的情况,可以使用+模拟浏览器操作,自动填写并提交密码。 具体实现和应用请参考文章《基于密码爆破应用》
%E5%9F%BA%E4%BA%%E7%9A%84%E5%8F%A3%E4%BB%A4%E7%88%86%E7%A0%B4%E5%BA%94%E7% 94%A8/
0x05:突破登录IP地址限制
如果对方的系统设置了可以登录系统的IP地址白名单,我会无法登录吗?
不一定,你可以尝试使用以下9个HTTP头字段来试试伪造IP地址的运气。
-IP:127.0.0.1
X--IP:127.0.0.1
X-真实IP:127.0.0.1
真实--IP:127.0.0.1
X--IP:127.0.0.1
X--对于:127.0.0.1
X--IP:127.0.0.1
X--地址:127.0.0.1
X--主机:127.0.0.1
即使是伪造的,也可以尝试将正常的IP地址部分改成SQL注入语句或者XSS语句。 该漏洞可能不会被触发,但我确实遇到了导致当前处理流程异常的异常字符。 欧洲人可以直接登录成功,这实在是难以言表。
0x06:图形验证码绕过
对于上述情况,一旦出现验证码,我们就不能愉快地破解密码了。 那么有没有办法绕过验证码并猜出密码呢?
1、图形验证码不刷新或无效。
手动尝试登录后,无论在一定时间内登录失败多少次,只要页面不刷新且未过期,就可以无限次使用同一个验证码来暴力猜测一个或多个用户账户;
登录失败后,系统会打开新页面或弹出新的警告窗口,提示用户登录失败。 点击“确定”后,用户将返回登录界面,验证码将被刷新。 这种情况下,只要我们不关闭新窗口或者弹窗,验证码就不会失效;
也有极少数情况是无论输入什么数据验证码都会通过。
2.可直接获取图形验证码值
验证码通常隐藏在网站源代码中或者请求中,或者在数据包中返回:
可以编写正则匹配的脚本并使用该函数
匹配返回数据包中的数据。
3、绕过图形验证码参数
对于请求数据:user=admin&pass=1234&vcode=brln,有两种绕过方法。 一是用空值绕过验证码,改为user=admin&pass=1234&vcode=; 另一种是直接删除验证码参数,改为user=admin&pass=1234。
另外,有时可以绕过修改或删除中的某些值,从而无需填写验证码即可登录。
4.有一个页面没有验证码
经过测试,如果我们发现网站验证码本身没有缺陷,那么我们可以尝试寻找其他一些登录页面或接口来尝试暴力破解。 如隐藏页面、测试页面、旧版本页面等。
5.通用验证码
在渗透测试的过程中,有时会出现这种情况。 系统中有通用验证码,比如0000或9999,只要输入通用验证码,就可以忽略验证码,进行暴力破解。
6、验证码数量有限
最常见于计算型验证码,如1+2=? ,这种验证码不能称为严格意义上的验证码。 如果我们多刷新几次验证码,可能会发现系统中只有几道算术题。 这种情况下,我们只需要下载所有的验证码并生成一个md5库,然后将前端生成的验证码与本地文件进行比较即可。
7.简单的验证码识别
在正常的漏洞挖掘过程中,如果我们发现登录验证码非常简单且易于识别,那么我们可以尝试使用自动化工具来破解登录,例如PKAV的HTTP、调用-ocr库等。
8、采用先进算法识别验证码
我还没有详细研究过。 主要训练针对特定网站的图形验证码的识别模型。 当达到一定的精度后,就可以调用模拟并提交图形验证码的值。 您可以参考以下三篇文章进行学习:
使用KNN算法识别验证码:
%E9%AA%8C%E8%AF%81%E7%A0%81%E7%A0%B4%E8%A7%A3%E6%8A%80%E6%9C%AF%E5%9B%9B%E9 %83%A8%E6%9B%B2%E4%B9%8B%E4%BD%BF%E7%94%A8K%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3 %95/
卷积神经网络识别验证码
%E9%AA%8C%E8%AF%81%E7%A0%81%E7%A0%B4%E8%A7%A3%E6%8A%80%E6%9C%AF%E5%9B%9B%E9 %83%A8%E6%9B%B2%E4%B9%8B%E4%BD%BF%E7%94%A8%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB %8F%E7%BD%91%E7%BB%9C/
使用训练验证码
%E4%BD%BF%E7%94%%E8%AE%AD%E7%BB%-cn%E9%AA%8C%E8%AF%81%E7%A0%81/
0x07:短信验证码绕过
对于网站需要输入手机号码、接收手机短信并验证短信验证码是否正确才能登录的系统,主要突破思路是:
1、短信验证码在生命周期内可被暴力枚举。
验证码未过期期间,可枚举纯四位数字、六位数字等所有简单短信验证码;
2、数据包中返回短信验证码
与图形验证码2相同,您可以直接获取短信验证码。
3、修改请求包参数或值进行绕过
例如有一个post数据包:==00001,其中包含:=1
具体步骤中,如果您修改了手机号码,您可以在手机上接收他人的验证码,然后使用他人的手机号码和接收到的验证码进行登录;
修改可疑参数和值来绕过它们,比如上面修改=0;
4.修改回包绕过
一个简单的例子:提交错误的短信验证码,返回的包中包含:=false。 使用“Do”函数将其改为=true,则绕过前端判断,成功进入系统。 具体要结合实际场景,灵活操作。
5.突破短信验证码接口
有些网站会留下短信验证码测试页面,如/test.html等,如果能找到并且还能正常使用,那么系统就真的可以随心所欲地进入了。 一般系统的短信验证码功能都会有一个接口平台,可以获取手机收到的所有短信。 如果找到并破解,也可以进入系统。
6.默认通用密码
为了方便测试和维护,有些系统会留下通用验证码,上线后会保留。 它可能固定在配置文件、js文件或代码中,也可能随着时间的推移而改变。 既然遇到了,就一定要珍惜。
0x08:双因素身份验证绕过
我遇到过两种主要的双因素身份验证方法:
第一种是输入正确的密码后,系统会向绑定的手机号码(通常是6位纯号码)发送一定的随机纯文本短信验证码。 验证通过后才可以登录系统。 大多数网络系统的双因素身份验证方法都属于这一类。
第二种是使用绑定的第三方软件上的实时动态码作为登录的第二凭证。比如手机令牌申请等一般都是6位纯数字,之后才能登录通过验证。
对于第一种短信验证码形式的二因素验证方式,完全可以套用0x07:短信验证码绕过中的姿势先进行绕过测试。 第二种方法比较困难,但是可以通过查找第三方软件漏洞来利用Web系统的双因素认证。 除此之外,还有三种比较常见的绕过方法:
1.暴力破解
如果Web系统没有正确实现,则可以枚举出所有6位数字,并且有机会成功登录系统。
2.密码重置成功后
当双因素认证保护的Web系统开启密码重置功能时,您可以尝试重置密码。 重置成功后一般可以直接登录系统,无需二次认证!
3、第三方Oauth认证跳过二因素验证
有很多Web系统可以通过第三方Oauth进行授权,比如账号、微博账号授权登录等,获得授权后直接跳转回Web系统自动登录,无需二次认证。
总结
封闭的网络系统使用登录凭据来保护他们脆弱的身体免受陌生人的侵害。 看上去是一个封闭的、难以理解的系统,但实际上,我仔细梳理了自己的思路,仔细耐心地右键点击网站源码的每一行,每一个js文件,嗅出每一个参数的含义。 你会有一个强烈的想法:我是网站管理员,我忘记了密码,现在我必须用我的方法进入系统!
参考文章:
登录加密算法破解秘密
登录账户密码加密后再传输爆破的思路和方法
利用漏洞绕过验证码的技巧
如何破解、拦截、绕过网站短信验证码
4--对--2--
提醒:请联系我时一定说明是从星空网上看到的!