发卡网代码审计
这是前段时间写的,今天发一下记录一下吧,怕以后找不到了 2020-3-10
0x00 前言
前端时间看moonsec的直播代码审计,今天下载来复现一波。下载地址:https://www.lanzous.com/i53acdi
0x01 代码审计
丢进seay审计一下吧
挺多的,一个个看吧,先看SQL注入吧
来看一下源码
这里的outtradeon、gid、money、rel、type、number参数都是通过POST传输的,然后带入了insert into 插入数据库,除了outtradeon都有_if,然后去 if/function.php文件中看到了这个_if
可以看到这里是对一些字符进行替换来达到防御的效果,不过没过滤单引号,所以还是可以尝试一下注入,抓包试一下
需要注意的是这里上面有限制包头类型 X-Requested-With: XMLHttpRequest 如果没有页面返回不会是正常的
0x02 漏洞测试
这里是正常的包(输出sql语句是因为我在源码中echo了),我们可以丢sqlmap跑一下试一下
果不其然失败了,手工测试吧。上面说到了除了outtradeon其他都有过滤,那么这里就测试outtradeon参数吧。
单引号报错,尝试正常注入
提示ok,去数据库看一下
可以看见库名出现了,还得进数据库看有点鸡肋了,这里可以用dnslog盲注
0x03 后台搜索SQL注入
admin/search.php 这里看到POST传入了kind和value分别赋值给了type和txt,之后没做过滤便带入了sql查询。
burp抓包尝试
这里是正常返回,加个单引号,然后用seay的mysql监控看一下语句(前面也是看这个来测试,好用)
可以看到没有返回数据了,而在监控中可以看到有%,闭合一下
这里可以用盲注
0x04 反射性xss
/template/zongzi/query.php 这里可以看到在input标签中有一段PHP代码 GET获取out_trade_no并且没有过滤就输出。
0x04 总结
前面第一个SQL注入的时候测试insert into 测试了半天都不行,然后去百度了一下,才发现是用逗号隔开。。。 然后测试盲注的时候,在mysql中没问题,去注入的时候就不知道咋回事不行了,尴尬。还有直播有讲文件包含,复现失败,不知道什么原因
应该还有其他的漏洞,没审计出来。总的来说就是太菜了,果然还是得多动手去实践才知道问题所在。