【转】【JSP代码审计】某商城几处漏洞审计分析

0x00 前言

前段时间在测试某商城系统时,发现使用了某通用CMS,本着学习的态度,于是下载下来对源码进行分析。
因为自己懒得搭环境,喜欢实战环境,所以直接找官方Demo,因为漏洞提交至今未修复,为了不涉及某商城系统,故对截图进行了打码。

0x01 漏洞分析

远程代码执行

打开源码包,看到这个,struts2架构,远古时期,包都不用解,一看就知道ST2-16。
image
不搭环境,带上工具,直接官网Demo
image

任意文件上传
struts2架构,相关页面关联信息都写在了xml里面,找起来方便
我们看看上传页面的前端文件upload.jsp

文件对appType进行判断,继而进行处理,对于我们来讲,appType在这里没有实质性的作用,只是选择上传的类型目录而已。

来看下处理上传的文件,在文件FileUploadAction.class中

首先对appType和目录进行了拼接,也就是上传的路径

判断文件长度大小

然后取后缀,到这里为止,文件都没有对上传的内容进行任何判断,后缀也是一样,直接读取拼接,不做判断。

加之在文件中也未发现任何的登录权限验证,所以造成了前端无限制任意文件上传。

下面就是存储过程了,最后返回上传结果。附上传成功并getshell截图。
image
image

存储型XSS
这个系统好像通篇没有过滤XSS的脚本,不知道有没有过滤文件反正我没有看到.可以在商品收货地址或商品展示处等地方插入XSS。
因为通篇XSS,所以就挑一个来说
在jsp文件edit_SysUser.jsp中,这个是用于修改个人信息的,定位源码SysUserAction.class
下面是两个重要函数
首先edit()从jsp页面获取到登录用户的信息,对信息进行修改,save()函数接收修改的信息,对用户信息进行存储更新,在文件里面,我们没有看到任何的过滤函数存在。

省略无关代码……

}

测试结果,后台和前台
image

任意帐号密码修改

漏洞发生在appfrontactionUserManageAction.class文件中

首先在重置密码处会先进行一次帐号验证,也就是邮箱地址验证是否正确,然后会返回注册手机号码(下面会用到),代码就不贴了,这个不是重点,重点是sendEmail()这个函数。
image

首先会获取提交过来的手机号码和邮箱地址

接下来,直接设置发送邮件的帐号密码,url构造随机数ID连接。
然后就是理想的发送邮件验证重置密码连接了。

直接构造和修改邮箱,即可修改密码。
http://www.xxx.com/sendEmail.do?customer.code=135xxxxxxx6&[email protected]

0x02 最后

分析出了这几个漏洞和看了官网后,越发觉得这家公司为什么还能活着?
因为代码通用,影响旗下所有电商系统。
吐槽:一个软件卖到9000+,3年不升级。还有谁?
image

相关推荐: 利用aircrack-ng暴力破解无线网络

这个是利用aircrack-ng进行WPA2的破解,现在无线密钥机制由最老的WEP变为现在的WPA2,针对WEP只要能够拿到足够多的IVS,利用其头部相似的信息就可以还原出密码,不过针对WPA2这种方法则不行。 目前主流的破解无线网密码都是利用抓握手包来暴力破…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论