JAVA代码渗透测试中的漏洞有哪些

1、ibatis拼凑不合理造成SQL注入

关键词:Statement

运用:ibatis有2种方式实行SQL语句,各自为PrepareStatement和Statement。2个方式的区分取决于PrepareStatement会对SQL语句开展预编译,Statement方式在每一次实行时都须要编译程序。大伙儿也许都掌握SQL注入的1个防护方式是运用预编译,但并不代表着运用PrepareStatement就一定安全,不容易造成SQL注入。

2、Mybatis架构错误操作造成SQL注入

Mybatis架构下”${freexx}”那样文件格式的基本参数会参于SQL语句的编译程序,易造成SQL注入漏洞,发生这样的事情具体分成下列3种:

1.模糊搜索like

如下列SQL查寻语句:

Select*fromarticlewherenamelike‘%${标题}%’

outputo-20211210-095843-342-hvjz.png

2.in以后的基本参数

如下列SQL查寻语句:

Select*fromnewswhereidin(${id号})

3.orderby以后

如下列SQL查寻语句:

Select*fromnewswheretitle=‘122’orderby${clock}asc

4、文本运用

4.1、文件包含

实际上不仅PHP,Java中也是存有文件包含漏洞的,JSP的文件包含分成静态数据包括和动态性包括2种。

静态数据包括:%@includefile="test1.jsp"%

动态性包括:">、

Java的文件包含只能造成文本读取和文件下载的漏洞。运用:反序列化运用通常运用在导进模版文本、通信网络、传输数据、系统日志恢复出厂设置储存、目标数据信息落硬盘、或RF储存等业务场景。因而审计环节中重点关注这种作用版块。利用找寻风险变量值明确反序列化键入点,随后再调查运用的ClassPath中是不是包括风险基本库。若包括风险库,则运用ysoserial开展攻击复现。若不包含风险库,则查询某些涉及到指令、执行命令的源代码位置,避免程序员代码不认真细致,造成漏洞。WXPayUtil下的xmlToMap方式存有rs05漏洞,运用了DocumentBuilder风险变量值,立即将传到的字符串数组变换为了更好地map集合,而且未对字符串数组开展过滤,造成网络攻击者可以传到随意的攻击源代码。

咱们写一个测试标准,读取xmlToMap方式,发觉成功读取文件内容。也许有一些朋友有疑虑,为何要嵌入2个原素,如:"&goodies;";

由于传到的xml语句的原素会被作为list的key,变量值会被当做list的object,如果是只嵌入1个原素,如:"&goodies;";变换为list后就变成了{},由于是获得子连接点传到nodeList中,上边的写法并没有子连接点,因此输入输出null。发掘CSRF漏洞,通常须要最先掌握程序的架构。

CSRF漏洞通常会在架构中存有防护方案,因此在审计时,最先要了解架构对CSRF的防护方案,若并没有防护方案,则存有CSRF漏洞;

若有防护方案,则可以最先去查询删改改要求中是不是有token、formtoken、csrf-token等关键词,若有则可以深化去细读该网站程序对CSRF的防护源代码,来辨别其是不是存有更换token数值自定值并反复要求漏洞、多次重复使用token等漏洞。除此之外还需要关心源代码是不是对要求的Referer开展校验等。


分享: