区块链安全入门与实战
上QQ阅读APP看书,第一时间看更新

2.5.2 案例分析

1.XSS测试

XSS是最常见的Web漏洞之一,亦是客户端脚本安全的头号大敌,在各大漏洞提交平台也经常见到XSS的漏洞提交。XSS攻击的危害巨大且可利用处繁多,如XSS钓鱼、Cookie劫持、获取用户真实IP等。

我们在对某交易所进行测试时,发现在资产充值的付款钱包地址处可以输入任意字符,没有对输入的字符进行过滤和编码。初步测试时弹框成功,进一步写入利用XSS获取Cookie的脚本。等待一段时间后,成功获取到后台管理员Cookie,并以此成功登录后台,在后台可任意进行转账和充值操作,且存在大量用户信息。

图2.24所示为测试XSS时的截图。

图 2.24

操作成功作的弹框如图2.25所示。

图 2.25

成功获取后台管理员Cookie,如图2.26所示。

图 2.26

用管理员Cookie登录后台,如图2.27所示。

图 2.27

2.SQL注入测试

开发者和网络安全人员对SQL应该非常熟悉了,OWASP TOP 10多次把数据库相关的SQL注入攻击列在榜首,也足以看出其危害很大。SQL注入漏洞的产生原因主要是Web应用程序对用户输入的数据没有进行合法性判断,攻击者可以控制前端传入后端的参数,利用参数代入数据库查询,通过构造不同的SQL语句实现对数据库的任意操作。鉴于其危害性巨大,我们在对交易所进行测试时,对SQL注入类漏洞会进行全面、细化的排查。

我们被授权测试某交易所时,在一个提交GET请求的数据包中,发现疑似注入点。进行手工测试后,经验证发现存在延时注入,之后使用工具进一步测试,得到了数据库表、用户名、密码等数据库存储的相关信息。

图2.28所示为手工注入测试过程。

图 2.28

工具测试过程如图2.29所示。

3.代码注入测试

代码注入漏洞与SQL注入漏洞同属注入类型,其危害也相当巨大,是攻击者经常用的获取网站权限的“利器”。产生这种漏洞大多是因为部分开发人员的编程习惯并不安全,例如,经常使用一些类似于eval()、system()等的危险函数。下面用一个实例说明一下此类漏洞的危害。

图 2.29

我们在对某交易所进行测试时,发现交易所的某相关域名下报错信息提示中间件及版本为ThinkPHP 5.0.11,随即利用其已公开的一个代码执行漏洞写入shell,连接成功后拿下网站权限。

ThinkPHP支持调试模式,默认情况下是开启状态(5.0.10+版本开始,默认关闭调试模式,需要用户自己开启)。调试模式以除错方便优先,而且在出现异常时可以显示尽可能多的信息,但是如果在生产环境中依然开启了debug模式,会导致敏感信息泄露,给攻击者提供入侵辅助。所以在开发完成后,真正进行项目部署时,要修改应用配置文件(application/config.php)中的app_debug配置参数:


// 关闭调试模式
'app_debug' =>  false,

如果网站开启了debug模式,此时访问网站域名下不存在的路径就会报错,泄露敏感信息,如图2.30所示。

图 2.30

根据ThinkPHP相关版本漏洞验证漏洞是否存在,可以看到禁用方法,如图2.31所示。

图 2.31

写入木马后,连接成功,拿到网站管理员权限,如图2.32所示。

图 2.32