freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

代码审计入门之java-sec-code(三)
aboood 2021-09-30 16:23:25 182803

1.路径遍历漏洞

1.1 存在漏洞方法

从源代码中可以看出路径参数未做任何的过滤限制,简单的判断文件是否存在或者是否为目录,读取文件内容全部内容经过base64编码返回前端,使用payload:http://localhost:8080/path_traversal/vul?filepath=d:/test.txt,D盘下的测试文件被成功读取。

1632989773_6155724d66a5ed4baf31d.png!small?1632989773792

1632989778_6155725255c86394b016d.png!small?1632989778659

1632989783_615572578c4c9e5c05f65.png!small?1632989783886

1632989798_61557266bd6203df2652b.png!small?1632989799098

1.2 安全方法

在安全方法中对文件路径参数增加了过滤方法pathFilter,如果文件路径开头为/字符或者存在..连续字符出现就返回空字符串,但是这种过滤只是简单的应对措施,如果是Windows操作系统上以盘符开始的路径,就显得无能为力。1632989819_6155727beca3700f2203f.png!small?1632989820393

1632989829_615572853472d986d374a.png!small?1632989829501

2.文件上传漏洞

2.1singleFileUpload方法(漏洞方法)

查看方法源代码,文件上传到方法中,未判断文件的类型、扩展名等信息,也未对生成文件的文件名进行重置,只是直接将文件上传到文件保存目录中,使用测试文件成功长传。

1632989846_61557296900d36925ca82.png!small?1632989847013

1632989854_6155729e86208b6bb6f15.png!small?1632989854862

2.2uploadPicture方法(安全方法)

uploadPicture方法比singleFileUpload方法在安全方面增加许多措施,设定的只能是图片类文件上传,多道过滤措施防止恶意文件上传成功,建议在实际应用中还应将上传文件的文件名重置为随机字符串。

1632989881_615572b9ca841cad8f33e.png!small?1632989882153

首先是对上传文件扩展名的白名单过滤,名单之外的扩展名上传都会失败。

1632989888_615572c09ae5a55694bef.png!small?1632989888977

其次是判断MIME类型是否是允许上传的类型,(MIME媒体类型(简称MIME类型)是描述报文实体主体内容的一些标准化名称,比如,text/html、image/jpeg)。

1632989902_615572cede819fff24fa4.png!small?1632989903282

最后是对上传图片实际内容的判断,如果图片可以正常读取,就判断其为允许上传文件,否则上传失败。

1632989911_615572d757ba44bb23165.png!small?1632989911667

3.XSS跨站脚本漏洞

3.1reflect方法(漏洞方法)

漏洞演示代码为常见的反射型xss漏洞,参数未做过滤,直接显示在前端页面。

1632989919_615572df025ad6f82cb00.png!small?1632989919326

1632989924_615572e4ee71b68104011.png!small?1632989925265

3.2store方法和show方法(漏洞方法)

两个方法演示了存储型xss漏洞的原理,store方法将未经过滤的参数直接存储于cookie中,show方法在cookie中将存储的漏洞参数直接显示在页面上。

1632989936_615572f08ab18462b12a6.png!small?1632989936867

1632989940_615572f4bde45a7bfeb3e.png!small?1632989941073

3.3safe方法(安全方法)

从代码中可以看到在漏洞方法的基础上增加了encode过滤方法,对参数中的特定字符进行html转义,可以有效地杜绝xss漏洞的产生。

1632989949_615572fdcbdb75394959e.png!small?1632989950188

4. XXE漏洞( 即MXL外部实体注入漏洞)

4.1xmlReaderVuln方法(漏洞方法)

查看源代码时可以看到XMLReaderFactory生成XMLReader解析XML文档时,未做任何安全防护措施,导致在解析XML文档导致漏洞存在,使用payload攻击目标程序,DNSLOG成功记录到解析记录。

1632989957_615573055361b38f31521.png!small?1632989957632

1632989964_6155730c1e67aa344fe02.png!small?1632989964485

1632989971_6155731318761f6099de6.png!small?1632989971456

4.2xmlReaderSec方法(安全方法)

通过设置xmlreader的setFeature方法,控制解析器的行为禁止外部引用,避免漏洞的发生。

1632989977_61557319cce33e77f0177.png!small?1632989978182

4.3DocumentBuilderVuln01方法(漏洞方法)

带回显得漏洞演示代码,使用payload可以读取到测试文件内容。

1632989987_615573233aad6c14c1cc2.png!small?1632989987651

1632989992_61557328a389cffa65a01.png!small?1632989993092

# web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 aboood 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
JAVA代码安全
aboood LV.4
这家伙太懒了,还未填写个人描述!
  • 15 文章数
  • 19 关注者
企业安全测试分享 | 如何通过python模拟前端加密登录
2023-10-27
JAVA代码审计3·某XXX博客系统
2023-10-02
JAVA代码审计2 · 某XXX网络考试系统
2023-09-18
文章目录