从无到有的一个漏洞

0x00 关于整个流程

这是一个通过扫描端口发现的一个应用。

点击登陆时,发现没有数据包来往,查看控制台发现,提示IsEmpty没有定义;

此时我内心感觉这里不出意外的话,肯定是有问题的。于是,跟进。

发现IsEmpty函数是用来校验数据是否输入的一个函数,无关紧要。

起初以为可能在某个地方没有引进,打算手动引进的,但是并没有在任何一个地方引入。

我随便定义了一个IsEmpty函数,再次点击登录时,发现出现了新的问题;跟进。

应该是对密码进行相应检测或者转换的一个函数,没有引入该函数,先忽略掉;跟进。

直接看后面的代码,使用了XMLHttpRequest的方式发送数据:

logonForm.txt_paritybit.value是图形验证码的值

logonForm.txt_user.value是用户名的值

logonForm.hid_pwd.value是密码的值

v_flag是是否记住密码的值,不记住是0,记住是1

get_XMLHttp()函数也丢了,根据后面的方法推测是XMLHttpRequest函数的一个封装。

手动设置参数,发送请求

顺利抓到数据包

而通过后面的代码也可以看到,是通过前端来刷新验证码,所以可以爆破

通过JS代码可以知道相应包返回数字4时表示校验通过,然后跳转到主页面。

尝试未授权访问,失败。

尝试爆破,失败。

添加单引号,发现有戏.....

...

探测万能密码...失败

各种探测....

直接上POC,探测所需信息。

先获取图形验证码,然后手动输入验证码的值,然后进行探测

数据库名称:

0x01 关于Payload

decode函数有很多种功能,在这里我们主要用到它可以比较字符串的功能。类似if-then语句。

DECODE(expr, search, result
             [, search, result ]...
       [, default ]
      )

DECODE函数会依次比较exprsearch的值,如果expr等于search的值,那么DECODE函数将会返回search后面对应的result的值。如果到最后也没有匹配成功,那么便会返回最后面的default

类似 C++ 里面的switch语句。

该Payload的核心思想便是,根据表达式与search的值是否匹配,来决定是否执行高耗时SQL操作。

例如:(select count(*) from all_objects),对数据库中大量数据进行查询或其他处理的操作,这样的操作会耗费较多的时间,然后通过这个方式来获取数据。这种方式也适用于其他数据库。

另一个需要注意的是:在Oracle中查询表名等这种存在多记录的结果集时,通过不断的排除前面获取的结果,来实现检索所有记录的效果。可以使用
类似where table_name <>'table_name'这样的查询来排除前面获取的结果。

0x02 参考文章

Thinking师傅的Paper:

https://www.freebuf.com/column/146464.html

Pentestmonkey的cheat sheet:

http://pentestmonkey.net/cheat-sheet/sql-injection/oracle-sql-injection-cheat-sheet

Oracle官方文档:

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm


本文由 TEag1e 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gificon_mrgreen.pngicon_neutral.pngicon_twisted.pngicon_arrow.pngicon_eek.pngicon_smile.pngicon_confused.pngicon_cool.pngicon_evil.pngicon_biggrin.pngicon_idea.pngicon_redface.pngicon_razz.pngicon_rolleyes.pngicon_wink.pngicon_cry.pngicon_surprised.pngicon_lol.pngicon_mad.pngicon_sad.pngicon_exclaim.pngicon_question.pngicon_rolleyes.gif2016gz.gif2016kun.gif2016zhem.gif2016am.gif2016kel.gificon_twisted.gif2016lh.gificon_neutral.gif2016ka.gif2016tx.gificon_evil.gif2016bb.gif2016yun.gif2016qq.gif2016baojin.gificon_confused.gif2016kk.gif2016zk.gif2016kb.gificon_mad.gif2016yhh.gificon_exclaim.gif2016xia.gif2016gg.gif2016qd.gificon_smile.gif2016lengh.gificon_biggrin.gif2016bz.gif2016wq.gificon_eek.gificon_arrow.gificon_wink.gif2016tuu.gif