当前位置:   article > 正文

web安全学习笔记(15)

web安全学习笔记(15)

记一下第25-26课的内容。弱口令爆破的四种模式与判断成功失败的三种方案;爆破中的验证码拦截+错误次数+IP限制+密码加密绕过 + IP获取的原理以及绕过CDN获取客户真实IP

一、弱口令的分类

1.常规弱口令:如123456,666666,888888等

2.默认弱口令:如防火墙、路由器出厂时的默认密码。

例,天融信防火墙的默认密码:

又例如,深信服防火墙默认密码Sangfor888

二、使用burp进行弱口令爆破

打开我们的靶场,找到admin登录页面后台登录

1.随便在后台输入登录信息,抓一个登录数据包,并选择“发送到Intruder”

2.通过文件加载字典,进行爆破

然后选择攻击类型为sniper,在密码处添加payload位置,设置好后,点击开始攻击:

通常而言,爆破成功所返回的“长度”字段的值要么会很大,要么会很小,会和正常返回的值不一样,不过此处登录成功和登录失败都有715的长度,这里的原因是,登录成功里面,url是非空的,登录失败里面,url是空的,然而登录成功的msg字段为“登录成功”,登录失败的msg字段为“用户名或密码错误”,正好抵消了字段长度差,因此具体情况要具体分析。

另外,我们在已知这里登录成功会出现"code":1字段的情况下,我们可以在攻击的结果页面,点击“设置”,找到“检索-提取”,选择“从相应包中获取以下项目”,点击“添加”,并拉选"1"的相应位置,点击“确认”。

然后我们回到结果页面,就会有相应的显示:

除了sniper类型的攻击外,burp共支持四种类型的攻击,如下图所示:

①Sniper,单向模式,就是我们刚才演示的,爆破用户名或密码

②Battering ram,可以同时爆破用户名和密码(或者其他多个变量),通常用于寻找用户名和密码相同的账户,这时就要将用户名的变量位置和密码的变量位置都添加payload位置

③Pitchfork,这里要导入多个字典。攻击同时遍历所有payload集,因此它使用每个集中的第一个payload,然后使用每个集中的第二个payload,依此类推。对于哪一个变量使用哪一个字典,遵循“从上至下,从左至右”的原则。而对于字典的设置,在payload->payload集中进行设置

④Clusterbomb,集束炸弹,类似于交集,取第一个字典中的第i个元素,与第二个字典的所有元素进行遍历。

然而在实际应用中,我们往往面临各种各样的问题,下面对几个常见的问题进行讲解:

三、实践中的问题

1.验证码校验无法爆破

我们打开有验证码登录的靶场:

随便输入用户名密码,输入对应的验证码,在burp中开启拦截,点击登录

如果我们不去请求验证码接口,验证码就不会改变,所以我们先把它send to Intruder,然后直接丢弃这个数据包。这时候页面会提示有未知错误:

如何验证网页是否存在验证码漏洞呢?我们可以在intruder里面,连续两次提交,如果都提示“用户名或密码错误”,说明存在验证码漏洞,如果第一次提示“用户名或密码错误”,但第二次提交就提示“验证码错误”,说明这里的验证码不能这么办他。

至此总结验证码校验的绕过思路:

①在提交信息之后是否及时销毁掉了SESSION中的验证码,如果没有销毁,那么我们就可以无限调用。

②通过验证码识别软件或者某些burp插件去绕过。

③关于点触验证码(给一张图片让你依次点击文字)和滑动验证码的知识暂时不讲。

2.密码错误次数限制

实现过程:

①使用数据库进行验证,这个就很难进行爆破

②使用SESSION,就可以删除SESSION进行爆破

3.密码进行了某种加密

例如该网站的内容,我们随便输入用户名密码然后登陆,直接在网页中找到数据包,发现用户名和密码都被加密。

下面讲述尝试查看其如何加密的三种方法

在网页中找到用户名的位置,右键检查,发现其位置,并得知其name属性为username,id属性为u01。

然后进行查找,先查找其id在网页中出现的地方,发现并没有给我们提供有用的信息:

于是我们查找username,发现有相关内容,其加密可能是在此处进行的:

  1. <!--
  2. if (document.loginForm.username.value == '') {
  3. document.loginForm.username.focus();
  4. } else {
  5. document.loginForm.password.focus();
  6. }
  7. //-->
  8. var publicKeyString = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUmOXyQmYYSnZacp0btvAZCOvCNPtzixAp7eJmzmAG4mgy/VgrY/s1BDLh9qTNHIRWXepUtwMrf1kYul/A45qE/2oxIbeeq4238YDWQ7ModOVXR9ytEHsT0jpCFvoYfYXYZnnoWRrLIBylQeXzqxbLDxxBxGCs4AjoRKh5S7nNQIDAQAB';
  9. function rsa_encrypt(data) {
  10. var encrypt = new JSEncrypt();
  11. encrypt.setPublicKey(publicKeyString);
  12. return encrypt.encrypt(data);
  13. }
  14. function submitForm() {
  15. time(document.getElementById("myform"));
  16. var theForm = document.forms[0];
  17. if (theForm.username.value != '' && theForm.password.value != '') {
  18. if(theForm.username.value == 'sysadmin') {
  19. theForm.username.value = 'admin'
  20. }
  21. theForm.password.value = rsa_encrypt(theForm.password.value);
  22. theForm.username.value = rsa_encrypt(theForm.username.value);
  23. theForm.submit();
  24. }
  25. }
  26. // 提醒后连续三次登录失败锁定账号后,出现按钮登录倒计时
  27. var wait = -2;
  28. function time(object) { //如果没有缓存或者是登录锁定前,不进行按钮禁用
  29. if (wait == 0 || (true)) {
  30. object.removeAttribute("disabled");
  31. } else {
  32. object.setAttribute("disabled", true);
  33. wait--;
  34. if (wait == 0) {
  35. object.value = "登录";
  36. } else {
  37. object.value = "请在" + wait + "秒后重新尝试";
  38. }
  39. setTimeout(function () {
  40. time(object)
  41. }, 1000);
  42. }
  43. }

通过查看代码,我们可以判断出这里使用了rsa加密,并且可以找到其公钥publicKeyString = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUmOXyQmYYSnZacp0btvAZCOvCNPtzixAp7eJmzmAG4mgy/VgrY/s1BDLh9qTNHIRWXepUtwMrf1kYul/A45qE/2oxIbeeq4238YDWQ7ModOVXR9ytEHsT0jpCFvoYfYXYZnnoWRrLIBylQeXzqxbLDxxBxGCs4AjoRKh5S7nNQIDAQAB'

这样,我们就可以通过他的代码,对我们的输入进行加密,然后放到数据包里面,实现爆破。

或者也可以在burp里面实现简单的编码,要记得将最下面的框去掉勾选,此外我们可以多次编码,只需要多次add即可:

四、PHP中获取IP的原理以及绕过CDN获取客户真实IP

  1. function getClientIP(){
  2. //getenv()函数定义:取得系统的环境变量
  3. if (getenv("HTTP_CLIENT_IP")) {
  4. $ip = getenv("HTTP_CLIENT_IP");
  5. } elseif (getenv("HTTP_X_FORWARDED_FOR")) {
  6. $ip = getenv("HTTP_X_FORWARDED_FOR");
  7. } elseif (getenv("REMOTE_ADDR")) {
  8. $ip = getenv("REMOTE_ADDR");
  9. } else {
  10. $ip = "Unknow";
  11. }
  12. if ($ip == '::1'){
  13. //本地
  14. $ip = '127.0.0.1';
  15. }
  16. return $ip;
  17. }

绕过CDN寻找网站真实IP的方法汇总_如何查找到网站真实ip-CSDN博客

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号