网站漏洞测试 基于Laravel框架的安全分析与修复

Laravel框架是目前许多网站,APP运营者都在使用的一款开发框架,正因为使用的网站较多,
 
许多攻击者都在不停的对该网站进行漏洞测试,我们SINE安全在对该套系统进行漏洞测试的
 
时候,发现存在REC漏洞.主要是XSRF漏洞,下面我们来详细的分析漏洞,以及如何利用,漏洞修
 
复等三个方面进行全面的记录.
 
 
该Laravel REC漏洞的利用是需要条件的,必须满足APP_KEY泄露的情况下才能成功的利用与
 
触发,我们SINE安全技术在整体的漏洞测试与复现过程里,共发现2个地方可以导致网站漏洞
 
的发生,第一个是Post数据包里的cookies字段,再一个是HTTP header字段可以插入恶意的共
 
计代码到网站后端中去.
 
我们来搭建一下网站漏洞测试的环境,使用linux centos系统,PHP5.5版本,数据库是mysql,
 
使用apache环境来搭建,使用的Laravel版本为5.6.28.首先我们去官方下载该版本,并解压到
 
apache设置的网站目录路径.首先我们post数据过去可以看到我们代码里,会调用十几个类,
 
并将类里的对象进行调用,参数赋值,而在cookies和verifycsrftoken值里发现可以使用
 
app_key进行漏洞利用,首先我们使用cookies来复现看下:
代码如下:
 
POST / HTTP/1.2
Host: 127.0.0.2:80
Cookie: safe_SESSION=PHPSTORM; 5LqG5L+d6K+B5omA6L6T5Ye655qE57yW56CB5L2N5Y+v6K
 
+75a2X56ym77yMQmFzZTY05Yi25a6a5LqG5LiA5Liq57yW56CB6KGo77yM5Lul5L6/6L
 
+b6KGM57uf5LiA6L2s5o2i44CC57yW56CB6KGo55qE5aSn5bCP5Li6Ml42PTY077yM6L
 
+Z5Lmf5pivQmFzZTY05ZCN56ew55qE55Sx5p2l44CCDQoNCkJhc2U2NOe8lueggeihqA==;
Content-Type: application/x-www-form-
Connection: open
Content-Length: 1
 
上面的代码中在cookies栏里.base64加密的值就是我们要伪造的攻击代码,将该POST请求提
 
交到网站中去,首先会对APP_key进行解密并赋值过去,如果解密成功的话, 哪么就会效验
 
cookies里的值,并对其进行反序列的操作,进而导致漏洞的发生,就会触发RCE漏洞了.
 
http header方式的漏洞利用,我们漏洞测试一下,首先也是构造跟cookies差不多的代码,如
 
下:
POST / HTTP/1.2
Host: 127.0.0.2:80
X-XSRF-TOKEN: +B5omA6L6T5Ye655qE57yW56CB5L2N5Y+v6K
 
+75a2X56ym77yMQmFzZTY05Yi25a6a5LqG5LiA5Liq57yW56CB6KGo77yM5Lul5L6/6L
 
+b6KGM57uf5LiA6L2s5o2i44CC57yW56CB6KGo55qE5aSn5bCP5Li6Ml42PTY077yM6L
 
+Z5Lmf5pivQmFzZTY05ZCN56ew55qE55Sx5p2l44CCDQoNCkJhc2U2NOe8lueggeihqA==;
Content-Type: application/x-www-form-
Connection: open
Content-Length: 1
这里看这个X-XSRF-TOKEN:值,Laravel 框架在提交过程中会去判断并效验这个值,如果解密
 
成功就会进行反序列化的操作,这里就不再一一的介绍与解释了.
 
那如何对Laravel的漏洞进行修复?
 
我们SINE安全技术对Laravel的版本进行升级发现,最新的5.6.30版本已经对该rce漏洞进行
 
了修复,在我们对代码的比对中看出,对cookies的解密并解析操作进行了判断,多写了
 
static::serialized() 值,同样的在X-XSRF-TOKEN里也加入了这个值.如果您对代码不是太
 
懂的话,也可以找专业的网站安全公司来进行修复,国内SINESAFE,绿盟,启明星辰,都是比较
 
不错的,针对于Laravel的网站漏洞检测与测试就到此,也希望通过这次的分享,让更多的人了
 
解网站漏洞,漏洞的产生原因,以及该如何修复漏洞,网站安全了,我们才能放开手脚去开拓市
 
场,做好营销.
 

分享: