记一次钓鱼网站的代码审计

链接:https://pan.baidu.com/s/1j2AzW9_dzqDz6i91eARfEw 
提取码:8zel

seay源码审计
image-20220221163554305

daochu.php 疑似SQL注入漏洞

在seay审计后的第一条,提示sql漏洞,跟进查看源码,当检测没有传参all时,会执行sql语句且无任何过滤
image-20220221164346489
将括号进行闭合,执行语句id=1) or if(1,sleep(3),1)%23,发现进行了拦截
image-20220221165611353
明明在执行语句中没有过滤却进行了拦截,于是全文搜索了下输入内容存在危险字符,安全起见,已被本站拦截,看看是在那个地方做了过滤
image-20220221165820203
在360webscan.php中发现该语句在webscan_page方法中
image-20220221165926160
全文搜索在何处调用了该方法,发现只有webscan_StopAttack中调用
image-20220221170054842
继续搜索何处使用该方法,发现在360webscan.php下方有一条if判断语句,在判断条件中有个webscan_white方法
image-20220221170253137
跟进看一下,这里会对该方法的第一个参数和$_SERVER['SCRIPT_NAME']进行一个匹配,如果匹配成功,就会返回false,而返回false的话上边的if语句就不会执行,从而就不会执行webscan_StopAttack()方法,就不会对我们输入的内容进行检测image-20220221171550825
这里记录下$_SERVER['SCRIPT_NAME']及其他参数的一些用法
例:

http://127.0.0.1/example/index.php/dir/test
$_SERVER['PHP_SELF'] 得到:/dir/test   
//无论访问的URL地址是否有index.php,它都会自动的返回 index.php.但是如果在文件名后面再加斜线的话,就会把后面所有的内容都返回
$_SERVER['SCRIPT_NAME'] 得到:/example/index.php
//返回当前的文件名
$_SERVER['REQUEST_URI'] 得到:/example/index.php/dir/test

知道这个之后,就去查看一下if语句中调用的$webscan_white_directory变量,在webscan_Cache.php发现该变量
image-20220221172930342
变量没有任何的值且不可控,就无法绕过正则检测了,此利用点就无法使用了
此后上网搜索了一下360webscan的漏洞,发现在早期的文件里,$webscan_white_directory变量是有值的即:

//后台白名单,后台操作将不会拦截,添加"|"隔开白名单目录下面默认是网址带 admin  /dede/ 放行

$webscan_white_directory='admin|\/dede\/|\/install\/';

该语句经过$_SERVER['SCRIPT_NAME']后,会得到当前文件的路径,如果其中有admin或/dede/等字眼即会绕过正则检测,返回false,从而使webscan_StopAttack方法无法执行
知道这个后,我把$webscan_white_directory附上了如下的值
image-20220221173558391
并且在我传参的路径中本身就存在/admin,因此就实现该sql注入

http://127.0.0.2/fish/admin/daochu.php?id=1) or if(1,sleep(3),1) %23

执行后出现sleep延迟
参考文章:
360webscan防注入脚本全面绕过 | 离别歌 (leavesongs.com)

member.php 存在SQL注入

seay审计中提示pass.php可能存在sql注入
image-20220221211638072
跟进后查看,发现比何处$name处会经过daddslashes函数转义处理,绕过这个函数有四种方法:

  • SQL语句中传参无单引号闭合
  • 宽字节注入
  • 使用iconv().mb_convert_encodeing()函数导致的宽字节注入
  • 编码解码导致的URL绕过

参考:php代码审计之绕过addslashes()函数的几种情况_getcode大魔王_新浪博客 (sina.com.cn)
image-20220221212604743
很明显这四种方式都行不通,在此后方还有个$udata变量,跟进看一下,在member.php中找到,很明显将$udata的值转为我们想要的值有些难,但后边的$admin_user是完全可控的
image-20220221214507289
前边有islogin和admin_user的判断,所以传参islogin任意值,并将admin_user传参1' or if(1,sleep(3),1) #base64编码后的值,出现延时注入
image-20220221214815397

2018.php 疑似存在XFF注入

seay审计发现X-Forwarded-For漏洞
image-20220221220438161
跟进查看是定义了一个方法
image-20220221220543324
explode
仔细查看后发现该方法中用explode函数绕过了时间盲注的逗号“,“
ip2long
并且在下方有个ip2long函数,会将ipv4的地址转为整型,若我们输入的不是ip地址,例如sql语句等则会返回false

所以该利用点行不通

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值